안녕하세요. 보통 "웹 서버를 만든다"라고 하면 EC2를 띄우고, Linux에 접속해서, Nginx나 Tomcat을 설치하는 과정을 떠올리실 겁니다.
하지만 AWS의 서버리스(Serverless) 서비스를 활용하면, 이 모든 과정이 필요 없습니다. OS 관리, 패치, 오토스케일링 설정? 다 잊으세요. 여러분은 코드만 신경 쓰면 됩니다.
오늘은 가장 대표적인 서버리스 아키텍처인 API Gateway, Lambda, DynamoDB 조합으로 어떻게 서버 없는 백엔드가 돌아가는지 알아보겠습니다.
1. 등장인물 소개: 서버리스 3대장
이 세 가지 서비스만 알면 웬만한 REST API는 다 만들 수 있습니다.
① Amazon API Gateway (수문장)
역할: 클라이언트(웹/앱)의 요청을 제일 먼저 받는 **"접수처"**입니다.
기능: /login, /products 같은 URL 주소를 만들어주고, 들어오는 요청이 유효한지 검사(인증/인가)한 뒤 뒷단의 Lambda를 깨웁니다.
특징: 트래픽이 폭주해도 알아서 다 받아줍니다. (Throttling 기능으로 속도 조절도 가능)
② AWS Lambda (일꾼)
역할: 실제 비즈니스 로직을 처리하는 **"코드 실행 환경"**입니다.
기능: Python, Node.js, Java 등으로 짠 함수 하나를 실행합니다. "로그인 요청이네? DB에서 아이디 확인해!"라는 로직이 여기서 돌아갑니다.
특징: 요청이 들어올 때만 실행되고, 실행된 시간(ms 단위)만큼만 돈을 냅니다. 서버를 24시간 켜둘 필요가 없죠!
③ Amazon DynamoDB (창고)
역할: 데이터를 저장하는 **"NoSQL 데이터베이스"**입니다.
기능: Lambda가 가공한 데이터를 저장하거나 꺼내줍니다.
특징: 서버리스 DB라서 용량을 미리 정할 필요가 없고(On-demand 모드), 속도가 엄청나게 빠릅니다(ms 단위 응답).
2. 아키텍처 흐름도: 어떻게 동작할까?
사용자가 "회원 가입" 버튼을 눌렀을 때의 흐름을 따라가 봅시다.
Client (요청): 사용자가 앱에서 POST /signup (회원가입) 요청을 보냅니다.
API Gateway (접수): "어, 회원가입 요청이네? 담당자인 SignupFunction 람다 나와!" 하고 Lambda를 호출합니다.
Lambda (처리):
자다가 벌떡 일어나서 코드를 실행합니다.
"아이디 중복인가?" 로직을 수행하고,
비밀번호를 암호화한 뒤 DynamoDB에 저장 명령을 내립니다.
DynamoDB (저장): 데이터를 테이블에 쓱 넣고 "저장 완료!"라고 Lambda에게 알려줍니다.
응답 반환: Lambda → API Gateway → Client 순으로 "가입 성공!" 메시지가 전달됩니다.
퇴근: Lambda는 할 일을 마쳤으니 다시 잠듭니다. (이때부터 과금 0원)
3. 왜 이렇게 만들까? (장단점)
이 구조는 기존 EC2 서버 방식과 비교했을 때 명확한 장단점이 있습니다.
장점 (Pros)
비용 절감: 요청이 없을 땐 0원입니다. 트래픽이 들쭉날쭉한 서비스나 초기 스타트업에 최적입니다.
운영 해방: OS 업데이트, 보안 패치, 서버 증설 작업을 AWS가 다 해줍니다. 개발자는 코드만 짜면 됩니다.
무한 확장성: 사용자 1명이든 100만 명이든 AWS가 알아서 Lambda를 복제해서 처리해 줍니다. (오토스케일링 설정 불필요)
단점 (Cons)
Cold Start (지연 시간): Lambda가 오랫동안 요청을 안 받다가 갑자기 실행되면, "깨어나는 시간" 때문에 초기 응답이 1~2초 정도 늦을 수 있습니다. (Provisioned Concurrency로 해결 가능하지만 비용 듬)
디버깅의 어려움: 로컬 PC에서 테스트하기가 조금 까다롭고, 로그를 CloudWatch에서 일일이 찾아봐야 합니다.
실행 시간 제한: Lambda는 최대 15분까지만 돌 수 있습니다. (긴 배치 작업에는 부적합)
마치며
"인프라 관리는 AWS에게, 나는 코드에만 집중!"
이것이 서버리스의 핵심 철학입니다. 간단한 토이 프로젝트나 마이크로서비스(MSA)를 기획 중이라면, EC2 대신 이 서버리스 3대장으로 시작해 보세요.
서버가 터질까 봐 밤새 모니터를 지켜보던 날들과 작별할 수 있습니다.
