BLOG
이전에 블로그 게시글을 통해 서버리스 애플리케이션으로 대규모 확장을 가능케 하는 일반적인 디자인 패턴에 대해 설명해 드린 적 있습니다. 오늘은 Lambda 함수를 호출하는 다양한 방법과 각 호출 모델에 대해 알려 드리겠습니다.
동기식 호출
동기식 호출은 Lambda 함수를 호출하는 가장 직접적인 방법입니다. 이 모델에선 Lambda Invoke API 호출을 수행하는 즉시 함수가 실행됩니다. 해당 호출은 CLI 또는 지원되는 SDK 사용을 포함한 다양한 옵션을 통해 수행할 수 있습니다.
다음은 CLI를 사용한 동기식 호출의 예입니다.
aws lambda invoke —function-name MyLambdaFunction —invocation-type RequestResponse —payload “[JSON string here]”
호출 유형 플래그는 “RequestResponse”값을 지정합니다. 이는 AWS가 Lambda 함수를 실행하고 함수가 완료될 때까지 기다리도록 지시합니다. 동기식 호출을 수행할 때 응답을 확인하고 오류가 있는지, 호출을 재시도해야 하는지를 결정해야 합니다.
AWS의 많은 서비스가 람다 함수를 트리거하는 이벤트를 방출 할 수 있는데요, 그중에서도 람다 함수를 동기식으로 호출하는 서비스는 다음과 같습니다.
- Elastic Load Balancing (Application Load Balancer)
- Amazon Cognito
- Amazon Lex
- Amazon Alexa
- Amazon API Gateway
- Amazon CloudFront (Lambda@Edge)
- Amazon Kinesis Data Firehose
비동기식 호출
다음으로 CLI를 사용하는 비동기식 호출의 예를 보여드리겠습니다.
aws lambda invoke —function-name MyLambdaFunction —invocation-type Event —payload “[JSON string here]”
호출 유형 플래그는 “Event”를 지정합니다. 함수가 오류를 반환하면 AWS는 자동으로 호출을 두 번 재시도하여 총 세 번의 호출을 시도하게 됩니다.
다음은 람다 함수를 비동기식으로 호출하는 서비스 목록입니다.
- Amazon Simple Storage Service
- Amazon Simple Notification Service
- Amazon Simple Email Service
- AWS CloudFormation
- Amazon CloudWatch Logs
- Amazon CloudWatch Events
- AWS CodeCommit
- AWS Config
비동기식 호출은 요청을 Lambda 서비스 대기열에 보내고, 요청이 도착하면 호출을 처리합니다. 사용자는 AWS X-Ray를 사용하여 “대기 시간(dwell time)” 세그먼트를 확인하고 요청이 서비스 대기열에 머문 시간을 검토해야 합니다.
폴 기반 호출
이 호출 모델은 코드 또는 서버 관리 없이 AWS 스트림 및 대기열 기반 서비스와 통합할 수 있도록 설계되었습니다. Lambda는 사용자를 대신하여 다음 서비스를 폴링하고 레코드를 검색하며 함수를 호출합니다. 지원되는 서비스는 다음과 같습니다.
AWS는 사용자를 대신하여 폴러를 관리하고 이러한 유형의 통합으로 함수의 동기식 호출을 수행합니다. 해당 모델의 재시도 동작은 데이터 소스의 데이터 만료를 기반으로 합니다. 예를 들어 Kinesis Data 스트림은 기본적으로 24시간 동안(최대 168시간) 레코드를 저장합니다. 각 통합에 대한 특정 세부 사항은 위의 서비스 목록에 링크되어 있습니다.
글을 마치며
다음번 포스팅으로는 람다 함수 개발을 위한 몇 가지 팁과 모범 사례를 소개해 드리겠습니다. 그럼 행복한 코딩하세요!
** 메가존 클라우드 TechBlog는 AWS BLOG 영문 게재 글 중에서 한국 사용자들에게 유용한 정보 및 콘텐츠를 우선적으로 번역하여 내부 엔지니어 검수를 받아서, 정기적으로 게재하고 있습니다. 추가로 번역 및 게재를 희망하는 글에 대해서 관리자에게 메일 또는 SNS 페이지에 댓글을 남겨주시면, 우선적으로 번역해서 전달해드리도록 하겠습니다.