Intercom은 2013년부터 2024년까지 급격한 성장에 맞춰 다양한 데이터베이스 스케일링 전략을 단계적으로 도입했습니다.
Intercom의 데이터베이스 스케일링 여정
-
2013: 수직 스케일링: AWS RDS를 통해 더 큰 인스턴스로 업그레이드하여 초기 데이터베이스 용량 문제를 해결하고 성장을 위한 여유를 확보했습니다.
-
2014: 기능별 수평 샤딩: 신규 기능의 대규모 데이터 생성을 예측하여 전용 데이터베이스를 생성, 데이터 분리 및 스케일링 유연성을 높였습니다. 초기 Rails의 다중 데이터베이스 지원은 미흡했습니다.
-
2015: 애플리케이션 계층 캐싱 (
Identity CacheGem): 피크 시간대 데이터베이스 CPU 100% 문제를 해결하고자Identity CacheGem을 도입, 고빈도 쿼리를 캐싱하여 서비스 가용성을 확보했습니다. 현재 1,000만 건의 쿼리를 캐시에서 처리합니다. -
2017: 읽기 복제본 활용: 메인 데이터베이스의 부하를 분산하기 위해
MaraGem을 이용해 읽기 쿼리를 복제본으로 라우팅하고 일관성을 보장했습니다. 이후 Rails 자체 지원으로 전환했습니다. -
2019: 테이블별 수평 샤딩: 250억 개 행의
conversations테이블 마이그레이션 어려움을 해결하고자 고객별로 테이블을 분할하여 스키마 변경 관리 용이성을 높였습니다. -
2024: PlanetScale 마이그레이션: Amazon Aurora 2 EOL 및 다운타임 위험에 대응하여 PlanetScale(Vitess 기반)으로 전환했습니다. 이는 제로 다운타임 업그레이드와 통합 샤딩 관리를 제공하여 운영 효율성을 극대화했습니다.