AWS Lambda: 서버리스 컴퓨팅의 강력한 도구

AWS Lambda는 서버 관리 없이 코드를 실행할 수 있는 서비스로, 다양한 장점과 유스케이스를 제공
Lambda는 온디맨드 실행과 자동 스케일링을 지원하여 효율적이고 경제적인 클라우드 컴퓨팅 환경을 제공
EC2 vs Lambda 비교
EC2
- 가상 서버
- RAM과 CPU의 한계에 의해 성능 제한
- 서버가 항상 실행 중 (Continuously running)
- 스케일링 시 서버 추가/제거 작업 필요
Lambda
- 가상 함수(Virtual Functions)로 서버 관리 필요 없음
- 짧은 실행 시간 제한
- 요청 시(On-demand) 실행
- 스케일링 자동화
AWS Lambda의 장점
1. 간단한 요금제
- 요청당 요금:
- 첫 1,000,000 요청은 무료
- 이후 $0.20/백만 요청 ($0.0000002/요청)
- 실행 시간당 요금:
- 월 400,000 GB-초 무료 (1GB RAM 기준 400,000초)
- 이후 $1.00/600,000 GB-초
- 비용 효율성 덕분에 높은 인기
2. AWS 서비스와의 통합
- AWS의 다양한 서비스와 완벽하게 통합 가능
- 여러 프로그래밍 언어 지원

3. 간편한 모니터링
- AWS CloudWatch를 통해 손쉽게 함수 상태 및 성능 모니터링
4. 리소스 확장 용이
- 함수당 최대 10GB RAM 할당 가능
- RAM 증가 시 CPU 및 네트워크 성능도 향상
Lambda 실행 및 배포 제한 사항
실행 제한
- 메모리 할당: 128MB ~ 10GB (1MB 단위)
- 최대 실행 시간: 900초(15분)
- 환경 변수 크기: 최대 4KB
- 디스크 용량: /tmp 디렉토리 기준 512MB ~ 10GB
- 동시 실행: 기본 1,000 (확장 가능)
배포 제한
- 압축된 코드 크기: 최대 50MB
- 압축 해제 후 코드 및 의존성 크기: 최대 250MB
- /tmp 디렉토리를 사용해 추가 파일 로드 가능
- 환경 변수 크기: 최대 4KB
Lambda SnapStart
- Java 11 이상에서 Lambda 성능 최대 10배 향상
- 초기화 과정을 생략하여 낮은 지연 시간으로 실행
- 새로운 버전 배포 시:
- 초기화된 함수의 메모리 및 디스크 상태 스냅샷 생성
- 스냅샷은 캐싱되어 빠른 액세스 제공
- 추가 비용 없음
엣지에서의 커스터마이징: Lambda@Edge
Edge Function
- CloudFront 분산 네트워크에 코드를 작성하여 사용자와 가까운 위치에서 실행
- 서버 관리 필요 없음, 글로벌 배포 지원
- 사용한 만큼만 요금 부과
주요 활용 사례
- 웹사이트 보안 및 개인정보 보호
- 동적 웹 애플리케이션 구현
- 검색 엔진 최적화(SEO)
- 데이터 센터 간 지능형 라우팅
- 실시간 이미지 변환
- A/B 테스트
- 사용자 인증 및 권한 부여
- 사용자 추적 및 분석
Lambda@Edge 이벤트 유형
- Viewer Request: CloudFront가 요청을 받은 후
- Origin Request: 원본 서버로 요청 전달 전
- Origin Response: 원본 서버 응답 수신 후
- Viewer Response: 사용자에게 응답 전달 전
AWS Lambda 컨테이너 사용 주의사항
Lambda에서 컨테이너를 실행하려면 반드시 Lambda Runtime API를 구현해야 합니다. 그렇지 않으면 해당 컨테이너는 ECS 또는 Fargate에서 실행하는 것이 적합합니다.
요금제 요약
- 요청당 요금
- 첫 1,000,000 요청 무료
- 이후 $0.20/백만 요청
- 실행 시간당 요금
- 월 400,000 GB-초 무료
- 이후 $1.00/600,000 GB-초
예시:
- 1GB RAM 함수: 400,000초 무료
- 128MB RAM 함수: 3,200,000초 무료

