서버리스 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 설정
  1. GET /hello 리소스 생성
  2. Lambda 함수와 통합
  3. 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 유지보수"를 동시에 달성하는 선택지