본문으로 건너뛰기
김신건의 로그

[AWS] Lambda: 서버리스 함수, 트리거, 동시성

· 수정 · 📖 약 1분 · 491자/단어 #aws #lambda #serverless #cloud #compute
AWS Lambda, serverless function, Lambda invocation, concurrency, provisioned concurrency, Lambda layers

정의

AWS Lambda = 서버리스 함수 실행. 이벤트 트리거함수 실행 → 결과 / 비동기 처리. 서버 관리 0.

트리거 종류

flowchart LR
    HTTP[API Gateway / ALB] --> L[Lambda]
    SQS --> L
    SNS --> L
    Kinesis --> L
    DDB[DynamoDB Streams] --> L
    S3[S3 events] --> L
    EB[EventBridge] --> L
    CW[CloudWatch Events] --> L
    Cognito --> L
    LB[ALB target group] --> L
트리거모델
API Gateway / ALBsync (HTTP)
SQSasync (poll)
Kinesis / DynamoDB Streamspoll + ordered
S3 / SNS / EventBridgeevent
Cron (EventBridge Scheduler)scheduled

함수 작성

// Node.js
export const handler = async (event, context) => {
  console.log('event', event);
  return {
    statusCode: 200,
    body: JSON.stringify({ message: 'hello' }),
  };
};
# Python
def lambda_handler(event, context):
    return {
        'statusCode': 200,
        'body': json.dumps({'message': 'hello'})
    }

실행 모델

모드의미
Request-Response (sync)호출자가 응답 대기
Asyncinvoke 후 즉시 반환, 재시도 자동
Stream (Kinesis)batch 처리

Concurrency

flowchart LR
    Req[1000 동시 요청] --> L[Lambda]
    L --> I1["Instance 1<br/>(1 req 동시)"]
    L --> I2[Instance 2]
    L --> IN[Instance N]
    Note["account-wide quota: 1000 (default)<br/>증가 요청 가능"]
종류의미
Unreserved (기본)account 공통 풀
Reserved concurrency함수에 한도 / 보장 분리
Provisioned concurrency미리 워밍업 + 콜드 스타트 0

Cold Start

sequenceDiagram
    Trigger->>Lambda: invoke
    Note over Lambda: container 없음
    Lambda->>Lambda: init (시작) ~50-1000ms
    Lambda->>Lambda: handler 실행
    Lambda-->>Trigger: 응답
    Note over Lambda: ~5분 idle 후 instance 종료
Runtime평균 cold start
Node 22~150ms
Python 3.13~200ms
Go~50ms
Rust~30ms
Java500ms-2s (가장 느림)
Java + SnapStart~150ms

Cold Start 완화

  1. Provisioned Concurrency: 항상 N개 워밍업.
  2. Lambda SnapStart (Java): snapshot 으로 빠르게.
  3. smaller package (코드 / dependency).
  4. avoid VPC (옛 cold start 5초+, 현재는 빠름).
  5. 함수 분리 (큰 모놀리스 함수 회피).

Memory & CPU

Memory 늘리면 CPU 도 비례 증가. gp 결정의 단일 dial.

MemoryvCPU
128 MB0.083
1024 MB0.6
1769 MB1.0 (full vCPU)
10240 MB5.78

가격

요금 = (실행 시간 ms) × (Memory GB) × $0.0000166667
+ (실행 횟수) × $0.20/M

짧고 자주 호출되면 호출 비용, 긴 실행 이면 시간 비용. 모니터링 필요.

Layers (공유 코드)

Layers:
  - arn:aws:lambda:us-east-1:123456789012:layer:common-deps:5
  • 여러 함수가 공유.
  • 의존성 분리 → 함수 코드 작아짐.
  • 5 layer per function 한도.

Lambda 의 적합 / 부적합

적합부적합
짧은 처리 (< 15분)장시간 처리 (> 15분)
비동기 이벤트 처리지속 연결 (WebSocket idle)
API endpoint극저지연 (cold start 부담)
ETL batch큰 메모리 (10GB 초과)
스케일 spike 흡수GPU 워크로드

흔한 함정

WARNING

  1. VPC 안 Lambda 의 cold start = ENI 생성. 현대는 빠르지만 옛 사고 기억.
  2. handler 안에 DB 연결 = cold start 마다 새 연결. handler 밖 전역 으로 (warm reuse).
  3. timeout 너무 짧음 = 무거운 처리 fail. 모니터링 + 늘림.
  4. 동시성 한도 = account 한도 1000 (default). 갑작스런 spike 시 throttling.

관련 위키

이 글의 용어 (5개)
[AWS] API Gateway: REST/HTTP API 관리cloud
정의 AWS API Gateway 는 REST/HTTP/WebSocket API 를 관리하는 완전관리형 서비스. 백엔드 통합, 인증, 스로틀링, 캐싱, 로깅 제공. 두 종류 RE…
[AWS] EC2: 인스턴스 타입, AMI, EBScloud
정의 EC2 (Elastic Compute Cloud) = AWS 의 VM 서비스. instance type (CPU / RAM / NW) 결정 + AMI (OS 이미지) + E…
[AWS] EventBridge: 이벤트 버스, 스케줄러, partner sourcescloud
정의 EventBridge = AWS 의 통합 event bus. 옛 CloudWatch Events 의 후계. AWS service 이벤트 + custom 이벤트 + SaaS …
[AWS] Lambda Cold Start: 원인과 완화cloud
정의 Cold Start = Lambda 가 처음 호출 또는 idle 후 다시 호출 시 컨테이너 + 런타임 + 사용자 코드 init 의 시간. 단계 | 단계 | 시간 (Node)…
[AWS] SQS: managed queue, FIFO, DLQcloud
정의 SQS = AWS 의 완전 관리형 메시지 큐. infinite scale, no provisioning, pay-per-request. Standard vs FIFO | |…

💬 댓글

사이트 검색 / 명령어

검색

스크롤 = 확대/축소 · 드래그 = 이동 · 0 = 원래 크기 · ESC = 닫기