AWS Lambda 기능

AWS Lambda를 사용해야 하는 이유는 무엇인가요?

AWS Lambda는 이벤트에 대한 응답으로 코드를 실행하고 자동으로 기본 컴퓨팅 리소스를 관리하는 서버리스 컴퓨팅 서비스입니다. 이러한 이벤트에는 전자 상거래 웹 사이트에서 사용자가 장바구니에 항목을 배치하는 것과 같은 상태 변경 또는 업데이트가 포함될 수 있습니다. AWS Lambda를 사용하면 사용자 지정 로직을 통해 다른 AWS 서비스를 확장하거나, AWS 규모, 성능 및 보안으로 작동하는 자체 백엔드 서비스를 만들 수 있습니다. AWS Lambda는 Amazon API Gateway를 통한 HTTP 요청, Amazon Simple Storage Service(S3) 버킷에 있는 객체 수정, Amazon DynamoDB의 테이블 업데이트 또는 AWS Step Functions의 상태 전환 같은 다양한 이벤트에 대한 응답으로 코드를 자동 실행할 수 있습니다.

Lambda는 가용성이 뛰어난 컴퓨팅 인프라에서 코드를 실행하고 컴퓨팅 리소스 관리를 모두 수행합니다. 여기에는 서버 및 운영 체제 유지 관리, 용량 프로비저닝 및 자동 크기 조정, 코드 및 보안 패치 배포와 코드 모니터링 및 로깅이 포함됩니다. 개발자는 코드를 제공하기만 하면 됩니다.

Page Topics

주요 제품 기능

주요 제품 기능

AWS Lambda를 사용하면 Amazon S3 버킷과 Amazon DynamoDB 테이블 등의 AWS 리소스에 사용자 지정 로직을 추가하여 데이터가 클라우드로 들어오거나 클라우드를 통해 이동할 때 쉽게 컴퓨팅을 적용할 수 있습니다.

AWS Lambda는 손쉽게 시작할 수 있습니다. 먼저 코드를 업로드(또는 Lambda 콘솔에서 직접 개발)하고 메모리, 제한 시간 및 AWS Identity and Access Management(IAM) 역할을 선택하여 함수를 생성합니다. 그런 다음 특정 Amazon S3 버킷이나 Amazon DynamoDB 테이블 또는 Amazon Kinesis 스트림 중에서 함수를 트리거할 AWS 리소스를 지정합니다. 리소스가 변경되면 Lambda가 함수를 실행하고 필요에 따라 컴퓨팅 리소스를 시작 및 관리하여 수신 요청에 맞춥니다.

AWS Lambda를 사용하면 Amazon API Gateway를 사용하여 구축된 사용자 지정 API 또는 Lambda 애플리케이션 프로그래밍 인터페이스(API)를 통해 온디맨드로 트리거되는 새로운 백엔드 애플리케이션 서비스를 생성할 수 있습니다. 사용자 지정 이벤트를 클라이언트에서 처리하는 대신 Lambda를 사용하여 처리할 수 있으므로 클라이언트 플랫폼 변형을 방지하고 배터리 소모를 줄이며 더욱 쉽게 업데이트하는 데 도움이 됩니다.

AWS Lambda를 사용하면 새로운 언어나 도구, 프레임워크를 배울 필요가 없습니다. 기본 라이브러리뿐 아니라 모든 서드 파티 라이브러리를 사용할 수 있습니다. 또한, 모든 코드(프레임워크, SDK, 라이브러리 등)를 Lambda 계층으로 패키지를 만들어 관리하면서 여러 함수에서 쉽게 공유할 수 있습니다. Lambda는 기본적으로 Java, Go, PowerShell, Node.js, C#, Python 및 Ruby 코드를 지원하며, 그 밖에 프로그래밍 언어를 사용해 함수를 작성할 수 있도록 Runtime API도 제공합니다.

