AWS Lambda는 서버를 직접 프로비저닝하거나 관리할 필요 없이 코드를 실행할 수 있는 서버리스 컴퓨팅 서비스이다. 실행 요청이 있을 때만 컴퓨팅 리소스를 사용하므로 비용 효율적이며, 다양한 AWS 서비스와 긴밀하게 통합된다.
항목 | 제한 사항 |
---|---|
메모리 | 12MB ~ 10GB |
최대 실행 시간 | 15분 |
환경 변수 크기 | 최대 4KB |
동시 실행 가능 개수 | 기본 1,000개 (조정 가능) |
배포 크기 | 압축 시 50MB, 압축 해제 후 250MB |
임시 저장 공간 | /tmp 디렉터리에 최대 10GB |
Lambda는 실행할 때 필요한 패키지를 포함한 배포 패키지를 제공해야 하며, 파일 크기가 클 경우 /tmp
디렉터리를 활용할 수 있다.
SnapStart는 Java 기반의 Lambda 함수의 초기 실행 시간을 최대 10배까지 단축하는 기능이다.
💡 추가 비용 없이 제공되며, Java 11 및 17 환경에서 사용 가능하다.
Lambda는 기본적으로 특정 리전에 배포되지만, Lambda@Edge와 CloudFront Functions를 활용하면 엣지 로케이션에서 실행되어 글로벌 사용자에게 더욱 빠른 응답을 제공할 수 있다.
비교 항목 | Lambda@Edge | CloudFront Functions |
---|---|---|
지원 언어 | Python, Node.js | JavaScript |
실행 위치 | CloudFront 엣지 로케이션 | CloudFront 엣지 로케이션 |
반응 이벤트 | 뷰어 요청, 오리진 요청, 오리진 응답, 뷰어 응답 | 뷰어 요청, 뷰어 응답 |
사용 사례 | - 동적 컨텐츠 변경 - HTTP 헤더 조작 - 인증/권한 부여 | - URL 리디렉션 - 보안 헤더 추가 - 캐시 키 정규화 |
실행 시간 | 상대적으로 느림 (100ms 이상) | 매우 빠름 (10ms 이하) |
외부 라이브러리 | 사용 가능 | 제한적 |
비용 | 사용량 기반 | 매우 저렴 |
http://example.com
→ https://example.com
)기본적으로 AWS Lambda는 VPC 외부에서 실행된다. 따라서 프라이빗 서브넷에 위치한 RDS, ElastiCache 등의 리소스에 직접 접근할 수 없다. 이를 해결하기 위해 Lambda를 VPC에 연결할 수 있다.
AWS Lambda가 대규모 트래픽을 처리할 경우 RDS의 커넥션 개수가 급격히 증가하여 과부하가 발생할 수 있다. 이를 해결하기 위해 RDS Proxy를 활용한다.
✅ RDS Proxy의 장점
Lambda는 CloudWatch Events (EventBridge) 를 통해 자동 실행할 수 있다.
{
"schedule": "rate(1 hour)"
}
이 설정을 사용하면 Lambda 함수가 1시간마다 자동으로 실행된다.
✅ 활용 사례
AWS Lambda는 다양한 AWS 서비스와 통합하여 서버리스 아키텍처를 구축하는 핵심 요소이다.
🚀 Lambda는 효율적이고 확장성이 뛰어난 서버리스 애플리케이션을 만드는 데 강력한 도구가 된다.