애플리케이션이 느리면 사용자는 떠납니다. AWS DVA-C02 시험은 애플리케이션을 더 빠르게 만드는 방법을 묻습니다. Lambda 최적화부터 캐싱 전략까지 핵심 주제를 살펴봅니다.
Lambda 동시성 최적화
동시성이란?
동시성은 특정 순간에 동시에 실행 중인 Lambda 함수 인스턴스의 수입니다. 100명의 사용자가 동시에 요청을 보내면, Lambda는 100개의 인스턴스를 동시에 실행합니다.
기본 한도는 리전당 1,000개입니다. 초과하면 스로틀링(429 에러)이 발생합니다. 쉽게 말하면 자리가 꽉 찬 식당이 더 이상 손님을 받을 수 없는 것과 같습니다.
두 가지 동시성 전략
예약 동시성(Reserved Concurrency): 특정 함수에 고정된 용량을 미리 할당합니다. 다른 함수들이 전체 용량을 소진해버려 중요한 함수가 실행되지 못하는 상황을 방지합니다.
프로비저닝된 동시성(Provisioned Concurrency): 실행 환경을 미리 준비해두어 콜드 스타트(처음 호출 시 추가로 걸리는 시작 시간)를 없앱니다. 추가 비용이 발생합니다.
Lambda 메모리 최적화
메모리를 늘리면 CPU와 네트워크 대역폭도 함께 증가합니다.
흥미로운 사실: 메모리를 2배로 늘리면 실행 시간이 절반으로 줄어들어 비용이 동일하거나 오히려 저렴해질 수 있습니다.
AWS Lambda Power Tuning 도구를 사용하면 여러 메모리 크기를 자동으로 테스트해 최적값을 찾아줍니다.
캐싱 전략
캐싱은 자주 사용하는 데이터를 빠른 저장소에 미리 보관해두어, 매번 느린 원본에서 가져오지 않아도 되게 하는 방법입니다. 도서관 깊숙한 곳에 있는 책보다 책상 위에 올려둔 책이 더 빨리 펼쳐지는 것과 같습니다.
| 대상 | 서비스 | 용도 | |------|--------|------| | API 응답 | CloudFront | 전 세계 엣지 서버에서 캐싱, 지연 시간 감소 | | DB 읽기 | ElastiCache (Redis) | 자주 읽는 데이터를 메모리에 캐싱 | | DynamoDB | DAX | DynamoDB 전용 캐시, 마이크로초 응답 | | API Gateway | API Gateway 캐시 | 스테이지별 응답 캐싱 |
메시징 최적화
SNS 필터 정책
각 구독자는 관련 있는 메시지만 수신합니다. 예를 들어 주문 서비스는 "type=order" 메시지만 받습니다. 불필요한 처리 비용과 부하를 줄입니다.
SQS 배치 크기
Lambda가 한 번에 가져오는 메시지 수를 설정합니다. 배치가 클수록 호출 횟수가 줄어 비용이 절감됩니다.
예: 메시지 100개, 배치 크기 10 → Lambda 10번 호출 (배치 크기 1이면 100번 호출).
병목 식별
X-Ray: 서비스 간 지연 시간을 시각화 CloudWatch Logs Insights: 느린 쿼리와 오류 패턴 분석 Lambda Insights: 메모리, 실행 시간, 콜드 스타트 모니터링
시험 핵심 정리
"Lambda 콜드 스타트 제거" -- 프로비저닝된 동시성
"Lambda 스로틀링 방지" -- 예약 동시성
"Lambda 최적 메모리 찾기" -- Lambda Power Tuning
"글로벌 API 캐싱" -- CloudFront
"DynamoDB 마이크로초 캐시" -- DAX
"조건에 맞는 메시지만 수신" -- SNS 필터 정책
"Lambda 호출 횟수 줄이기" -- SQS 배치 크기 증가
"병목 시각화" -- X-Ray 서비스 맵
메모리 증가 = CPU 증가 = 실행 시간 단축 가능