CloudFront Functions vs. Lambda@Edge: 주요 차이점 및 활용 사례
CloudFront Functions
CloudFront Functions는 빠르고 가벼운 엣지 컴퓨팅을 제공합니다. 캐시 키 조정, 요청 속성 변환 등의 작업에 최적화되어 있으며, 단순한 HTTP 요청 및 응답 처리를 위해 설계되었습니다.
주요 활용 사례
- 캐시 키 정규화
- 요청의 속성(headers, cookies, query strings, URL)을 변환하여 최적의 캐시 키 생성
- 헤더 조작
- URL 리다이렉트 및 리라이트
- 요청 인증 및 권한 부여
- 사용자 생성 토큰(예: JWT) 생성 및 검증을 통해 요청 허용/거부
Lambda@Edge
Lambda@Edge는 복잡한 작업 처리와 외부 의존성 사용이 필요한 시나리오에 적합합니다. 더 긴 실행 시간, CPU 및 메모리 조정, 네트워크 및 파일 시스템 액세스를 지원합니다.
주요 활용 사례
- 긴 실행 시간
- 외부 라이브러리 사용
- 네트워크 액세스
- 파일 시스템 및 요청 본문 액세스
- HTTP 요청의 본문(body) 또는 파일 시스템 작업 필요 시
두 서비스의 차이점 비교
| 기능 | CloudFront Functions | Lambda@Edge |
|---|
| 실행 시간 | 짧은 실행 시간 (수 밀리초 이하) | 긴 실행 시간 (여러 밀리초) |
| CPU/메모리 조정 가능 여부 | 불가능 | 가능 |
| 외부 라이브러리 사용 | 지원하지 않음 | 지원 (예: AWS SDK) |
| 네트워크 액세스 | 지원하지 않음 | 지원 |
| 파일 시스템 접근 | 지원하지 않음 | 지원 |
| 사용 사례 | 요청 속성 변환, 헤더 조작, URL 리다이렉트 | 외부 API 호출, 요청 본문(body) 처리, 복잡한 작업 |
Lambda in VPC
Lambda를 VPC에 배포하면 네트워크 접근성과 보안이 강화됩니다.
설정 방법
- VPC ID, Subnets, Security Groups를 정의해야 함
- Lambda는 서브넷에 ENI(Elastic Network Interface)를 생성

주요 특징
- Lambda 함수는 VPC 내부의 리소스(RDS, EC2 등)에 안전하게 접근 가능
- 퍼블릭 액세스가 제한된 리소스와의 통신 가능
Lambda와 RDS Proxy
Lambda가 데이터베이스에 직접 접근하면, 높은 부하에서 많은 연결이 열려 성능 문제가 발생할 수 있습니다. 이를 해결하기 위해 RDS Proxy를 사용할 수 있습니다.
RDS Proxy의 장점
- 확장성 향상
- DB 연결을 풀링 및 공유하여 연결 관리 최적화
- 가용성 향상
- 장애 조치(failover) 시간을 66% 감소시키고 연결 유지
- 보안 향상
- IAM 인증을 적용하고 자격 증명을 Secrets Manager에 저장
주의사항
- Lambda 함수는 반드시 VPC 내부에 배포되어야 함 (RDS Proxy는 퍼블릭 액세스 불가)
RDS 이벤트 알림
RDS 이벤트 알림은 데이터베이스 인스턴스와 관련된 다양한 상태 정보를 제공합니다.
주요 특징
- 이벤트 카테고리: DB Instance, DB Snapshot, DB Parameter Group, DB Security Group, RDS Proxy, Custom Engine Version
- 실시간 알림: 최대 5분 이내의 이벤트 전달
- 알림 방식:
- SNS(알림 전송)
- EventBridge(이벤트 구독)
제한 사항
- DB 데이터 자체 정보 제공 없음
- 알림은 데이터베이스 인스턴스 상태에 대한 정보만 포함
Amazon DynamoDB
DynamoDB는 완전 관리형 NoSQL 데이터베이스로, 높은 가용성과 대규모 워크로드를 지원합니다.
주요 특징
- 확장성: 수백 TB의 스토리지와 초당 수백만 요청 처리 가능
- 고성능: 단일 디지트 밀리초 응답 시간 보장
- 보안 통합: IAM 기반 인증 및 권한 관리
- 저비용: 자동 스케일링 지원 및 관리 필요 없음
- 가용성: 다중 AZ 복제를 통해 항상 사용 가능
테이블 클래스
- 표준(Standard): 일반 워크로드에 적합
- 저빈도 액세스(IA): 자주 사용되지 않는 데이터에 적합한 비용 절감 옵션
DynamoDB 기초 개념
구조 및 데이터 모델

