AWS 배포 — 웹서비스 만들었는데 어디에 올리지
이 토픽을 마치면
웹 앱을 배포하는 주요 방법들의 차이를 이해하고, 프로젝트 규모에 맞는 선택을 할 수 있게 됩니다.
로컬에서는 잘 되는데
localhost:3000에서 내 웹사이트가 돌아갑니다. 디자인도 괜찮고 기능도 됩니다. 이제 친구에게 보여주고 싶습니다. 그런데 localhost:3000은 내 컴퓨터에서만 접근할 수 있습니다.
다른 사람이 접속하려면 코드를 인터넷에 연결된 서버에 올려야 합니다. 이걸 **배포(Deploy)**라고 합니다. 문제는 선택지가 너무 많다는 겁니다.
가장 기본: 서버를 직접 빌리기 (EC2)
AWS EC2는 인터넷에 연결된 컴퓨터 한 대를 빌리는 겁니다. Ubuntu 서버를 하나 만들고, SSH로 접속해서 Node.js 설치하고, 코드 올리고, npm start 하면 됩니다.
ssh ubuntu@13.124.xx.xxgit clone https://github.com/me/my-app.gitcd my-appnpm installnpm start장점: 내가 서버를 완전히 통제합니다. 원하는 소프트웨어 뭐든 설치 가능합니다.
단점: 서버 관리를 전부 직접 해야 합니다. 보안 패치, HTTPS 인증서 설정, 서버가 죽으면 재시작, 트래픽 늘어나면 서버 추가. 이게 다 내 몫입니다.
소규모 프로젝트에 EC2를 쓰면 배보다 배꼽이 커집니다. 하지만 대규모 서비스나 특수한 서버 설정이 필요한 경우에는 EC2가 가장 유연합니다.
정적 사이트라면: S3 + CloudFront
React, Vue, Next.js(정적 export)처럼 빌드 결과가 HTML/CSS/JS 파일인 경우, 서버가 필요 없습니다. 파일을 저장해 두고 요청이 오면 그냥 보내주기만 하면 됩니다.
AWS S3는 파일 저장소입니다. 여기에 빌드 결과물을 올리고 웹사이트 호스팅을 켜면 끝입니다. CloudFront(CDN)를 앞에 붙이면 전 세계에서 빠르게 접속할 수 있습니다.
빌드 → S3 업로드 → CloudFront 연결 → 도메인 설정월 비용이 거의 0에 가깝습니다. 트래픽이 적은 개인 프로젝트라면 월 몇십 원 수준입니다.
서버리스: Lambda
API 서버가 필요하지만 EC2를 관리하고 싶지 않을 때 AWS Lambda를 씁니다. 함수 하나를 올려두면 요청이 올 때만 실행되고, 안 쓰면 비용이 0입니다.
exports.handler = async (event) => {
const name = event.queryStringParameters.name;
return {
statusCode: 200,
body: JSON.stringify({ message: `Hello, ${name}!` }),
};
};이 함수를 Lambda에 올리고 API Gateway를 연결하면 https://xxx.execute-api.ap-northeast-2.amazonaws.com/hello?name=world로 접속 가능합니다.
서버가 항상 켜져 있을 필요 없는 API, 이벤트 처리, 크론잡에 적합합니다. 하지만 처음 호출할 때 콜드 스타트(초기 지연)가 있어서 실시간 응답이 중요한 서비스에는 주의가 필요합니다.
더 쉬운 방법: PaaS
AWS가 강력하지만 배우는 데 시간이 많이 듭니다. IAM, VPC, 보안 그룹, 로드밸런서... 설정할 게 산더미입니다.
그래서 배포만 쉽게 해주는 서비스들이 있습니다:
Vercel — Next.js를 만든 회사. GitHub 저장소를 연결하면 push할 때마다 자동 배포됩니다. 설정이 거의 없습니다.
Netlify — 정적 사이트와 서버리스 함수에 특화. Vercel과 비슷한 경험을 제공합니다.
Railway / Render — EC2 수준의 유연성을 제공하면서 관리 부담을 줄여줍니다. Docker 기반 배포를 지원합니다.
이런 서비스들은 내부적으로 AWS, GCP 같은 클라우드를 쓰지만 복잡한 설정을 대신 처리해 줍니다. 개인 프로젝트나 스타트업 초기에는 이쪽이 현실적입니다.
어떻게 선택하나
HTML/CSS/JS만 있다 → S3, Vercel, Netlify (정적 호스팅)
Node.js API가 있다 → Vercel, Railway, Lambda
DB + 백엔드 풀스택 → Railway, Render, EC2
대규모 트래픽 + 커스텀 인프라 → EC2 + ALB + RDS (AWS 풀세트)처음이라면 Vercel이나 Railway부터 시작하고, 서비스가 커지면 AWS로 옮기는 게 일반적인 경로입니다.
핵심
배포는 코드를 인터넷에 연결된 서버에 올리는 것입니다. AWS EC2(서버 직접 관리), S3(정적 파일), Lambda(서버리스)가 기본 옵션입니다. 빠르게 시작하려면 Vercel/Railway 같은 PaaS가, 완전한 통제가 필요하면 EC2가 적합합니다.