AWS DVA-C02 #44 Lambda 공유 라이브러리
AWS DVA-C02 #44 Lambda 공유 라이브러리 — #개발자의도구들 #AWS시험 #LambdaLayer #Lambda라이브러리 참고: ExamPotic Disscussion 문제 찾...
#DVA-C02#Naver Blog
#개발자의도구들 #AWS시험 #LambdaLayer #Lambda라이브러리
참고: ExamPotic Disscussion
문제 찾는법 : 여기 최하단
요구사항 분석
- Lambda 함수 2개
- 하나는 S3 + DynamoDB 저장
- 하나는 S3 + DynamoDB 조회
- 공통 Python 라이브러리 사용 → 배포 패키지 크기(50MB zipped / 250MB unzipped 제한)에 가까워짐
- 목표:
- 패키지 크기 최소화
- 운영 오버헤드 최소화 (즉, 관리/코드 변경 부담 줄이기)
보기 분석
A. 각 라이브러리를 .zip으로 다로 패키징 후, 각각 Lambda에 배포
B. Lambda Layer를 사용하여 python 라이브러리를 Layer로 빼서 각 함수에서 사용
C. 두 Lambda를 하나의 함수로 합치기
D. python 라이브러리를 S3에 두고, Lambda가 실행 시마다 다운로드.
A.
❌ 관리 비용 2배 증가.
B.
✅ 공통 라이브러리 Layer로 분리 하여 여러 Lambda에서 사용가능
C.
❌
- 서로 다른 기능(저장 vs 조회)을 하나로 묶으면 관심사 분리 원칙 위반.
- 코드 복잡성 증가, 유지보수 어려움.
D.
- 실행할 때마다 S3에서 가져와야 함 → cold start 지연 증가.
- 매번 I/O 발생 → 성능 저하.
- 코드 수정 필요 → 운영 오버헤드 ↑.
- ❌ AWS 모범 사례 아님.
요구 지식
✅ Lambda 사용시 공통 라이브러리를 사용하는 방법?
개념 정리
Lambda Layer
- 공통 라이브러리, 런타인, 설정 파일 등을 Layer로 묶어서 올릴 수 있다.
- 여러 Lambda 함수에서 재사용 가능하다 → 중복제거
ColdStart & 라이브러리 코딩
- Lambda는 실행 환경을 콜드 스타트 시 최초 초기화 한다.
- 큰 라이브러리 포함되면 초기 로딩 시간이 길어짐
- Layer를 쓰면 중복된 라이브러리 사용가능으로 초기화 비용이 감소된다.
서버리스 모범 사례 (Best Practice)
- 중복 라이브러리 제거 = Layer
- 대규모 의존성 = Container Image
- 데이터 공유/저장 = S3, DynamoDB
- 코드 공유는 절대 S3에 두고 매번 불러오는 방식 쓰지 않음 (운영 오버헤드, Cold Start 지연)