Art of Scalability

X축: 수평 확장

동일한 어플리케이션 인스턴스를 여러 대 추가하여 부하를 분산

  • 로드벨런싱 중요
  • 특정 부하가 늘어나도 동일한 인스턴스를 복제하여 대응 가능
  • 상태 유지 어플리케이션에서는 적용 어려움
  • DB 단일 장애 지점은 해결 X

Y축: 서비스 분할

시스템의 기능을 여러 개의 서비스로 분할

  • 각 서비스는 독립적으로 배포, 확장, 유지보수 가능
  • 특정 서비스만 확장하여 리소스 활용 최적화
  • 분산 시스템의 복잡성 증가

Z축: 데이터 분할

데이터를 여러 Shard로 나누어 저장하고 처리하는 방식

  • 데이터는 특정 기준(userID, geo)에 따라 분할
  • 대규모 데이터를 효과적으로 처리 가능
  • 분할 기준 설계가 어렵고, 데이터 일관성 및 동기화 관리가 어려움

X-Y-Z 상호작용과 조합

X축은 시스템의 처리량이 급격히 증가할 때 가장 먼저 적용 Y축은 트래픽 특성이 다를 때 혹은 개발 및 배포 속도를 개선하기 위해 사용 Z축은 데이터가 방대해지고 처리 병목이 발생할때 사용

서비스 성장 단계별 적용

초기 단계 : X축 확장을 통해 서버 부하 분산 성장 단계: Y축 서비스 분리를 통해 팀별 독립성과 기능 확장을 지원 대규모 데이터: Z축 데이터 분산 및 파티셔닝을 대규모 데이털 처리르 최적화