월 1,000만 원을 넘기던 AWS 비용을 30% 절감
배경
타임스프레드는 서버 비용으로 매달 1,000만 원 넘게 쓰고 있었습니다. 팀장님께서 이 비용을 줄일 방법을 찾아보자고 하셨습니다.
어디에 돈이 나가고 있는가
Cost Management 에서 확인해보니 비용이 가장 많이 나가는 곳은 세 군데였습니다.
- RDS
- Beanstalk (EC2)
- 네트워크 트래픽
RDS 는 이미 부하가 높아 손댈 여지가 없었으므로, EC2 에서 줄일 곳을 찾았습니다. 마침 ARM 계열의 Graviton 인스턴스가 새로 나왔고, 같은 성능을 20% 정도 싸게 낼 수 있다는 AWS 의 발표를 보고 우리 서비스에 적용해보기로 했습니다.
Graviton 으로 옮기기
먼저 Graviton 인스턴스를 한 대 만들어 서버를 띄워봤습니다. 운영체제 버전과 아키텍처가 바뀌어 기존 방식으로는 뜨지 않았지만, 다행히 Dockerfile 로 빌드하니 ARM 아키텍처에서도 안정적으로 동작했습니다. 그래서 기존 CI/CD 파이프라인을 고쳐 GitHub Actions 에서 크로스 빌드로 ARM 이미지를 만들게 했고, Graviton 인스턴스로 도는 Beanstalk 을 새로 만들어 그 이미지를 쓰게 했습니다.
테스트 서버에서 QA 팀과 함께 서버가 제대로 도는지 확인했고, 아무 문제가 없었습니다. Route 53 의 가중치 라우팅으로 새 서버에 트래픽의 10% 만 흘려보냈고, 큰 문제가 나오지 않아 최종적으로 모든 트래픽을 Graviton 인스턴스가 받도록 했습니다.
인스턴스 증감 규칙 다시 잡기
며칠 뒤에는 CPU 사용량 데이터를 보고 시간대별 스케일 아웃 규칙을 조정했습니다. 피크 타임에 최대 12대까지 늘어나던 인스턴스를 8대로 줄였고, 야간에는 1대만 돌게 했습니다. 인스턴스 교체와 스케일 규칙 조정을 합쳐 비용을 30% 정도 줄일 수 있었습니다.