오픈소스 저장소
오픈소스 저장소
AWS Lambda는 서버리스 애플리케이션을 빌드하고, 커스터마이즈하고, 최적화하는 데 도움이 되는 다양한 오픈소스 도구, 라이브러리, 구성 요소를 제공해요. 이 리소스에는 런타임 인터페이스 클라이언트, 이벤트 라이브러리, 컨테이너 베이스 이미지, 개발 도구, 그리고 AWS가 관리하며 GitHub에서 제공하는 샘플 프로젝트가 포함됩니다. 이 오픈소스 저장소를 사용하면 Lambda의 기능을 확장하고, 커스텀 런타임을 만들고, 다양한 AWS 서비스의 이벤트를 처리하며, 함수 성능에 대한 더 깊은 통찰을 얻을 수 있어요. 이 페이지는 Lambda 개발을 지원하는 주요 오픈소스 프로젝트를 간략히 소개합니다.
본문
런타임 인터페이스 클라이언트
Lambda 런타임 인터페이스 클라이언트(RIC)는 Runtime API를 구현하고 함수 코드와 Lambda 서비스 사이의 상호 작용을 관리하는 오픈소스 라이브러리예요. 이 클라이언트는 호출 이벤트 수신, 컨텍스트 정보 전달, 오류 보고를 처리합니다.
Lambda의 관리형 런타임과 컨테이너 베이스 이미지가 사용하는 런타임 인터페이스 클라이언트는 오픈소스로 공개되어 있어요. 커스텀 런타임을 만들거나 기존 런타임을 확장할 때 이 오픈소스 라이브러리를 사용하면 구현이 더 단순해집니다. 다음 오픈소스 GitHub 저장소에는 Lambda의 RIC 소스 코드가 담겨 있어요:
- Node.js 런타임 인터페이스 클라이언트
- Python 런타임 인터페이스 클라이언트
- Java 런타임 인터페이스 클라이언트
- Ruby 런타임 인터페이스 클라이언트
- .NET 런타임 인터페이스 클라이언트
- Rust 런타임 인터페이스 클라이언트
- Go 런타임 인터페이스 클라이언트
- Swift 런타임 인터페이스 클라이언트 (실험적)
- C++ 런타임 인터페이스 클라이언트 (실험적)
- Lambda 베이스 이미지
이 클라이언트를 사용해 커스텀 런타임을 만드는 방법은 AWS Lambda용 커스텀 런타임 빌드하기를 참고하세요.
이벤트 라이브러리
Lambda 이벤트 라이브러리는 다양한 AWS 서비스의 이벤트를 처리하기 위한 타입 정의와 헬퍼 유틸리티를 제공합니다. 이 라이브러리는 이벤트 데이터를 타입 안전한 방식으로 파싱하고 처리하는 데 도움을 줘서, Amazon S3, Amazon DynamoDB, Amazon API Gateway 같은 서비스의 이벤트를 더 쉽게 다룰 수 있게 해줘요.
컴파일 언어의 경우 AWS는 다음과 같은 이벤트 라이브러리를 제공합니다:
Node.js, Python, Ruby 같은 인터프리터 언어는 별도 라이브러리 없이도 이벤트를 JSON 객체로 직접 파싱할 수 있어요. 다만 Node.js와 Python 개발자는 Powertools for AWS Lambda를 사용할 수 있는데, 여기에는 AWS 이벤트용 내장 스키마가 있어 타입 힌트, 데이터 검증, 그리고 컴파일 언어 라이브러리가 제공하는 것과 유사한 기능을 사용할 수 있습니다.
컨테이너 베이스 이미지
AWS는 Lambda 함수용 컨테이너 이미지를 만들 때 출발점으로 사용할 수 있는 오픈소스 컨테이너 베이스 이미지를 제공합니다. 이 베이스 이미지에는 Lambda 실행 환경에서 함수를 실행하는 데 필요한 런타임 인터페이스 클라이언트와 기타 구성 요소가 포함되어 있어요.
사용 가능한 베이스 이미지와 사용 방법에 대한 자세한 내용은 AWS Lambda 베이스 이미지 저장소와 컨테이너 이미지를 사용해 Lambda 함수 만들기를 참고하세요.
개발 도구
AWS는 Lambda 함수를 빌드하고 최적화하는 데 도움이 되는 추가 오픈소스 개발 도구를 제공합니다.
Powertools for AWS Lambda
Powertools for AWS Lambda는 중복 처리를 방지하는 필수 유틸리티, 다중 레코드 처리를 위한 배치 처리, Kafka 컨슈머 라이브러리로 서버리스 개발을 단순화해요. 이러한 기능은 코드 복잡성과 운영 오버헤드를 최소화하는 데 도움을 줍니다.
또한 내장 이벤트 스키마 검증, 구조화된 로깅 및 트레이싱, 파라미터 스토어 통합을 사용할 수 있어요. 이들은 AWS Well-Architected 모범 사례를 따르면서 프로덕션 준비가 된 Lambda 함수를 빠르게 만들도록 설계되었습니다.
GitHub 저장소:
Java 개발 도구
- Java Profiler (실험적) — Java Lambda 함수를 프로파일링하는 도구입니다.
- Java Libraries — JUnit 테스트 유틸리티와 프로파일링 도구 같은 핵심 프로젝트를 포함해 Lambda 개발용 Java 라이브러리와 도구의 포괄적인 모음이 담긴 저장소입니다.
- Serverless Java Container — 최소한의 변경으로 기존 Java 애플리케이션을 Lambda에서 실행할 수 있게 해주는 라이브러리입니다.
.NET 개발 도구
AWS Lambda .NET 저장소는 .NET CLI용 AWS Lambda 도구, .NET Core 애플리케이션 호스팅용 .NET Core 서버 같은 핵심 프로젝트를 포함해 Lambda 개발용 .NET 라이브러리와 도구를 제공합니다.
샘플 프로젝트
다양한 Lambda 샘플 프로젝트와 애플리케이션 컬렉션은 Serverless Land repositories에서 확인할 수 있어요. 이 샘플들은 다양한 Lambda 사용 사례, 통합 패턴, 모범 사례를 보여줘서 서버리스 애플리케이션을 시작하는 데 도움을 줍니다.