AWS Lambda는 가용성이 뛰어나고 내결함성을 갖춘 인프라에서 코드를 실행할 수 있도록 모든 인프라를 관리하므로 고객은 차별화된 백엔드 서비스를 구축하는 데 집중할 수 있습니다. Lambda를 사용하면 패치가 출시되어도 기본 운영 체제(OS)를 업데이트할 필요가 없으며 사용량 증가에 따른 서버 규모 조정이나 새로운 서버 추가에 대해 걱정할 필요가 없습니다. AWS Lambda는 코드를 원활하게 배포하고 모든 관리, 유지 관리 및 보안 패치를 처리하며 Amazon CloudWatch를 통해 기본 제공 로깅 및 모니터링 기능을 제공합니다.

AWS Lambda는 각 AWS 리전에 있는 여러 가용 영역(AZ)의 컴퓨팅 용량을 유지 관리하므로 개별 시스템이나 데이터 센터 시설에 장애가 발생해도 코드를 보호할 수 있습니다. AWS Lambda 및 서비스에서 실행되는 함수 모두 예측 가능하고 안정적인 운영 성능을 제공합니다. AWS Lambda는 서비스 자체 및 서비스에서 운영하는 함수에 대해 높은 가용성을 제공하도록 설계되었습니다. 유지 관리 기간이나 예약된 가동 중지 시간이 없습니다.

AWS Lambda는 컨테이너 이미지로 함수를 패키징하고 배포할 수 있는 기능을 지원합니다. 따라서 고객은 익숙한 컨테이너 이미지 도구, 워크플로 및 종속성을 사용하여 손쉽게 Lambda 기반 애플리케이션을 구축할 수 있습니다. 또한 Lambda의 운영 간소화, 시작 시간이 1초 미만인 자동 크기 조정, 고가용성, 종량제 결제 모델 및 200개 이상의 AWS 서비스와 서비스형 소프트웨어(SaaS) 애플리케이션과의 기본적인 통합 이점을 활용할 수 있습니다. 기업 고객은 Lambda와 컨테이너식 애플리케이션 모두에서 일관된 도구 세트를 사용하여 보안 스캐닝 및 이미지 서명과 같은 중앙 거버넌스 요구 사항을 간소화할 수 있습니다.

AWS Lambda는 필요한 경우에만 코드를 호출하고 수동 구성 없이 수신되는 요청 속도를 지원할 수 있도록 자동 확장됩니다. 코드에서 처리할 수 있는 요청 수에는 제한이 없습니다. AWS Lambda는 대개 이벤트가 발생한 후 몇 밀리초 내에 코드 실행을 시작합니다. Lambda는 자동으로 크기를 조정하므로, 이벤트 빈도가 늘어나도 성능은 일관적���로 높게 유지됩니다. 코드는 무상태이므로 Lambda는 배포와 구성에 대한 지연 없이 필요한 만큼 많은 인스턴스를 시작할 수 있습니다.

Amazon RDS 프록시를 사용하여 관계형 데이터베이스에 대한 완전관리형 연결 풀을 활용합니다. RDS 프록시는 관계형 데이터베이스에 대한 수천 개의 동시 연결을 효율적으로 관리하므로 관계형 데이터베이스와 상호 작용하는 확장성이 높고 안전한 Lambda 기반 서버리스 애플리케이션을 쉽게 구축할 수 있습니다. 현재 RDS 프록시는 MySQL 및 Aurora를 지원합니다. Amazon RDS 콘솔 또는 AWS Lambda 콘솔을 통해 서버리스 애플리케이션의 RDS 프록시를 사용할 수 있습니다.