- 테이블로 구성: Primary Key는 테이블 생성 시 정의
- 무제한 아이템(=행) 저장 가능
- 아이템 속성(Attribute): 필요에 따라 추가 가능 (null 허용)
- 아이템 최대 크기: 400KB
지원 데이터 타입
- 스칼라(Scalar):
- String, Number, Binary, Boolean, Null
- 문서(Document):
- 세트(Set):
- String Set, Number Set, Binary Set
특징
- 스키마 진화 가능: 새로운 속성 추가에 유연
- NoSQL 구조: 관계형 데이터베이스와 다르게 간단하고 빠르게 데이터 처리 가능
DynamoDB
Read/Write Capacity Modes (읽기/쓰기 용량 모드)
- Provisioned Mode (기본값)
- 초당 읽기/쓰기 처리량을 사전에 지정
- RCU(Read Capacity Unit)와 WCU(Write Capacity Unit)에 대한 요금 부과
- Auto-scaling으로 처리량 자동 조정 가능
- On-Demand Mode
- 읽기/쓰기가 워크로드에 따라 자동으로 스케일 업/다운
- 용량 계획이 필요 없음
- 비용이 더 비쌈(예측 불가능한 워크로드에 적합)
DynamoDB Accelerator (DAX)

- 완전 관리형 메모리 캐시로 DynamoDB 성능 최적화
- 캐시된 데이터에 대해 마이크로초 단위의 지연 시간 제공
- 기존 DynamoDB API와 호환, 애플리케이션 로직 수정 불필요
- 기본 TTL(Time to Live): 5분


DynamoDB Streams
- 테이블 항목 수준의 변경(create/update/delete)을 스트림으로 제공
- 주요 활용 사례:
- 실시간 이벤트 처리 (예: 사용자 환영 이메일 전송)
- 실시간 사용 분석
- 파생 테이블로 데이터 삽입
- 교차 지역 복제
- AWS Lambda 트리거 사용
- Stream 종류:
- DynamoDB Streams: 24시간 데이터 보관, 제한된 소비자 수
- Kinesis Data Streams: 1년 데이터 보관, 높은 소비자 수 처리

DynamoDB Global Tables

- 다중 지역 접근성 제공
- 활성-활성 복제: 모든 지역에서 읽기/쓰기 가능
- DynamoDB Streams 활성화 필요
Time-to-Live (TTL)
- 만료된 항목을 자동으로 삭제
- 사용 사례:
- 저장 데이터 줄이기
- 규제 준수를 위해 최신 항목만 유지
- 웹 세션 관리
Backups
- 지속적 백업(Point-in-Time Recovery, PITR):
- 최근 35일까지의 데이터를 복구
- 복구는 새 테이블을 생성
- 온디맨드 백업:
- 장기 데이터 보존
- 성능 또는 지연에 영향을 미치지 않음
- 교차 지역 복사 가능
DynamoDB와 S3 통합
- S3로 데이터 내보내기:
- PITR 활성화 필요
- DynamoDB JSON 또는 ION 형식
- S3에서 데이터 가져오기:
- CSV, DynamoDB JSON, ION 형식 지원
- 새 테이블 생성
AWS API Gateway
주요 특징
- AWS Lambda와 통합하여 인프라 관리 없이 REST API 제공
- WebSocket 프로토콜 지원
- API 버전 관리, 환경(dev/test/prod) 관리 가능
- 보안(인증 및 권한 부여) 지원:
- IAM Roles, Cognito, Custom Authorizer
- 요청 스로틀링, 캐싱, API 키 생성 지원
엔드포인트 유형
- Edge-Optimized:
- 글로벌 클라이언트 대상 (CloudFront 엣지 로케이션을 통해 라우팅)
- Regional:
- 동일 지역 클라이언트 대상
- 수동으로 CloudFront와 결합 가능
- Private:

통합 방식
- Lambda 함수:
- Lambda 함수를 호출하여 REST API 노출
- HTTP:
- AWS 서비스:
- AWS API를 공개적으로 노출 (예: Step Functions 워크플로 시작)
AWS Step Functions

주요 특징
- Lambda 함수 간의 서버리스 워크플로를 시각적으로 설계 가능
- 조건, 병렬 처리, 오류 처리 등 다양한 기능 제공
- EC2, ECS, API Gateway, SQS 등과 통합
- 사용 사례:
- 주문 처리, 데이터 처리, 웹 애플리케이션 워크플로
Amazon Cognito
주요 특징
- Cognito User Pools (CUP):
- 사용자 인증 및 관리
- 이메일/전화 인증, 비밀번호 재설정, MFA 지원
- Facebook, Google, SAML과 같은 페더레이션 ID 지원
- Cognito Identity Pools:
- AWS 리소스에 대한 직접 액세스 제공
- IAM과 통합 가능
보안 및 통합
- API Gateway 및 ALB와 통합
- 모바일, 웹 애플리케이션의 사용자 인증 제공
- “수백 명의 사용자”, “모바일 사용자”와 같은 시나리오에 적합![]
