AWS 비용 월 50만원 줄인 방법
별것 아닌 설정 변경 몇 가지로 AWS 비용을 크게 줄인 실제 경험담.
월 180만원짜리 청구서를 열어본 순간
회사 경비 정리를 하다가 AWS 청구서를 열었다. 자동결제로 나가고 있어서 자세히 들여다본 적이 없었는데. 월 180만원. DAU 3천 명짜리 B2B SaaS인데 월 180만원이라니.
뭔가 심하게 잘못되고 있었다.
테스트용 인스턴스가 3개월째 켜져 있었다
Cost Explorer를 켜서 서비스별로 비용을 쪼개봤다. EC2가 전체의 45%를 차지하고 있었다. 인스턴스 목록을 보니 3개월 전에 테스트용으로 띄운 t3.xlarge가 2대나 돌아가고 있었다. CPU 사용률 0.3%.
이걸 끄는 것만으로 월 16만원이 절약됐다. 슬랙에 "누가 이거 띄운 거예요?"라고 물어봤더니 아무도 모른다고 했다.
(부끄럽지만 놀랍도록 흔한 실수다.)
RDS가 너무 비싼 옷을 입고 있었다
db.r5.xlarge로 운영하던 RDS를 점검했다. CloudWatch에서 CPU 평균 사용률 12%. 메모리도 32GB 중 8GB만 쓰고 있었다.
db.r5.large로 다운그레이드했다. 비용이 월 35만원에서 18만원으로 줄었다. 2주간 모니터링했는데 성능 차이 없었다. 처음부터 왜 xlarge를 썼는지도 모르겠다.
S3에 2년치 로그가 쌓여 있었다
S3에 로그 파일을 쌓고 있었는데, 라이프사이클 정책이 없었다. 2년치 로그가 Standard 스토리지에 그대로. 총 2.3TB.
90일 이후는 Glacier로 전환, 365일 이후는 삭제하는 정책을 걸었다. 월 8만원이던 S3 비용이 2만원으로.
NAT Gateway가 숨은 킬러였다
이게 진짜 몰랐다. NAT Gateway가 월 15만원을 먹고 있었다.
Private Subnet의 Lambda 함수들이 외부 API를 호출할 때마다 NAT Gateway를 경유하고 있었고, 데이터 처리량 비용이 쌓이고 있었다. VPC Endpoint를 추가하고, 외부 호출이 필요 없는 Lambda는 VPC에서 빼냈다. 월 11만원 절약.
NAT Gateway 비용을 간과하는 사람이 정말 많은데, 반드시 확인해봐야 한다.
예약 인스턴스, 왜 안 하고 있었는지
프로덕션 서버는 24시간 돌아가는 게 확실하니까 1년 예약 인스턴스로 전환했다. On-Demand 대비 40% 할인. Savings Plans도 함께 적용했다. 합쳐서 월 12만원 추가 절약.
사실 이건 진작 했어야 하는 건데 그냥 귀찮아서 안 한 거였다.
결과: 이틀 일하고 월 52만원 절약
180만원이던 월 비용이 128만원으로 줄었다. 정확히 52만원. 작업에 투자한 시간은 이틀 정도. 거창한 아키텍처 변경 같은 게 아니라 안 쓰는 리소스를 끄고 적정 스펙을 찾은 거다.
이후로 매달 첫째 주에 AWS 비용 리뷰를 한다. 10분이면 충분하다. Budget Alert도 걸어서 예상 비용이 임계치를 넘으면 슬랙으로 알림이 오게 했다.
(클라우드 비용은 관심을 끄는 순간 눈덩이처럼 불어난다.)