AWS 요금 폭탄 방지 방법: 30분 만에 비용을 절감한 실전 꿀팁
예상치 못한 AWS 청구서에 깜짝 놀라신 적 있으신가요? 저는 작년에 개인 프로젝트를 진행하며 AWS 요금 폭탄을 맞고 정신을 차렸습니다. 개발에만 몰두하다 보니 생성해 둔 리소스가 쌓여 있다는 사실을 잊고 있었고, 결국 예산의 3배에 달하는 청구서를 받아들여야 했습니다. 당황스러웠지만 곧바로 문제를 파고들었고, 약 30분 만에 클라우드 비용 구조를 정리할 수 있었습니다. 이 글에서는 제가 그날 실제로 적용한 구체적인 방법과 함께 비용을 효과적으로 통제할 수 있는 실질적인 전략을 공유합니다. AWS 비용 최적화(Cost Optimization)를 고민하는 분께 특히 도움이 될 것입니다.
핵심 요약: 이 글에서 다루는 5가지 핵심 전략
① 쓰지 않는 리소스는 즉시 종료(EC2, RDS 등)
② 스토리지 비용 절감을 위한 수명주기 정책 활용
③ 예약 인스턴스 & 세이빙 플랜으로 고정 비용 절감
④ S3 Intelligent-Tiering을 통한 자동 등급 전환
⑤ 예산 알람과 이상 감지 설정으로 재발 방지
1. 폭탄의 원인은 바로 ‘방치된 리소스’
제가 받아든 청구서를 분석해 보니, 비용의 60% 이상이 수개월 동안 단 한 번도 사용하지 않은 EC2 인스턴스와 EBS 볼륨에서 발생했습니다. 개발 테스트 후 종료했다고 생각했지만, 일부 인스턴스는 중지(Stop) 상태였고, EBS 볼륨은 삭제해야 하는데 그대로 방치되어 비용이 계속 청구되고 있었습니다.
가장 빠른 해결 방법: AWS 콘솔의 Cost Explorer에 접속해 서비스별 사용량을 상위 5개로 정렬했습니다. 그리고 매일 비용이 발생하는 모든 리소스를 하나씩 점검했습니다.
주의할 점: EC2 인스턴스를 중지(Stop)해도 연결된 EBS 볼륨과 탄력적 IP(Elastic IP) 비용은 계속 발생할 수 있습니다. 더 이상 사용하지 않는 리소스는 중지가 아니라 종료(Terminate) 또는 삭제(Delete)해야 합니다.
2. 첫 번째 꿀팁: 이름표(Tag) 붙이기부터 시작하세요
비용 분석의 첫 단계는 ‘무엇에 쓰는 리소스인지’ 알 수 있어야 합니다. AWS에서 지원하는 비용 할당 태그(Cost Allocation Tag)를 활용하면 리소스별 용도를 즉시 파악할 수 있습니다. 저는 이 태그를 활용하여 다음 기준으로 리소스를 분류했습니다.
2.1 태그 정리 규칙
- Name: 프로젝트명 또는 서비스명(예: dev-backend-01)
- Environment: dev / staging / production
- Owner: 담당자 이메일
- AutoOff: true / false(자동 종료 여부)
이 태그 정보를 바탕으로 프로덕션(Production) 환경이 아닌 리소스는 즉시 종료하거나 삭제했습니다. 특히 개발(Dev) 환경에서 테스트 후 방치된 인스턴스는 야간 및 주말에 자동으로 중지되도록 인스턴스 스케줄러를 설정해 두었습니다. 이 간단한 작업만으로도 전체 비용의 약 30%를 절감할 수 있었습니다.
실전 팁: Cost Explorer의 그룹화 기준을 태그로 지정하면 어떤 프로젝트나 환경에서 비용이 많이 발생하는지 한눈에 확인할 수 있습니다. AWS 콘솔에서 비용 할당 태그를 활성화한 뒤 팀 전체가 필수 태그를 붙이는 규칙을 정해 두세요.
3. 두 번째 꿀팁: 스토리지 등급(Storage Class)을 현명하게 활용
EC2와 EBS 비용을 정리하고 나니, 이번에는 S3 스토리지에서 비용이 발생하고 있음을 발견했습니다. 수백 GB에 달하는 로그 파일과 백업 파일이 1년 넘게 기본 스토리지 클래스인 S3 Standard에 저장되어 있었습니다. 자주 액세스하지 않는 데이터를 비싼 등급에 보관하고 있었던 셈입니다.
이 문제를 해결하기 위해 S3 Intelligent-Tiering을 도입했습니다. 이 기능은 액세스 빈도에 따라 데이터를 자동으로 자주 사용하는 등급과 드물게 사용하는 등급으로 전환해 주기 때문에, 수동으로 전환 정책을 관리할 필요가 없습니다.
| 스토리지 옵션 | 월 스토리지 비용(1TB 기준) | 장점 | 단점 |
|---|---|---|---|
| S3 Standard | 약 $23 | 빠른 액세스 속도, 높은 내구성 | 비용이 가장 높음 |
| S3 Intelligent-Tiering | 약 $12.5 + 모니터링 비용 | 자동 등급 전환, 관리 불필요 | 모니터링 수수료 발생 |
| S3 Glacier Instant Retrieval | 약 $4 | 매우 저렴, 밀리초 단위 액세스 | 자주 액세스하면 비용 증가 |
위 표에서 볼 수 있듯이, 액세스 빈도가 낮은 데이터를 Glacier 또는 Intelligent-Tiering으로 전환하는 것만으로도 스토리지 비용을 절반 이하로 줄일 수 있었습니다. 저의 경우 모든 로그 파일을 Intelligent-Tiering으로 전환했고, 최신 백업 데이터만 S3 Standard에 유지했습니다. 그 결과 스토리지 비용이 약 55% 감소했습니다.
수명주기 정책 응용: S3 Lifecycle 규칙을 이용하면 생성된 지 30일이 지난 로그는 Intelligent-Tiering으로, 90일이 지난 로그는 Glacier로 자동 전환되도록 설정할 수 있습니다. 이렇게 하면 매번 수동으로 등급을 바꾸지 않아도 비용을 줄일 수 있습니다.
4. 세 번째 꿀팁: 예약 인스턴스(RI)와 세이빙 플랜 활용
항상 가동해야 하는 웹 서버와 데이터베이스 서버는 온디맨드(On-Demand)로 사용할 경우 연간 비용이 매우 높습니다. AWS는 일정 기간(1년 또는 3년) 사용을 약정하는 대신 할인율을 제공합니다. 이것이 바로 예약 인스턴스(Reserved Instance) 또는 세이빙 플랜(Savings Plan)입니다.
제가 운영하는 서비스는 24시간 내내 가동되어야 했기 때문에, 온디맨드로 사용하는 대신 세이빙 플랜을 구매했습니다. 1년 선불로 결제했을 때 약 40%의 할인율을 적용받았습니다.
4.1 세이빙 플랜 vs 예약 인스턴스 비교
| 구분 | 예약 인스턴스(RI) | 세이빙 플랜 |
|---|---|---|
| 적용 범위 | 특정 인스턴스 유형 및 리전에 고정 | 인스턴스 패밀리와 리전 내에서 유연하게 적용 |
| 할인율 | 비슷함(약 30~40%) | 비슷함(약 30~40%) |
| 유연성 | 낮음(인스턴스 변경 불가) | 높음(패밀리 내 변경 가능) |
운영 중인 인스턴스 유형이 자주 변경되는 경우에는 세이빙 플랜이, 완전히 고정된 사양을 사용한다면 예약 인스턴스가 더 적합합니다. 다만 두 상품 모두 일정 기간 사용을 약정해야 하므로, 구매 전에 Cost Explorer에서 현재 사용량과 향후 워크로드를 먼저 확인하는 것이 좋습니다.
구매 전 체크리스트: ① 현재 온디맨드 사용량이 24시간 365일 꾸준한지, ② 인스턴스 패밀리 변경 가능성이 낮은지, ③ 1년/3년 약정 비용과 절감액을 비교했는지 확인하세요. 예약 상품은 자동으로 비용을 줄여 주는 도구가 아니라, 예측 가능한 사용량을 가진 리소스에 적용할 때 효과적입니다.
5. 추가 꿀팁: 예산 알람과 주기적인 점검
이제 모든 리소스를 정리했으니, 다시 비용이 급증하지 않도록 방어 체계를 구축해야 합니다. AWS는 예산(Budget) 기능을 제공하며, 설정한 금액에 도달하거나 초과할 경우 이메일 및 문자 알림을 보내줍니다.
저는 월별 예산을 $100로 설정하고, 80% 사용 시 1차 알림, 100% 사용 시 2차 알림이 오도록 설정했습니다. 또한 Cost Anomaly Detection 기능을 활용하여 예상치 못한 비용 급증이 발생하면 즉시 알림을 받도록 했습니다.
실전 팁: AWS Lambda와 CloudWatch Events를 조합하면 사용량이 적은 시간대(예: 매일 새벽 1시)에 개발/테스트 서버를 자동으로 중지시키고, 오전 8시에 재시작하는 서버 스케줄링을 구성할 수 있습니다. 야간·주말 동안 불필요하게 실행되는 컴퓨팅 리소스를 줄이면 비용 절감 효과를 기대할 수 있습니다.
추가 설정: 예산 알림은 AWS Free Tier 계정에서도 적용할 수 있습니다. 첫 청구서를 받기 전에 월별 예산을 낮게 잡아 두면, 비용이 예상을 벗어나는 순간 바로 대응할 수 있습니다.
6. 결론: 비용 최적화는 선택이 아닌 필수
AWS 비용 최적화는 한 번에 끝나는 작업이 아닙니다. 클라우드 리소스는 계속 생성되고 삭제되기 때문에 주기적인 점검이 필수입니다. 위에서 소개한 5가지 핵심 전략(리소스 정리, 태그 관리, 스토리지 등급 전환, 예약 인스턴스/세이빙 플랜, 예산 알람)을 꾸준히 적용하면 반복되는 비용을 줄일 수 있습니다. 저는 이 30분의 투자 덕분에 매달 부담스러웠던 고정 비용을 합리적인 수준으로 낮출 수 있었습니다. 지금 AWS 콘솔을 열어 Cost Explorer부터 확인해 보세요. 생각보다 많은 비용이 새고 있을지도 모릅니다.
