Art of Scalability
X축: 수평 확장
동일한 어플리케이션 인스턴스를 여러 대 추가하여 부하를 분산
- 로드벨런싱 중요
- 특정 부하가 늘어나도 동일한 인스턴스를 복제하여 대응 가능
- 상태 유지 어플리케이션에서는 적용 어려움
- DB 단일 장애 지점은 해결 X
Y축: 서비스 분할
시스템의 기능을 여러 개의 서비스로 분할
- 각 서비스는 독립적으로 배포, 확장, 유지보수 가능
- 특정 서비스만 확장하여 리소스 활용 최적화
- 분산 시스템의 복잡성 증가
Z축: 데이터 분할
데이터를 여러 Shard로 나누어 저장하고 처리하는 방식
- 데이터는 특정 기준(userID, geo)에 따라 분할
- 대규모 데이터를 효과적으로 처리 가능
- 분할 기준 설계가 어렵고, 데이터 일관성 및 동기화 관리가 어려움
X-Y-Z 상호작용과 조합
X축은 시스템의 처리량이 급격히 증가할 때 가장 먼저 적용 Y축은 트래픽 특성이 다를 때 혹은 개발 및 배포 속도를 개선하기 위해 사용 Z축은 데이터가 방대해지고 처리 병목이 발생할때 사용
서비스 성장 단계별 적용
초기 단계 : X축 확장을 통해 서버 부하 분산 성장 단계: Y축 서비스 분리를 통해 팀별 독립성과 기능 확장을 지원 대규모 데이터: Z축 데이터 분산 및 파티셔닝을 대규모 데이털 처리르 최적화