강의

멘토링

로드맵

Inflearn brand logo image

인프런 커뮤니티 질문&답변

Jung Su Kim님의 프로필 이미지
Jung Su Kim

작성한 질문수

실리콘밸리 빅테크 29개의 실습으로 배우는 시스템 디자인 설계

Spotify 스포티파이 음악 스트리밍 서비스 시스템 디자인 및 스케일링 [업데이트 예정]

Spotify 서비스 시스템 디자인 및 스케일링에서 백업 클러스터 사용에 대한 문의

해결된 질문

작성

·

67

0

시스템 디자인 관련 질문

  • 강의 말미에 서비스 fail 시에 use backup clusters로 언급만하고 넘어가셨는데 좀 더 자세하게 설명 부탁드리겠습니다

    • fail 되는 특정 시점을 기준으로 내부의 시스템들이 어떻게 동작하는지 궁금합니다

    • fail에서 정상으로 복구하게 되면 어떤 절차에 따라서 다시 원래의 서비스로 전환되는지도 궁금합니다 

답변 2

1

미국달팽이님의 프로필 이미지
미국달팽이
지식공유자

안녕하세요. Jung Su Kim 님, 

우선 강의를 수강해주셔서 진심으로 감사드립니다. 

정말 좋은 질문을 해주셔서 기쁩니다. 제가 강의에서 서비스 복구 방안으로 백업 클러스터를 언급 하였지만 자세히 설명 드리지 못했던 점에 대해 죄송한 말씀드립니다. 추후 강의 개선에서 피드백을 반영 하도록 하겠습니다. 

먼저 백업 클러스터 개념에 대해 말씀드리면, 메인 클러스터가 장애를 겪고 있을 때 서비스를 지속적으로 사용자에게 제공하기 위한 복구 시스템입니다. 스포티파이와 같은 대규모 서비스에서는 데이터의 무결성과 낮은 지연시간 그리고 고가용성이 중요하기 때문에 백업 클러스터를 설계할 때 실시간 또는 비동기 방식으로 메인 클러스터와 데이터 상태를 유지하는 데이터 동기화, 지리적 장애에 대비해 물리적으로 다른 지역에 배치하고, 트래픽 증가에 대응할 수 있는 성능과 용량을 준비합니다.

그래서 먼저 서비스의 장애를 감지를 하여야 합니다. 그러기 위해서 시스템의 Health Check 및 모니터링 도구를 통해서 장애를 감지하고, 로드밸런서 또는 DNS 를 통해 응답 실패율과 지연시간에 대한 수치 증가를 탐지하여야 합니다. 

이후, Failover 단계로 장애가 확인되면 메인 클러스터로의 트래픽을 중단하고 백업 클러스터로 라우팅을 합니다. 이를 위해서 DNS 스위칭 또는 로드밸런서의 백업풀이 활성화 되어야 합니다. 백업 클러스터 활성화 트리거를 시켜주는 것이라고 보시면 됩니다. 데이터베이스 Read Replica 에서 master 로 전환, 캐시 또는 메세지 큐 복구, 사용자 세션 재연결 및 인증과 같은 백업 클러스터 활성화 단계를 진행하게 됩니다. 

Failback 단계인 메인 클러스터가 복구된 이후에는 시스템의 상태를 백업 클러스터와 비교하여, 데이터 정합성 검증 및 복제 완료를 확인합니다. 트래픽 라우팅을 메인 클러스터로 재설정하게 되며, 로드밸런서 또는 DNS 레코드를 초기 상태로 복원하게 됩니다. 

모든 트래픽이 정상적으로 메인 클러스터로 이동하고 백업클러스터가 비활성화 상태로 돌아가도록 확인, 로그와 모니터링 데이터 분석으로 문제 발생 지점을 검토하여 원인을 분석합니다. 

감사합니다.

0

안녕하세요, 인프런 AI 인턴입니다. Jung Su Kim님께서 질문하신 Spotify 서비스의 시스템 디자인에서 백업 클러스터 사용 및 전환에 대한 방안에 대해 설명드리겠습니다.

백업 클러스터 사용

  1. 백업 클러스터의 역할:

    • 백업 클러스터는 주 클러스터가 장애(Fail) 상황에 놓였을 때 서비스의 연속성을 보장하기 위해 사용됩니다. 이러한 클러스터는 주 클러스터와 동일하거나 유사한 컴퓨팅 자원으로 구성되어 있어 빠른 전환이 가능합니다.
    • 주요 장점은 가용성을 높이고 장애로 인한 서비스 중단 시간을 최소화하는 것입니다.
  2. 서비스 Fail 시 동작:

    • Fail 감지: 주 클러스터가 장애 상태가 되면 시스템 모니터링 도구나 헬스 체크 메커니즘을 통해 이를 감지합니다.
    • 자동 전환: 장애 발생이 확정되면 트래픽 라우터나 로드 밸런서가 백업 클러스터로 트래픽을 자동으로 전환합니다.
    • 데이터 동기화: 백업 클러스터로 전환하기 전에 장애 발생 이전 시점의 데이터를 백업되거나 스트리밍하는 형태로 동기화하여 데이터 일관성을 유지합니다.
  3. 복구 및 원래 서비스로의 전환:

    • 장애 복구: 주 클러스터의 문제를 수정한 후, 주 클러스터의 상태가 안정적인지 헬스 체크를 통해 지속적으로 모니터링합니다.
    • 트래픽 전환: 주 클러스터가 복구되었다면 트래픽 라우터가 다시 주 클러스터로 트래픽을 전환합니다.
    • 데이터 리컨실리드: 전환 과정에서 백업 클러스터에서 변경된 데이터를 주 클러스터에 반영하여 데이터 일관성을 유지합니다.

추가 리소스

더 나은 이해를 위해 유사한 시스템 디자인과 백업 클러스터 활용에 대한 실제 사례 및 상세한 방법론을 다루는 자료를 참조하실 수 있습니다:
- “시스템 디자인에서 고가용성을 위한 백업 및 복구 전략”

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

Jung Su Kim님의 프로필 이미지
Jung Su Kim

작성한 질문수

질문하기