Article
AWS RDS 월 16,000달러를 8,000달러로 절감
스타트업의 성공과 함께 찾아오는 첫 번째 고민은 인프라 비용입니다. 특히 데이터베이스는 비즈니스 성장에 따라 기하급수적으로 비용이 증가합니다. 저희 팀이 AWS RDS 비용을 월 16,000달러에서 8,000달러로 줄인 과정을 공유합니다.





문제의 발생
예약관리 SaaS를 운영하면서 급격한 성장을 경험했습니다. 초기에 T 인스턴스로 충분했던 데이터베이스는:
- 순간 동시접속 1만 명을 넘어섬
- 업계 최고 점유율 달성
- MariaDB CPU 사용률 90% 상시 유지
가장 큰 문제는 인스턴스를 업그레이드해도 다음 달이면 또 다시 리소스가 부족해진다는 점입니다. 이는 서비스 코드의 비효율성이 근본 원인이었습니다:
- ORM으로 자동 생성된 비효율적 쿼리
- 미흡한 쿼리 최적화
- 무분별한 데이터베이스 접근
5가지 최적화 전략
1️⃣ 수직 확장(Upgrade)이 아닌 수평 확장(Read Replica)
핵심: 인스턴스 사양 업그레이드보다 읽기전용 복제본이 훨씬 경제적입니다.
우리 서비스는 읽기 80%, 쓰기 20% 비율이었기 때문에, AWS API를 활용하여 시간대별로 동적으로 읽기 DB를 추가했습니다:
새벽 (트래픽 저) → 읽기 DB 0개
업무시간 (트래픽 중) → 읽기 DB 2-3개
피크타임 (트래픽 고) → 읽기 DB 5개
이 방식은 인스턴스를 더 높은 사양으로 업그레이드하는 것보다 훨씬 저렴합니다.
2️⃣ 캐시를 모든 곳에 적용하기
통념: 데이터가 자주 변하면 캐시는 의미가 없다?
자세한 분석을 통해 다시 생각해야 합니다:
| 데이터 유형 | 변화 빈도 | 캐시 적용 | 효과 |
|---|---|---|---|
| 예약 제한 정보 | 자주 안 함 | ✅ 적용 | 매우 높음 |
| 사용자 프로필 | 가끔 | ✅ 적용 | 높음 |
| 실시간 예약 현황 | 매우 자주 | ❌ 미적용 | - |
결론: Redis/Memcached를 최대한 활용하되, 자주 변하지 않는 데이터부터 캐시화하세요.
3️⃣ Slow Query 찾기와 EXPLAIN 분석
ORM 프레임워크는 개발 속도를 높이지만, 생성되는 쿼리가 항상 최적화되어 있지 않습니다.
실제 조치:
- CloudWatch에서 Slow Query 로깅 활성화
- RDS 콘솔에서 실제 쿼리 확인
- EXPLAIN으로 실행 계획 분석
- 인덱스 최적화
Slow Query를 하나씩 개선하는 것만으로도 CPU 사용률을 20-30% 낮출 수 있습니다.
4️⃣ 목적에 맞는 데이터베이스 엔진 선택
관계형 데이터베이스가 만능은 아닙니다:
로그 데이터 → Document DB (MongoDB, DynamoDB)
캐시 데이터 → Redis, Memcached
정적 데이터 → S3 + CloudFront
트랜잭션 필수 → RDS (MariaDB, PostgreSQL)
일부 데이터를 다른 저장소로 이동하면 RDS의 부하를 줄이고 비용을 절감할 수 있습니다.
5️⃣ AWS 성능 개선 도우미(Performance Insights)
가장 강력한 도구: AWS 성능 개선 도우미는 투자할 가치가 있는 기능입니다.
분석해야 할 항목:
- 시간대별 부하: DB가 언제 가장 바쁜가?
- Active Sessions: 해당 시간에 얼마나 많은 세션이 활동 중인가?
- Top SQL: 어떤 쿼리가 부하를 일으키는가?
- Wait Events: 어디서 시간을 낭비하는가?
색깔로 표시된 문제 쿼리를 찾아 최적화하면 성능이 급격히 개선됩니다.
⚠️ 주의사항:
- Slow Query만 보면 안 됩니다 (빠르지만 자주 실행되는 쿼리도 누적되면 부하가 됨)
- 무분별한 인덱스 추가 시 index_merge 발생 가능
- EXPLAIN 결과를 꼼꼼히 검토하세요
마치며
AWS RDS 비용 최적화는 일회성 작업이 아닌 지속적인 모니터링 프로세스입니다. 최적화의 성공 요인은:
- 체계적 분석: 데이터로 문제를 파악
- 우선순위 선정: 가장 효과가 큰 것부터
- 지속적 개선: 한 번의 개선으로 끝내지 않기
급격한 성장 속에서 비용 폭발은 피할 수 없지만, 기술적 최적화를 통해 충분히 관리할 수 있습니다. 중요한 것은 문제를 인식하고 체계적으로 접근하는 태도입니다.
댓글