프로비저닝된 동시성을 통해 서버리스 애플리케이션 성능을 보다 강력하게 제어할 수 있습니다. 프로비저닝된 동시성을 사용하면 함수가 지속적으로 초기화되고 준비되어 두 자릿수 밀리초로 응답합니다. 프로비저닝된 동시성은 함수 시작 시간을 보다 강력하게 제어해야 하는 모든 AWS Lambda 애플리케이션에 적합합니다. 애플리케이션에 필요한 동시성을 손쉽게 구성하고 조정할 수 있습니다. 요구 사항에 따라 확장 또는 축소하거나 완전히 끌 수 있습니다. 프로비저닝된 동시성을 활용하면 코드를 변경하거나 컴퓨팅 리소스를 관리하지 않고도 대기 시간에 민감한 애플리케이션의 성능을 일관되게 유지할 수 있습니다.

AWS Lambda용 Amazon Elastic File System(EFS)을 활용하면 대용량 데이터를 규모에 관계없이 짧은 대기 시간으로 안전하게 읽고, 쓰고, 유지할 수 있습니다. 또한 코드를 작성하고 데이터를 임시 스토리지에 다운로드하지 않고도 데이터를 처리할 수 있습니다. 덕분에 시간이 절약되고 코드가 단순화되어 비즈니스 로직에 집중할 수 있습니다. Lambda용 EFS는 다량의 데이터 처리 또는 백업과 대용량 참조 파일 또는 모델 로드와 같은 다양한 사용 사례에 적합합니다. 또한 AWS Lambda용 EFS를 사용하면 서버리스 인스턴스 또는 컨테이너 기반 애플리케이션 간에 파일을 공유하고 기계 학습(ML) 추론을 실행할 수도 있습니다.

Lambda@Edge를 사용하면 AWS Lambda가 오리진 서버와 최종 사용자 간의 콘텐츠 요청과 같은 Amazon CloudFront 이벤트에 대한 응답으로 전 세계 AWS 로케이션에서 코드를 실행할 수 있습니다. 따라서 더 짧은 대기 시간으로 좀 더 풍부하고 개인화된 콘텐츠를 최종 사용자에게 손쉽게 제공할 수 있습니다. 

AWS Step Functions 워크플로를 구축하면 복잡하거나 오래 실행되는 태스크에 대한 다수의 AWS Lambda 함수를 조정할 수 있습니다. Step Functions를 사용하면 순차, 병렬, 분기 및 오류 처리 단계를 사용하여 Lambda 함수를 트리거하는 워크플로를 정의할 수 있습니다. Step Functions 및 Lambda를 통해 애플리케이션 및 백엔드에 대해 안정적이고 장기간 실행되는 프로세스를 구축할 수 있습니다.

AWS Lambda의 기본 제공 소프트웨어 개발 키트(SDK)를 AWS Identity and Access Management(IAM)와 통합하면 다른 AWS 서비스에 대한 안전한 코드 액세스를 보장할 수 있습니다. AWS Lambda는 기본적으로 Amazon Virtual Private Cloud(VPC) 내에서 코드를 실행합니다. 필요한 경우 VPC를 기반으로 AWS Lambda 리소스 액세스를 구성하여 사용자 지정 보안 그룹 및 네트워크 액세스 제어 목록을 활용할 수 있습니다. 이렇게 하면 Lambda 함수가 VPC 내에서 리소스에 안전하게 액세스합니다. AWS Lambda는 SOCHIPAAPCI 및 ISO 규정을 준수합니다. Lambda 인증 및 규정 준수 준비에 대한 최신 정보는 전체 범위 내 서비스를 참조하세요.

AWS Lambda에 대한 코드 서명을 사용하면 승인된 개발자가 게시한 변경되지 않은 코드만 Lamba 함수에 배포되는지 확인할 수 있습니다. 디지털 서명한 코드 아티팩트를 생성하여 lambda 기능을 구성하기만 하면 배포 시 서명을 확인할 수 있습니다. 이렇게 하면 대규모 팀에서도 높은 보안 표준을 적용하면서 애플리케이션 개발의 속도와 민첩성을 높일 수 있습니다.

