CPU 사용량이 낮을 때 EC2 자동 중지, HTTPS 요청 시 자동 시작 — 인스턴스가 꺼져 있을 때 “프론트 도어”를 유지하는 방법?
발행: (2025년 12월 13일 오후 03:28 GMT+9)
3 min read
원문: Dev.to
Source: Dev.to
달성하고 싶은 목표
- EC2 인스턴스가 유휴 상태일 때 자동으로 중지 (예: CPU 사용률 < 5%).
- 들어오는 HTTPS 요청이 API에 도달하면:
- 인스턴스가 중지돼 있으면 자동으로 시작되어야 함.
- 요청은 결국 해당 EC2 인스턴스에서 실행 중인 애플리케이션에 의해 처리되어야 함.
지금까지 수행한 작업
StopInstances를 트리거하는 CloudWatch 알람을 사용해 EC2 인스턴스를 자동 중지.- EC2 인스턴스를 시작할 수 있는 IAM 권한을 가진 Lambda 함수를 생성.
- API Gateway를 통해 해당 Lambda를 노출(
HTTP API → Lambda → Start EC2); API 호출 시 인스턴스가 시작됨.
문제점
- API Gateway 엔드포인트는 EC2 엔드포인트가 아니다. 인스턴스가 중지돼 있을 때:
- HTTPS 요청이 Lambda를 트리거하고 EC2 인스턴스를 시작한다.
- 인스턴스 부팅이 완료돼도 원래 요청은 애플리케이션으로 전달되지 않는다.
- 결과적으로 요청이 도착했을 때 EC2 인스턴스가 꺼져 있었기 때문에 요청이 사라진다.
질문
EC2 인스턴스 앞에 “프런트 도어”(프록시, ALB, API Gateway 등)를 두어 다음을 구현할 실용적인 방법이 있는가:
- 들어오는 HTTPS 요청이 인스턴스가 중지돼 있으면 시작하도록 트리거하고,
- 요청이 다음 중 하나가 되도록:
- 인스턴스가 준비되면 애플리케이션으로 전달, 또는
- “서비스가 시작 중이니 X초 후에 다시 시도해 주세요”와 같은 친절한 메시지로 응답.
고려한 옵션
- Application Load Balancer
- API Gateway + Lambda
- 리버스 프록시 구성
어떤 패턴이 가장 좋은지, 지연 시간, 복잡성, 사용자 경험 측면에서의 트레이드오프가 무엇인지 확신이 서지 않는다.
원하는 내용
- 권장 아키텍처 또는 기존 AWS 패턴.
- 구현 팁.
- 콜드 스타트 지연 시간 및 UX 고려 사항에 대한 의견.
감사합니다!