[Compute] Lambda 컨셉 노트
시험 빈출 Lambda 컨셉 노트
AWS Lambda for SAA-C03
One-Line Summary
Lambda는 서버를 전혀 관리하지 않고 코드(함수)만 올리면, 이벤트가 올 때마다 실행해주는 서버리스 컴퓨트다. 시험에서는 이벤트 기반 처리 / 서버 관리 제거 / 15분 실행 한계 / 콜드 스타트 해소(Provisioned Concurrency) 가 핵심이다.
Why It Exists
EC2는 요청이 없어도 서버를 켜두고 비용을 내며, OS 패치·스케일링·가용성을 사용자가 관리해야 한다. 이벤트에 잠깐 반응하는 코드에는 과하다.
Lambda는 이 문제를 해결한다.
EC2
-> 유휴에도 켜둠(비용 발생), 서버 관리 필요
Lambda
-> 이벤트가 올 때만 실행, 유휴 시 비용 0
-> 서버 프로비저닝/스케일링/패치/가용성 전부 AWS
-> 개발자는 코드만
시험 감각:
"run code in response to events, no servers to manage" = Lambda.
Abbreviations
| 약어 | 풀네임 | 의미 |
|---|---|---|
Lambda | AWS Lambda | 코드(함수)만 올리면 실행되는 서버리스 컴퓨트 |
Serverless | Serverless | 서버 프로비저닝·관리 없이 코드에만 집중하는 모델 |
Cold Start | Cold Start | 유휴 함수 첫 호출 시 실행 환경을 새로 띄우며 생기는 초기 지연 |
Provisioned Concurrency | Provisioned Concurrency | 실행 환경을 미리 예열해 콜드 스타트를 없애는 기능 |
Reserved Concurrency | Reserved Concurrency | 특정 함수에 동시 실행 한도를 예약/제한하는 기능 |
DLQ | Dead-Letter Queue | 비동기 호출이 재시도까지 실패한 이벤트를 모아두는 큐(SQS/SNS) |
동작 방식
이벤트 발생(S3 업로드, API Gateway 요청, SQS 메시지 등)
-> Lambda 함수 실행
-> 요청 수에 맞춰 자동 병렬 확장
-> 실행 시간(ms) + 호출 수에 대해서만 과금 (유휴 시 0)
| 항목 | 의미 |
|---|---|
| 모델 | 서버리스, 이벤트 기반(event-driven) |
| 관리 범위 | AWS: 서버/스케일링/가용성 전부 / 개발자: 코드만 |
| 확장 | 요청 수에 따라 자동 병렬 확장 |
| 과금 | 호출 수 + 실행 시간(메모리 설정 기준), 유휴 시 0 |
| 최대 실행 시간 | 15분 (초과 장기 작업엔 부적합) |
| 대표 트리거 | API Gateway, S3, DynamoDB Streams, SQS, EventBridge |
Cold Start(콜드 스타트)와 극복
한동안 호출이 없던 함수를 처음 부르면 실행 환경을 새로 띄우는 시간이 붙는데, 이 초기 지연이 콜드 스타트다.
유휴 함수 첫 호출 -> 실행 환경 초기화(콜드 스타트, 수백 ms~) -> 실행
자주 호출되는 함수 -> 환경 재사용(warm) -> 지연 거의 없음
| 극복 방법 | 설명 |
|---|---|
Provisioned Concurrency | 지정한 수만큼 실행 환경을 항상 예열(warm) → 콜드 스타트 제거 |
| 결과 | 지연에 민감한 API 등에서 일관된 저지연 |
시험 감각:
"Lambda 응답 지연이 가끔 튄다 / 일관된 저지연이 필요" = Provisioned Concurrency.
동시성(Concurrency) — Reserved vs Provisioned (빈출)
두 용어가 이름이 비슷해 시험에서 자주 헷갈리게 낸다. 목적이 다르다.
| 구분 | Reserved Concurrency | Provisioned Concurrency |
|---|---|---|
| 목적 | 함수별 동시 실행 수를 예약/제한 | 실행 환경을 미리 예열(콜드 스타트 제거) |
| 해결하는 문제 | 한 함수가 계정 동시성을 다 써버리는 것 방지 / 다운스트림(RDS 등) 보호 | 첫 호출 지연(콜드 스타트) |
| 과금 | 예약 자체엔 추가 비용 없음 | 예열한 만큼 상시 과금 |
| 시험 키워드 | "limit concurrency", "protect downstream DB", "reserve capacity for a function" | "consistent low latency", "avoid cold start" |
계정 전체 동시 실행 한도(기본 1,000) 를 여러 함수가 공유
-> Reserved Concurrency: 특정 함수에 한도를 떼어 보장/상한
-> 한도 초과 호출은 Throttling (429), 비동기는 재시도
Provisioned Concurrency: 지정 수만큼 항상 warm -> 콜드 스타트 없음
시험 감각:
"특정 함수의 동시 실행을 제한해 RDS 연결 폭증을 막아라" = Reserved Concurrency. "지연이 튀지 않게 항상 예열" = Provisioned Concurrency.
호출 방식과 실패 처리 (Invocation Types)
이벤트 소스에 따라 호출 방식이 다르고, 재시도·DLQ 동작도 다르다.
| 방식 | 대표 소스 | 실패 시 |
|---|---|---|
| 동기(sync) | API Gateway, ALB | 호출자에게 즉시 오류 반환 (재시도는 호출자 몫) |
| 비동기(async) | S3, SNS, EventBridge | Lambda가 자동 재시도(기본 2회) 후 실패하면 DLQ/온-실패 대상으로 |
| 폴링(poll/stream) | SQS, DynamoDB Streams, Kinesis | Lambda가 소스를 폴링해 배치로 처리, 실패 시 재처리 |
시험 감각:
"비동기 Lambda가 실패한 이벤트를 잃지 않게 하라" = DLQ (SQS/SNS) 또는 on-failure destination.
VPC 접근 (프라이빗 리소스)
Lambda는 기본적으로 VPC 밖에서 실행된다. 프라이빗 서브넷의 RDS·ElastiCache 등에 접근하려면 함수를 VPC에 연결(서브넷+보안그룹)해 ENI를 통해 통신한다.
| 상황 | 구성 |
|---|---|
| 프라이빗 RDS/ElastiCache 접근 | Lambda를 VPC에 연결(subnet + security group) |
| VPC 연결 상태에서 인터넷/S3 접근 | NAT Gateway 또는 VPC Endpoint 필요 |
시험 감각:
"Lambda가 프라이빗 서브넷의 DB에 접근해야 한다" = Lambda를 VPC에 연결.
Layers와 리소스 한도
| 항목 | 값/의미 |
|---|---|
| Lambda Layers | 공통 라이브러리/의존성을 분리해 여러 함수가 공유·재사용 |
| 배포 패키지 | zip 50MB(직접 업로드), 압축 해제 250MB / 컨테이너 이미지 10GB |
/tmp 임시 스토리지 | 기본 512MB ~ 최대 10GB |
| 메모리 | 128MB~10GB, 메모리를 늘리면 CPU도 비례해 증가(성능 튜닝 포인트) |
15분 한계
Lambda 한 번 실행은 최대 15분이다. 이보다 긴 작업은 Lambda 단독으로 안 되고, 아래로 우회한다.
| 상황 | 대안 |
|---|---|
| 여러 단계를 순서/재시도로 조율하며 장기 실행 | Step Functions로 오케스트레이션 |
| 무거운 배치/장시간 연산 | ECS/AWS Batch/EC2 |
Common Wrong Directions
| 오답 방향 | 왜 부족한가 |
|---|---|
| 15분 넘는 장기 작업을 Lambda 하나로 처리 | Lambda는 최대 15분. 장기/다단계는 Step Functions·ECS 등 |
| 콜드 스타트 지연을 메모리만 늘려 해결 | 일관된 저지연은 Provisioned Concurrency |
| 상시·고정 부하 워크로드를 전부 Lambda로 | 상시 대량 트래픽은 EC2/컨테이너가 더 경제적일 수 있음 |
| 다단계 재시도/오류 처리를 Lambda 코드 안에 다 넣음 | 오케스트레이션은 Step Functions가 정석 |
| RDS 연결 폭증을 막으려 메모리만 조절 | 함수 동시성 상한은 Reserved Concurrency (연결은 RDS Proxy도) |
| 콜드 스타트와 동시성 예약을 같은 기능으로 오해 | 예열=Provisioned, 동시성 예약/제한=Reserved |
| 프라이빗 RDS 접근을 위해 DB를 퍼블릭으로 변경 | Lambda를 VPC에 연결해 프라이빗 접근 |
| 비동기 실패 이벤트가 그냥 사라지게 둠 | DLQ/on-failure destination로 보존 |
Exam Triggers
| 문제에서 이런 표현이 나오면 | 떠올릴 것 |
|---|---|
| "run code in response to events", "no servers to manage" | Lambda |
| "event-driven", "pay only for what you use", "scale to zero" | Lambda |
| "process file on S3 upload / stream records" | Lambda (S3·DynamoDB Streams 트리거) |
| "consistent low latency / avoid cold start" | Provisioned Concurrency |
| "function runs longer than 15 minutes" | Lambda 부적합 → Step Functions / ECS |
| "limit concurrent executions", "protect downstream database" | Reserved Concurrency |
| "Lambda must access private RDS/ElastiCache" | Lambda VPC 연결 |
| "capture failed async events", "don't lose events" | DLQ / on-failure destination |
| "share common libraries across functions" | Lambda Layers |
Memory Sentence
Lambda는 코드만 올리는 서버리스·이벤트 기반 컴퓨트, 유휴 시 비용 0. 한 번 실행 최대 15분·콜드 스타트 존재. 예열은 Provisioned·동시성 예약/제한은 Reserved, 비동기 실패는 DLQ, 프라이빗 DB 접근은 VPC 연결, 15분 초과는 Step Functions.
References
댓글
아직 댓글이 없습니다.