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 FunctionsLambda@Edge
실행 시간<1ms5~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 조건 활용