2025년 9월 21일 작성
AWS Lambda - Cloud Computing PaaS
AWS Lambda는 server 관리 없이 code를 실행할 수 있는 serverless computing service로, event 발생 시 자동으로 code가 실행되며, 사용한 computing time에 대해서만 요금을 지불하는 pay-per-use 방식을 제공합니다.
AWS Lambda
- AWS Lambda는 server를 관리할 필요 없이 code를 실행할 수 있는 serverless computing service입니다.
- event가 발생했을 때 자동으로 code가 실행되며, 사용한 computing time에 대해서만 요금을 지불하면 됩니다.
- Java, Python, Node.js, C#, Go, Ruby 등 다양한 programming 언어를 지원합니다.
Serverless Computing의 핵심 개념
- AWS Lambda는 Function as a Service(FaaS) model을 기반으로 하는 serverless computing platform입니다.
- 개발자는 server infrastructure 관리 없이 business logic에만 집중할 수 있습니다.
- AWS가 자동으로 server provisioning, scaling, patching, monitoring을 처리합니다.
주요 특징
- 자동 확장 : traffic 증가에 따라 자동으로 instance를 생성하여 수천 개의 동시 실행을 처리합니다.
- 고가용성 : AWS infrastructure 내에서 자동으로 fault tolerance와 high availability를 보장합니다.
- pay-per-use 요금제 : code가 실행되는 시간과 memory 사용량에 따라서만 요금이 부과됩니다.
- zero administration : server 관리, OS update, runtime patching이 모두 자동화됩니다.
지원 언어 및 Runtime
- Node.js : JavaScript 및 TypeScript application 개발에 사용됩니다.
- Python : data processing, machine learning, automation script에 널리 활용됩니다.
- Java : enterprise application 및 대규모 system integration에 적합합니다.
- C# : .NET ecosystem과의 seamless integration을 제공합니다.
- Go : 높은 성능이 필요한 application에 최적화되어 있습니다.
- Ruby : web application 및 API development에 사용됩니다.
- Custom runtime : container image를 통해 다른 언어도 지원 가능합니다.
Lambda Function 구조
- Lambda function은 handler function을 중심으로 구성되며, event와 context 객체를 parameter로 받습니다.
- event 객체에는 function을 trigger한 service로부터 전달된 data가 포함됩니다.
- context 객체는 runtime 정보와 AWS 환경에 대한 metadata를 제공합니다.
Handler Function 형태
- Python 예시 :
lambda_handler(event, context)형태로 정의됩니다. - Node.js 예시 :
exports.handler = async (event, context)형태로 작성됩니다. - Java 예시 :
RequestHandler<InputType, OutputType>interface를 구현합니다.
Event 처리 방식
- 동기식 처리 : API Gateway, Application Load Balancer 등에서 즉시 응답이 필요한 경우 사용됩니다.
- 비동기식 처리 : S3, SNS, CloudWatch Events 등에서 event를 queue에 저장한 후 처리됩니다.
- stream 처리 : DynamoDB Streams, Kinesis 등에서 연속적인 data stream을 실시간으로 처리합니다.
실행 환경 및 제한 사항
- AWS Lambda는 안전하고 격리된 실행 환경에서 code를 실행하며, 여러 보안 및 성능 제한이 적용됩니다.
- 이러한 제한 사항을 이해하고 설계에 반영하는 것이 성공적인 serverless application 구축의 핵심입니다.
Memory 및 CPU 할당
- memory 범위 : 128MB부터 10,240MB(10GB)까지 1MB 단위로 설정 가능합니다.
- CPU 성능 : memory 할당량에 비례하여 CPU 성능이 자동으로 조정됩니다.
- vCPU 제한 : 1,769MB memory에서 1 vCPU, 10,240MB에서 6 vCPU가 할당됩니다.
실행 시간 제한
- 최대 실행 시간 : function 당 최대 15분까지 실행 가능합니다.
- timeout 설정 : 1초부터 15분까지 자유롭게 설정할 수 있습니다.
- cold start : 새로운 container 생성 시 추가적인 initialization 시간이 소요됩니다.
동시 실행 제한
- 기본 동시 실행 한도 : AWS account 당 1,000개의 동시 실행이 기본 제한입니다.
- reserved concurrency : 특정 function에 전용 동시 실행 용량을 예약할 수 있습니다.
- provisioned concurrency : cold start를 방지하기 위해 미리 container를 준비해둘 수 있습니다.
Storage 및 Network 제한
- temporary storage :
/tmpdirectory에 최대 10GB까지 temporary file을 저장할 수 있습니다. - deployment package : zip file로 50MB, uncompressed로 250MB까지 허용됩니다.
- environment variable : 총 4KB까지 environment variable을 설정할 수 있습니다.
Event Source 및 Integration
- AWS Lambda는 다양한 AWS service 및 외부 system과 seamless하게 연동되어 event-driven architecture를 구현합니다.
- 각 event source는 고유한 event format과 처리 방식을 가지고 있어 적절한 integration pattern을 선택하는 것이 중요합니다.
AWS Service Integration
- API Gateway : RESTful API 및 WebSocket API의 backend로 사용되어 HTTP request를 처리합니다.
- S3 : object 생성, 삭제, 수정 event에 반응하여 file processing pipeline을 구축합니다.
- DynamoDB : table의 data 변경 사항을 실시간으로 감지하여 downstream processing을 수행합니다.
- SNS/SQS : message queue system과 연동하여 비동기 message processing을 구현합니다.
- CloudWatch Events : scheduled event나 AWS service의 state 변화에 대응합니다.
- Kinesis : real-time streaming data를 처리하여 analytics 및 monitoring system을 구축합니다.
External Integration
- HTTP endpoint : API Gateway를 통해 external system에서 HTTP request로 function을 호출할 수 있습니다.
- third-party webhook : GitHub, Slack 등의 service에서 발생하는 event를 처리합니다.
- custom application : AWS SDK를 사용하여 직접 function을 invoke할 수 있습니다.
Event 처리 Pattern
- request-Response pattern : API Gateway를 통한 synchronous 처리에서 사용됩니다.
- event-driven pattern : S3, SNS 등에서 발생하는 asynchronous event 처리에 활용됩니다.
- stream processing pattern : Kinesis, DynamoDB Streams에서 연속적인 data 처리에 사용됩니다.
보안 및 권한 관리
- AWS Lambda는 IAM(Identity and Access Management)을 중심으로 한 comprehensive security model을 제공합니다.
- function 실행에 필요한 최소한의 권한만 부여하는 최소 권한 원칙(principle of least privilege)을 준수하는 것이 좋습니다.
IAM Role 및 Policy
- execution role : Lambda function이 AWS service에 접근하기 위한 권한을 정의합니다.
- resource-based policy : 다른 AWS service나 account에서 function을 호출할 수 있는 권한을 설정합니다.
- managed policy : AWS에서 제공하는 pre-defined policy template을 활용할 수 있습니다.
VPC 및 Network 보안
- VPC integration : private subnet 내의 resource에 접근하기 위해 VPC 환경에서 function을 실행할 수 있습니다.
- security group : network traffic을 제어하여 inbound/outbound connection을 관리합니다.
- NAT Gateway : internet 접근이 필요한 경우 NAT Gateway를 통해 outbound traffic을 routing합니다.
환경 변수 및 비밀 관리
- environment variable encryption : KMS를 사용하여 environment variable을 암호화할 수 있습니다.
- AWS Secrets Manager : database credential, API key 등의 민감한 정보를 안전하게 관리합니다.
- AWS Systems Manager Parameter Store : configuration data를 중앙화하여 관리할 수 있습니다.
Monitoring 및 Debugging
- AWS Lambda는 built-in monitoring 및 debugging tool을 제공하여 function의 성능과 동작을 실시간으로 추적할 수 있습니다.
- 효과적인 monitoring strategy는 production 환경에서 안정적인 service 운영을 위해 필수적입니다.
CloudWatch Integration
- 자동 logging : function 실행 중 발생하는 모든 log가 CloudWatch Logs에 자동으로 저장됩니다.
- metric 수집 : invocation count, duration, error rate, throttle 등의 핵심 지표를 수집합니다.
- custom metric : business logic에 특화된 metric을 직접 정의하여 monitoring할 수 있습니다.
AWS X-Ray Tracing
- distributed tracing : microservice architecture에서 request의 전체 경로를 추적합니다.
- performance analysis : function의 실행 시간과 bottleneck을 시각적으로 분석할 수 있습니다.
- dependency mapping : downstream service와의 연결 관계를 자동으로 mapping합니다.
Error 처리 및 재시도
- dead letter queue : 처리 실패한 event를 별도 queue에 저장하여 후속 처리를 가능하게 합니다.
- retry mechanism : asynchronous event의 경우 자동으로 재시도를 수행합니다.
- error alarm : CloudWatch Alarm을 통해 error rate threshold 초과 시 알림을 받을 수 있습니다.
비용 최적화 전략
- AWS Lambda의 pay-per-use pricing model을 최대한 활용하기 위해서는 적절한 비용 최적화 전략이 필요합니다.
- memory 할당, 실행 시간, architecture 설계 등 다양한 요소가 전체 비용에 영향을 미칩니다.
요금 구조 이해
- request 요금 : function 호출 횟수에 따라 부과되며, 월 100만 회까지 무료입니다.
- duration 요금 : GB-second 단위로 계산되며, memory 할당량과 실행 시간의 곱으로 결정됩니다.
- data transfer : AWS service 간 data 전송은 대부분 무료이지만, internet으로의 outbound transfer는 요금이 부과됩니다.
Memory 최적화
- 적정 memory 설정 : function의 실제 memory 사용량에 맞춰 할당량을 조정합니다.
- CPU 성능 고려 : memory가 증가하면 CPU 성능도 향상되어 실행 시간이 단축될 수 있습니다.
- benchmark 수행 : 다양한 memory 설정에서 성능과 비용을 측정하여 최적점을 찾습니다.
Architecture 최적화
- function 분리 : 단일 function에 모든 logic을 구현하지 않고 적절히 분리하여 효율성을 높입니다.
- cold start 최소화 : provisioned concurrency 사용 여부를 신중히 결정합니다.
- caching 활용 : DynamoDB, ElastiCache 등을 활용하여 반복적인 computation을 줄입니다.
개발 모범 사례
- AWS Lambda 개발 시 따라야 할 best practice는 성능, 보안, 유지 보수성을 모두 고려한 종합적인 접근 방식을 요구합니다.
- 이러한 원칙들을 준수하면 scalable하고 reliable한 serverless application을 구축할 수 있습니다.
Code 구조화
- single responsibility : 하나의 function은 하나의 명확한 책임만 가져야 합니다.
- stateless design : function 간에 state를 공유하지 않고 external storage를 활용합니다.
- error handling : 예외 상황에 대한 적절한 처리 logic을 구현합니다.
- dependency 최소화 : 필요한 library만 포함하여 deployment package 크기를 줄입니다.
성능 최적화
- connection pooling : database connection을 function 외부에서 관리하여 재사용합니다.
- lazy loading : 실제 필요한 시점에 resource를 초기화합니다.
- cache 활용 : 자주 사용되는 data는 memory나 external cache에 저장합니다.
- warm-up strategy : critical function의 경우 provisioned concurrency를 고려합니다.
Test 및 배포
- unit test : function의 core logic에 대한 독립적인 test를 작성합니다.
- integration test : AWS service와의 연동 부분을 검증합니다.
- blue-green deployment : alias와 version을 활용하여 안전한 배포를 수행합니다.
- canary release : traffic의 일부만 새 version으로 routing하여 점진적으로 배포합니다.
사용 사례 및 활용 분야
- AWS Lambda는 다양한 business scenario에서 활용되며, 특히 event-driven processing과 real-time data 처리에 강점을 보입니다.
- 각 사용 사례별로 적합한 architecture pattern과 design consideration이 달라집니다.
Web Application Backend
- API 구축 : API Gateway와 연동하여 RESTful API나 GraphQL endpoint를 구현합니다.
- authentication : JWT token 검증, OAuth 처리 등의 보안 logic을 처리합니다.
- file upload : S3와 연동하여 file upload processing pipeline을 구축합니다.
Data Processing
- ETL pipeline : S3에 저장된 raw data를 변환하여 analytics-ready format으로 처리합니다.
- real-time analytics : Kinesis를 통해 streaming data를 실시간으로 분석합니다.
- image processing : 업로드된 image의 thumbnail 생성, format 변환 등을 자동화합니다.
Automation 및 DevOps
- CI/CD pipeline : code 배포 과정에서 automated testing, notification 등을 수행합니다.
- infrastructure monitoring : CloudWatch event를 기반으로 system health check를 자동화합니다.
- backup automation : 정기적인 database backup, log archiving 등을 스케줄링합니다.
IoT 및 Real-time Processing
- sensor data processing : IoT device에서 전송되는 sensor data를 실시간으로 처리합니다.
- alerting system : threshold 초과 시 즉시 notification을 발송하는 system을 구축합니다.
- edge computing : AWS IoT Greengrass를 통해 edge device에서 Lambda function을 실행합니다.