AWS Lambda는 서버를 프로비저닝하거나 관리하지 않고도 코드를 실행할 수 있는 서버리스 컴퓨팅 플랫폼입니다. Lambda 함수에 대한 요청이 있을 때 AWS는 요청을 처리하기 위해 컨테이너라고 하는 함수의 새 인스턴스를 생성합니다. 새 컨테이너를 만드는 이 프로세스를 콜드 스타트라고 합니다.
콜드 스타트는 컨테이너를 만들고 필요한 리소스를 로드하는 데 추가 시간이 필요하기 때문에 새 컨테이너에 대한 첫 번째 요청에 대한 응답 시간이 느려질 수 있습니다. 이는 많은 종속성이 필요한 더 큰 함수나 함수에서 특히 두드러집니다.
반면에 웜 스타트는 매번 새 컨테이너를 생성하는 대신 컨테이너를 재사용하여 후속 요청을 처리할 때 발생합니다. 필요한 리소스가 이미 로드되어 있으므로 응답 시간이 빨라집니다.
콜드 스타트의 영향을 줄이기 위해 다음 전략을 사용할 수 있습니다.
1. 함수 및 해당 종속성의 크기를 줄입니다.
2. 함수에 대해 지정된 수의 컨테이너를 미리 준비하는 기능인 프로비저닝된 동시성 사용
3. 호출 간에 재사용할 수 있는 메모리에 데이터 저장
다음은 콜드 스타트 시간을 줄이기 위해 데이터를 메모리에 저장하고 여러 호출에서 재사용하는 방법을 보여주는 Python의 예제 코드입니다.
import json
cached_data = {}
def handler(event, context):
if not cached_data:
# Fetch data from database or external API
data = fetch_data()
cached_data[‘data’] = data
# Use cached data for subsequent requests
response = {
“statusCode”: 200,
“body”: json.dumps(cached_data[‘data’])
}
return response
이 예제에서 함수가 처음 호출되면 외부 소스에서 데이터를 검색하고 이를 cached_data 사전에 저장하기 위해 fetch_data() 함수가 호출됩니다. 후속 호출에서는 캐시된 데이터가 사용되므로 응답 시간이 빨라집니다.
AWS Lambda에서 콜드 스타트와 웜 스타트의 개념을 이해하면 더 나은 성능을 위해 기능을 최적화하고 사용자에게 더 나은 경험을 제공할 수 있습니다.
'개발 > Cloud' 카테고리의 다른 글
AWS API Gateway & AWS Lambda 파일 업로드 구현하기 - chatGPT 작성 (0) | 2023.02.08 |
---|---|
AWS lambda payload 6mb limit - chatGPT 작성 (0) | 2023.02.07 |