
처음 AWS 계정을 만들고 서비스를 운영하면서, 별생각 없이 인스턴스를 켜놓고 리소스를 정리하지 않은 채 몇 달이 지나자 매달 청구서에 20만 원 이 찍혀 있었습니다. 트래픽이 크게 늘어난 것도 아닌데 왜 이렇게 많이 나오는지 원인을 하나씩 뜯어본 끝에, 지금은 같은 서비스를 월 10만 원 수준으로 운영하고 있습니다. 이 글에서는 실제로 어떤 항목에서 비용이 새고 있었는지, 그리고 무엇을 바꿔서 줄였는지 청구서를 기준으로 정리합니다.
요금 폭탄의 원인 분석
청구서(Billing → Cost Explorer)를 서비스별로 쪼개보니 비용이 새는 지점은 크게 네 가지였습니다.
- EC2 인스턴스 과다 프로비저닝 — 트래픽 대비 과도하게 큰 인스턴스 타입을 상시로 켜둔 상태
- 미사용 EBS 볼륨/스냅샷 — 삭제한 인스턴스에 딸려 있던 볼륨과 오래된 스냅샷이 계속 과금
- NAT Gateway 상시 가동 — 시간당 과금 + 데이터 처리 비용이 생각보다 큰 비중을 차지
- 불필요한 데이터 전송(Data Transfer OUT) — 리전 간 전송, 퍼블릭 전송 비용 누적

실제로 시도한 5가지 절감 방법
- 인스턴스 라이트사이징(Right-sizing) — CloudWatch로 2주간 CPU/메모리 사용률을 확인한 뒤, 실사용률이 낮은 인스턴스를 한 단계 낮은 타입으로 교체했습니다.
- Savings Plans 적용 — 상시 가동이 확실한 인스턴스에 한해 1년 약정 Compute Savings Plans로 전환했습니다.
- 미사용 리소스 정리 — 연결되지 않은 EBS 볼륨, 90일 지난 스냅샷, 사용하지 않는 Elastic IP를 스크립트로 찾아 일괄 삭제했습니다.
- NAT Gateway → VPC 엔드포인트 전환 — S3·DynamoDB 등 AWS 내부 서비스로 가는 트래픽은 NAT를 거치지 않도록 Gateway 엔드포인트로 우회시켰습니다.
- S3 Lifecycle 정책 적용 — 오래된 로그·백업 객체를 Glacier로 자동 전환하도록 설정했습니다.
Before / After 비교 (예시 서식)
| 항목 | 절감 전 (예시) | 절감 후 (예시) |
|---|---|---|
| EC2 | 220,000원 | 70,000원 |
| EBS/스냅샷 | 60,000원 | 15,000원 |
| NAT Gateway | 80,000원 | 20,000원 |
| 데이터 전송 | 40,000원 | 15,000원 |
| 합계 | 400,000원 | 120,000원 |
※ 표의 수치는 형식 예시입니다. 실제 Cost Explorer 캡처 화면과 본인의 청구서 금액으로 교체하세요.

적용해보니 주의할 점
- Savings Plans는 약정 기간 동안 해지가 어려우므로, 최소 3개월 이상 사용 패턴을 확인한 뒤 적용하는 것이 안전합니다.
- 인스턴스를 줄일 때는 트래픽 피크 시간대 지표도 함께 확인해야 서비스 장애로 이어지지 않습니다.
- 리소스 정리 스크립트는 실행 전 반드시 대상 목록을 사람이 한 번 더 확인하는 단계를 두는 것을 추천합니다.
마치며
같은 서비스라도 리소스를 어떻게 운영하느냐에 따라 비용 차이가 3배 넘게 날 수 있다는 것을 직접 겪어보고 알게 되었습니다. 특히 EC2 자체보다 NAT Gateway와 미사용 리소스처럼 눈에 잘 띄지 않는 항목에서 비용이 새는 경우가 많으니, Cost Explorer를 통해 항목별로 뜯어보는 과정이 가장 중요했습니다.
0