Lambda 함수의 응답 스트리밍
Lambda 함수의 응답 스트리밍
Lambda 함수는 Lambda 함수 URL이나 InvokeWithResponseStream API(AWS SDK 또는 직접 API 호출로)를 통해 응답 페이로드를 클라이언트에 네이티브로 스트리밍할 수 있어요. Amazon API Gateway 프록시 통합을 통해서도 응답 페이로드를 스트리밍할 수 있는데, 이는 InvokeWithResponseStream API를 사용해 함수를 호출합니다. 응답 스트리밍은 부분 응답을 사용 가능해지는 대로 클라이언트에 보낼 수 있기 때문에, 지연 시간에 민감한 애플리케이션의 첫 바이트 도달 시간(TTFB, time to first byte) 성능을 개선하는 데 도움이 됩니다. 또한 응답 스트리밍 함수는 버퍼링된 응답의 최대 6MB와 달리 최대 200MB의 페이로드를 반환할 수 있어요.
본문
응답을 스트리밍한다는 것은 함수가 전체 응답을 메모리에 담지 않아도 된다는 뜻이기도 해요. 매우 큰 응답의 경우 함수에 구성해야 하는 메모리 양을 줄일 수 있습니다. 사용 사례에 맞게 함수 URL과 API Gateway 중 무엇을 선택할지 정하는 데는 HTTP 요청으로 Lambda 함수를 호출하는 방법 선택하기를 참고하세요.
참고
Lambda 응답 스트리밍은 아직 모든 AWS 리전에서 사용할 수 있는 것은 아니에요. 리전별 기능 가용성은 Builder Center의 AWS Capabilities by Region을 참고하세요.
Lambda가 응답을 스트리밍하는 속도는 응답 크기에 따라 달라져요. 함수 응답의 처음 6MB는 대역폭 상한이 없습니다. 6MB를 초과하는 응답의 나머지 부분은 대역폭 상한이 적용됩니다. 스트리밍 대역폭에 대한 자세한 내용은 응답 스트리밍 대역폭 제한을 참고하세요.
스트리밍 응답은 비용이 발생하며, 호출 클라이언트 연결이 끊겨도 스트리밍된 응답은 중단되거나 멈추지 않아요. 고객은 함수 전체 실행 시간에 대해 요금이 청구되므로, 긴 함수 타임아웃을 구성할 때는 주의를 기울여야 합니다.
Lambda는 Node.js 관리형 런타임에서 응답 스트리밍을 지원합니다. Python을 포함한 다른 언어의 경우 커스텀 Runtime API 통합이 있는 커스텀 런타임을 사용해 응답을 스트리밍하거나 Lambda Web Adapter를 사용할 수 있습니다.
참고
Lambda 콘솔을 통해 함수를 테스트할 때는 항상 응답이 버퍼링된 형태로 표시됩니다.
스트리밍 함수를 작성하는 방법은 응답 스트리밍이 활성화된 Lambda 함수 작성하기를, 함수 URL로 스트리밍 함수를 호출하는 방법은 Lambda 함수 URL로 응답 스트리밍 활성화 함수 호출하기를, 단계별 워크스루는 튜토리얼: 함수 URL로 응답 스트리밍 Lambda 함수 만들기를 참고하세요.
Topics
- 응답 스트리밍 대역폭 제한
- 응답 스트리밍과 VPC 호환성
- 응답 스트리밍이 활성화된 Lambda 함수 작성하기
- Lambda 함수 URL로 응답 스트리밍 활성화 함수 호출하기
- 튜토리얼: 함수 URL로 응답 스트리밍 Lambda 함수 만들기
응답 스트리밍 대역폭 제한
함수 응답 페이로드의 처음 6MB는 대역폭이 상한이 없어요. 이 초기 버스트 이후 Lambda는 최대 2MBps 속도로 응답을 스트리밍합니다. 함수 응답이 6MB를 초과하지 않는다면 이 대역폭 제한은 적용되지 않습니다.
참고
대역폭 제한은 함수의 응답 페이로드에만 적용되며, 함수의 네트워크 접근에는 적용되지 않아요.
상한 없는 대역폭의 속도는 함수의 처리 속도 같은 여러 요인에 따라 달라집니다. 보통 함수 응답의 처음 6MB에 대해 2MBps보다 빠른 속도를 기대할 수 있어요. 함수가 AWS 외부의 대상으로 응답을 스트리밍한다면 스트리밍 속도는 외부 인터넷 연결 속도에도 의존합니다.
응답 스트리밍과 VPC 호환성
VPC 환경에서 Lambda 함수를 사용할 때 응답 스트리밍에는 중요한 고려 사항이 있어요:
- Lambda 함수 URL은 VPC 환경 내에서 응답 스트리밍을 지원하지 않습니다.
- AWS SDK를 사용해
InvokeWithResponseStreamAPI로 Lambda 함수를 호출하면 VPC 내에서 응답 스트리밍을 사용할 수 있어요. 이를 위해 Lambda용 적절한 VPC 엔드포인트를 설정해야 합니다. - VPC 환경에서는 Lambda용 인터페이스 VPC 엔드포인트를 만들어 VPC 내 리소스와 Lambda 서비스 사이의 통신을 가능하게 해야 합니다.
VPC에서 응답 스트리밍의 일반적인 아키텍처는 다음과 같을 수 있어요:
Client in VPC -> Interface VPC endpoint for Lambda -> Lambda function -> Response streaming back through the same path