AWS

[Lambda] AWS Lambda Dependency

AWS Lambda Dependency
Lambda 함수를 생성하면 해당 작업을 수행하기 위해 "Dependency"들(추가 코드 라이브러리)에 의존하는 경우가 있다. 예를 들어 Lambda가 데이터 처리를 해야 한다면 "pandas" 라이브러리를 dependency로 포함할 수 있다. 

 

Dependency 관리가 중요한 이유

1. 배포 패키지 크기

- Lambda 배포 패키지(코드 및 모든 dependency를 포함)의 크기는 함수의 시작 시간에 직접적인 영향을 미친다.

- 패키지가 클수록 로드하고 초기화하는 데 시간이 더 오래 걸린다. 특히 콜드 스타트 이후에는 더욱 시간 소요가 된다.

 

2. Dependency 최적화

- dependency 최소화: 기능에 절대적으로 필요한 라이브러리만 포함시키자. 포함하는 라이브러리가 많을수록 패키지 크기가 커진다.

- 효율적인 패캐징: Lambda 함수를 배포할 때 종속성을 효율적으로 패키징 하자. 예를 들어, 라이브러리에서 불필요한 파일이나 문서를 제거하자.

 

3. Lambda Layer

- Lambda Layer는 여러 Lambda 함수에 걸쳐 dependency를 관리하고 공유하는 방법이다.

- 모든 기능의 배포 패키지에 dependency를 포함하는 대신 이러한 공통 라이브러리를 포함하는 레이어를 생성할 수 가 있다. 

- 그 다음 이 Layer를 Lambda 함수에 연결하면, 배포 패키지의 크기를 크게 줄일 수 있으며 기능 전반에 걸쳐 공통 dependency를 더 쉽게 관리할 수 있다. 

 

4. 최적화된 dependency 관리의 이점

- 더 빠른 시작 시간: 배포 패키지가 작을수록 Lambda 함수의 로드 시간과 시작 시간이 더 빨라질 수 있다.

- 더 쉬워진 업데이트 및 유지 관리: Layer의 Dependency를 업데이트한다는 것은 해당 Layer를 사용하는 모든 기능에 대해 자동으로 업데이트 된다는 의미이기 때문에. 굉장히 유지 관리가 단순해진다.

 

Tip

- Dependency 검토: 정기적으로 검토해서 더 간단하고 가벼운 대안으로 수행할 수 있는 작은 작업을 위한 대규모 라이브러리를 포함하지 않도록 하자.

- 가상 환경 사용: Python과 같은 언어의 경우 가상 환경을 사용하여 Dependency를 관리하면 필요한 패키지만 배포 패키지에 포함되도록 할 수 있다.

- 레이어 구성: 레이어를 논리적으로 구성하면 좋다!! 예를 들어, Application의 필요에 따라 DB 연결을 위한 레이어, Web scraping 도구 등을 위한 레이어가 잇다, 

'AWS' 카테고리의 다른 글

[Lambda] Lambda 환경의 몇 가지 고유한 특성  (0) 2023.12.11