Lambda Managed Instances 런타임
Lambda Managed Instances 런타임 (Lambda Managed Instances runtimes)
Lambda Managed Instances를 사용할 때 Lambda는 요청을 다르게 처리해요. 각 실행 환경에서 요청을 순차적으로 처리하는 대신, Lambda Managed Instances는 각 실행 환경 안에서 여러 요청을 동시에 처리해요. 실행 모델의 이런 변화 때문에 Lambda Managed Instances를 쓰는 함수는 스레드 안전성, 상태 관리, 컨텍스트 격리(기본 단일 동시성 모델인 Lambda에서는 발생하지 않는 우려)를 고려해야 해요. 또한 다중 동시성 구현은 런타임에 따라 달라져요.
지원 언어
Lambda Managed Instances는 다음 프로그래밍 언어와 런타임과 함께 쓸 수 있어요.
- Java: Java 21 이상.
- Python: Python 3.13 이상.
- Node.js: Node.js 22 이상.
- .NET: .NET 8 이상.
- Rust: OS-only 런타임
provided.al2023이상으로 지원.
언어별 고려 사항
각 프로그래밍 언어는 다중 동시성을 다르게 구현해요. 선택한 프로그래밍 언어에서 다중 동시성이 어떻게 구현되는지 이해하고 적절한 동시성 모범 사례를 적용해야 해요.
Java
동시성에 단일 프로세스와 OS 스레드를 사용해요. 여러 스레드가 핸들러 메서드를 동시에 실행하므로 상태와 공유 리소스의 스레드 안전 처리가 필요해요.
Python
각 동시 요청이 별도 프로세스에서 실행되는 여러 Python 프로세스를 사용해요. 대부분의 동시성 문제를 방지하지만 /tmp 디렉터리 같은 공유 리소스에는 주의가 필요해요.
Node.js
비동기 실행과 함께 워커 스레드(worker threads)를 사용해요. 동시 요청이 워커 스레드에 분산되고, 각 워커 스레드도 동시 요청을 비동기로 처리할 수 있어서 상태와 공유 리소스의 안전한 처리가 필요해요.
.NET
여러 동시 요청의 비동기 처리에 .NET Tasks를 사용해요. 상태와 공유 리소스의 안전한 처리가 필요해요.
Rust
Tokio가 구동하는 async 작업과 단일 프로세스를 사용해요. 핸들러는 Clone + Send여야 해요.
다음 단계
각 런타임에 대한 자세한 내용은 다음 항목을 참고하세요.
- Lambda Managed Instances용 Java 런타임
- Lambda Managed Instances용 Node.js 런타임
- Lambda Managed Instances용 Python 런타임
- Lambda Managed Instances용 .NET 런타임
- Lambda Managed Instances용 Rust 지원