1️. Serverless란 무엇인가
Serverless 개발자가 서버를 직접 관리하지 않고, 코드(함수)만 배포하는 새로운 애플리케이션 실행 패러다임
핵심 개념
- 서버를 프로비저닝 / 관리 / 운영하지 않음
- 개발자는 함수(Function) 만 작성
- 초기 개념: FaaS (Function as a Service)
- 현재는 함수뿐 아니라 완전관리형 서비스 전반을 포함
- 데이터베이스
- 스토리지
- 메시징
❗ Serverless = 서버가 없는 것이 아님 → 서버를 “의식하지 않아도 되는” 모델
2️. AWS에서의 Serverless 구성 요소
주요 Serverless 서비스
- AWS Lambda
- DynamoDB
- AWS Cognito
- AWS API Gateway
- Amazon S3
- SNS & SQS
- Kinesis Data Firehose
- Aurora Serverless
- Step Functions
- Fargate
대표 아키텍처 예시
Users
└─ S3 (정적 콘텐츠)
└─ API Gateway (REST API)
└─ Lambda
└─ DynamoDB
└─ Cognito (로그인)
3️. 왜 AWS Lambda인가
기존 EC2 기반
- 가상 서버
- RAM / CPU 제한
- 항상 실행
- 스케일링 시 서버 증설 필요
AWS Lambda
- 서버 없음
- 실행 시간 기반
- 요청 시 실행
- 자동 확장
4️. AWS Lambda의 장점
비용
- 요청 수 + 실행 시간 기반 과금
- 프리 티어
- 월 1,000,000 요청
- 400,000 GB-seconds
기술적 장점
- AWS 서비스와 강력한 통합
- 다양한 언어 지원
- CloudWatch 모니터링
- 최대 10GB RAM
- RAM 증가 = CPU + 네트워크 성능 증가
5️. AWS Lambda 언어 지원
기본 런타임
- Node.js
- Python
- Java
- C# (.NET)
- PowerShell
- Ruby
기타
- Custom Runtime API (Rust, Go 등 커뮤니티)
- Lambda Container Image
- Lambda Runtime API 필수
- 일반 Docker 이미지는 ECS/Fargate 권장
6️. AWS Lambda 주요 연동 서비스
핵심 통합 대상
- API Gateway
- Kinesis
- DynamoDB
- S3
- CloudFront
- CloudWatch Logs
- EventBridge
- SNS
- SQS
- Cognito
7️. Serverless 예제 – 썸네일 생성
흐름
S3 (이미지 업로드)
└─ Lambda (썸네일 생성)
├─ S3 (썸네일 저장)
└─ DynamoDB (메타데이터 저장)
- 이미지 이름
- 이미지 크기
- 생성 시각 등
8️. Serverless 예제 – CRON 작업
구조
EventBridge (매 1시간)
└─ Lambda
└─ 작업 수행
9️. AWS Lambda 과금 예시
요청 과금
- 최초 1,000,000 요청 무료
- 이후 $0.20 / 1M 요청
실행 시간 과금
- 400,000 GB-seconds 무료
- 초과 시 $1 / 600,000 GB-seconds
- 실행 단위: 1ms
10. AWS Lambda 주요 제한 사항 (리전 기준)
실행 관련
- 메모리: 128MB ~ 10GB
- 최대 실행 시간: 900초 (15분)
- /tmp 디스크: 512MB ~ 10GB
- 동시 실행 수: 기본 1000
배포 관련
- Zip 압축: 50MB
- 압축 해제 후: 250MB
- 환경 변수: 4KB
1️1. Lambda 동시성(Concurrency) & Throttling
기본 개념
- 최대 동시 실행: 1000
- 초과 시 Throttle 발생
동작 방식
- 동기 호출 → 429 오류
- 비동기 호출 → 재시도 후 DLQ 이동
1️2. 동시성 이슈 예시
문제 상황
많은 사용자
└─ API Gateway / ALB
└─ Lambda (1000 초과)
└─ Throttle
➡ 일부 사용자 요청 차단
1️3. 비동기 호출과 재시도
특징
- 동시성 부족 시 Throttle
- 재시도 최대 6시간
- 지수 백오프 (1초 → 최대 5분)
1️4. Cold Start & Provisioned Concurrency
Cold Start
- 새 인스턴스 생성 시 초기화 지연
- 첫 요청만 지연 발생
Provisioned Concurrency
- 미리 인스턴스 준비
- Cold Start 제거
- Application Auto Scaling으로 관리 가능
1️5. Reserved vs Provisioned Concurrency
- Reserved Concurrency
- 함수 최대 동시 실행 수 제한
- Provisioned Concurrency
- 항상 준비된 실행 환경
➡ 함께 사용 가능
1️6. Lambda SnapStart
개념
- Java / Python / .NET 지원
- 초기화된 상태를 스냅샷
- 최대 10배 성능 향상
- 추가 비용 없음
1️7. Edge에서의 커스터마이징
Edge Function CloudFront에 연결되어 사용자와 가까운 위치에서 실행
특징
- 서버 관리 없음
- 글로벌 배포
- 사용량 기반 과금
1️8. Edge 함수 사용 사례
- 보안 / 프라이버시
- SEO
- 라우팅
- Bot 차단
- 이미지 실시간 변환
- A/B 테스트
- 인증 / 권한
- 사용자 분석
1️9. CloudFront Functions
특징
- JavaScript
- Sub-ms 실행
- 수백만 rps
- Viewer Request / Response 단계
용도
- 헤더 조작
- URL 리라이트
- 캐시 키 최적화
- 간단한 인증
2️0. Lambda@Edge
특징
- Node.js / Python
- 수천 rps
- Viewer / Origin Request·Response
- 네트워크 접근 가능
- 파일 시스템 접근 가능
2️1. CloudFront Functions vs Lambda@Edge
| 항목 | CloudFront Functions | Lambda@Edge |
|---|---|---|
| 실행 시간 | <1ms | 5~10초 |
| 메모리 | 2MB | 최대 10GB |
| 네트워크 | ❌ | ⭕ |
| 비용 | 매우 저렴 | 상대적 고가 |
2️2. Lambda 기본 VPC 동작
- 기본적으로 AWS 관리 VPC에서 실행
- 사용자의 VPC 리소스 접근 ❌
- RDS
- ElastiCache
- 내부 ELB
2️3. Lambda를 VPC에 배포
필요 설정
- VPC ID
- Subnet
- Security Group
동작
- ENI 생성
- VPC 내부 리소스 접근 가능
2️4. Lambda + RDS Proxy
문제
- Lambda → DB 직접 연결 시 커넥션 폭증
해결
- RDS Proxy
- 커넥션 풀링
- 장애 시 복구 시간 66% 감소
- IAM 인증 + Secrets Manager
2️5. DB에서 Lambda 호출
지원
- RDS PostgreSQL
- Aurora MySQL
활용
INSERT 발생
└─ Lambda 호출
└─ 이메일 발송 (SES)
2️6. RDS Event Notifications
특징
- DB 인스턴스 상태 이벤트
- 데이터 변경 ❌
- SNS / EventBridge 연동
2️7. Amazon DynamoDB 개요
특징
- 완전관리형 NoSQL
- 멀티 AZ 복제
- 단일 ms 성능
- IAM 기반 보안
- 자동 확장
- Standard / IA 테이블 클래스
2️8. DynamoDB 기본 구조
- Table
- Primary Key
- Partition Key
- Sort Key (옵션)
- Item 최대 크기: 400KB
- 스키마 유연
2️9. DynamoDB 용량 모드
Provisioned
- RCU / WCU 사전 지정
- Auto Scaling 가능
On-Demand
- 자동 확장
- 사용량 기반 과금
- 예측 불가능한 트래픽에 적합
3️0. DynamoDB DAX
특징
- In-memory 캐시
- 마이크로초 단위 응답
- API 수정 불필요
- 기본 TTL 5분
3️1. DynamoDB Streams
개념
- 테이블 변경 로그 스트림
- Lambda 트리거 가능
비교
- DynamoDB Streams: 24시간
- Kinesis Streams: 최대 1년
3️2. DynamoDB Global Tables
- 멀티 리전 Active-Active
- 양방향 복제
- Streams 필수
3️3. DynamoDB TTL
- 만료 시 자동 삭제
- 세션 관리, 비용 절감에 유용
3️4. DynamoDB 백업
- PITR: 최대 35일
- On-demand 백업
- AWS Backup 연동
3️5. DynamoDB ↔ S3 연동
Export
- S3로 스냅샷
- 분석 / 감사 목적
Import
- CSV / JSON / ION
- 새 테이블 생성
3️6. Serverless API 예제
Client
└─ API Gateway
└─ Lambda
└─ DynamoDB
3️7. AWS API Gateway 주요 기능
- REST / WebSocket
- 인증 / 인가
- Rate limit
- API 키
- 캐싱
- OpenAPI 지원
3️8. API Gateway 통합 유형
- Lambda
- HTTP Backend
- AWS Service (SQS, Step Functions 등)
3️9. API Gateway Endpoint 타입
- Edge-Optimized
- Regional
- Private (VPC Endpoint)
4️0. API Gateway 보안
- IAM
- Cognito
- Custom Authorizer
- Custom Domain + ACM
- Route 53 연동
4️1. AWS Step Functions
특징
- 시각적 워크플로우
- 순차 / 병렬 / 조건 / 예외 처리
- Lambda, ECS, EC2, On-Prem 연동
- 인간 승인 단계 가능
42. Amazon Cognito 개요
User Pools
- 사용자 인증
- 로그인 / MFA / 소셜 로그인
Identity Pools
- 임시 AWS 자격증명 발급
- S3 / DynamoDB 직접 접근
4️3. Cognito User Pools 연동
- API Gateway
- ALB
- 토큰 기반 인증
4️4. Cognito Identity Pools
특징
- 인증 사용자 / 비인증 사용자
- 사용자별 IAM 정책 적용
- Row-level Security 가능
4️5. Cognito Row Level Security (DynamoDB)
- 사용자 ID 기반 접근 제한
- LeadingKeys 조건 활용