서버리스 REST API: AWS Lambda + API Gateway로 서버를 벗어라
카테고리
프로그래밍/소프트웨어 개발
서브카테고리
DevOps
대상자
백엔드 개발자, DevOps 엔지니어 (초보자~중급자)
핵심 요약
AWS Lambda
+API Gateway
로 서버 관리 없이 REST API 배포 가능$0.20/백만 요청
비용, 무제한 자동 확장, 0 유지보수- ARM64 아키텍처 사용 시 30% 저렴, 50% 빠른 Cold Start
- IAM Role, API Key, Provisioned Concurrency로 보안 및 성능 최적화
섹션별 세부 요약
1. 서버리스의 핵심 이점
- Zero Idle Costs
- 요청 발생 시만 비용 지출 (
$0.20/백만 요청
) - 전통적 서버 비용 대비 200배 저렴
- 무제한 자동 확장
- 1명 사용자 → 10만 명 사용자 대응 가능 (설정 필요 없음)
- 0 유지보수
- OS 패치, SSH,
systemd
관리 필요 없음
2. Lambda + API Gateway 구현 예시
- Lambda 핸들러 예시
```javascript
exports.handler = async (event) => {
const { name = 'Anonymous' } = event.queryStringParameters;
return {
statusCode: 200,
body: JSON.stringify({
message: Hello ${name}!
,
timestamp: new Date().toISOString()
}),
};
};
```
- CLI 명령어
```bash
aws lambda create-function --function-name HelloAPI --runtime nodejs20.x --handler handler.handler --zip-file fileb://function.zip --role arn:aws:iam::123456789012:role/lambda-role
```
- API Gateway 설정
GET /hello
리소스 생성- Lambda 함수와 통합
prod
스테이지에 배포
3. 성능 최적화 전략
- Cold Start 해결
- ARM64 아키텍처 적용 (
aws lambda update-function-configuration --architectures arm64
) - Provisioned Concurrency 사용 (추가 비용 발생)
- 보안 강화
- IAM Role 최소 권한 적용
- API Key로 비공개 엔드포인트 보호
- Usage Plan으로 요청 제한
4. 환경 설정 및 도메인 연결
- 환경 변수 설정
```bash
aws lambda update-function-configuration --function-name HelloAPI --environment "Variables={API_KEY=supersecret}"
```
- HTTPS 지원
- AWS Certificate Manager으로 무료 SSL 인증서 발급
- Route 53에서
api.yourdomain.com
도메인 매핑
5. 제한 사항 및 대안
- Cold Start
- 사용자 페이싱 API의 경우 <500ms 지연 발생
- Stateful Workloads
- Redis 필요 시 ElastiCache 사용 (Lambda 미지원)
- 장시간 작업
- 15분 Timeout 제한 시 AWS Batch 사용
결론
- ARM64 + Provisioned Concurrency 적용으로 Cold Start 최적화
- IAM Role, API Key, Usage Plan으로 보안 강화
- 10M 요청/월 기준 $1.50 비용, Enterprise API 시 $200/월
- 서버리스는 "비용 절감 + 자동 확장 + 0 유지보수"를 동시에 달성하는 선택지