AWS Lambda를 사용하면 서버 단위가 아닌 실행 기간에 대해 요금을 지불합니다. Lambda 함수를 사용하면 코드 실행에 필요한 컴퓨팅 시간 및 지원된 요청에 대해서만 비용을 지불합니다. 1밀리초 단위로 청구 금액이 정산되기 때문에 간편하고 비용 효율적으로 일 몇 개의 요청에서 초당 수천 개의 요청으로 자동 크기 조정됩니다. 프로비저닝된 동시성을 사용할 때는 구성한 동시성 크기와 구성 기간에 대한 요금을 지불합니다. 프로비저닝된 동시성을 사용하고 함수를 실행하는 경우에는 요청 및 실행 기간에 대해서도 요금을 지불해야 합니다. 요금에 대해 자세히 알아보려면 AWS Lambda 요금을 참조하세요.

함수에 할당할 메모리 양을 선택하면 AWS Lambda가 이에 맞춰 CPU 성능과 네트워크 대역폭, 디스크 입력/출력(I/O)을 할당합니다.

AWS Lambda 확장 프로그램을 사용하면 자주 ���용하는 모니터링, 관측성, 보안 및 거버넌스 도구와 손쉽게 통합할 수 있습니다. Lambda는 실행 환경에서 함수를 호출하므로 안전하고 격리된 런타임에서 함수 코드가 실행됩니다. Lambda 확장 프로그램은 Lambda 실행 환경 내에서 함수 코드와 함께 실행됩니다. Lambda 확장 프로그램을 사용하면 AWS Lambda Telemetry API를 사용하여 로그, 지표 및 추적과 같은 세분화된 진단 정보를 Lambda에서 직접 캡처하고 선택한 대상으로 전송할 수 있습니다. 또한 확장 프로그램을 사용하여 운영 오버헤드 없이 함수 성능에 미치는 영향을 최소화하면서 선호하는 보안 에이전트를 Lambda와 통합할 수 있습니다.

Graviton2에서 실행되는 AWS Lambda 함수는 AWS가 설계한 Arm 기반 프로세서 아키텍처를 사용하여 x86 프로세서에서 실행되는 함수에 비해 최대 34% 더 나은 가격 대비 성능을 제공합니다. 이는 웹 및 모바일 백엔드, 데이터, 미디어 처리와 같은 다양한 서버리스 워크로드에 적용됩니다. 더 짧은 지연 시간, 최대 19% 더 나은 성능, 20% 더 낮은 비용 및 현재 AWS에서 사용할 수 있는 최고의 전력 효율성을 갖춘 Graviton2 기능은 미션 크리티컬 서버리스 애플리케이션을 지원하는 데 사용할 수 있습니다.

AWS Lambda는 로그, 지표 및 추적을 자동으로 캡처하여 Amazon CloudWatch 및 AWS X-Ray와 같은 AWS 모니터링 및 관찰성 서비스에 전송함으로써 내장된 모니터링 기능을 제공합니다. 또한 Lambda는 로그를 실시간으로 보고 분석할 수 있는 Live Tail, 로그를 기본적으로 JSON 정형 형식으로 캡처할 수 있으며, 코드 변경 없이 로그 수준 필터링을 제어하고, Lambda가 로그를 보내는 CloudWatch 로그 그룹을 사용자 지정할 수 있는 고급 로깅 제어 등의 고급 모니터링 기능을 제공합니다. Lambda는 애플리케이션 신호를 통해 서버리스 애플리케이션의 처리량, 가용성, 지연 시간, 장애 및 오류를 추적할 수 있는 즉시 사용 가능한 애플리케이션 성능 모니터링(APM) 도구를 제공합니다. Lambda Insights는 메모리, CPU, 네트워크 사용량을 비롯한 세부 지표를 자동으로 캡처하여 Lambda 함수의 성능에 대해 더 깊이 있는 인사이트를 제공합니다. 또한 Lambda는 Lambda 확장을 통해 타사 모니터링 도구와 원활한 통합을 지원하므로 서버리스 애플리케이션을 모니터링하고 문제를 해결하기 위해 선호하는 도구를 쉽게 사용할 수 있습니다.