Files
Obsidian/ZELLYY/zellyy core/high-availability.md
2025-03-26 18:16:46 +09:00

6.9 KiB

ZELLYY Core 고가용성 아키텍처

개요

이 문서는 ZELLYY Core 시스템의 고가용성(High Availability, HA) 아키텍처에 대해 설명합니다. 서비스 중단 없이 안정적으로 운영하기 위한 설계 원칙과 구현 방안을 제시합니다.

고가용성 설계 원칙

1. 단일 장애점(Single Point of Failure) 제거

인프라 중복성

  • 여러 가용 영역(AZ)에 걸친 서비스 배포
  • 서버, 네트워크, 스토리지 컴포넌트 중복 구성
  • 데이터베이스 클러스터 구성

장애 격리

  • 장애 도메인 분리
  • 서비스 간 독립적 배포 및 운영
  • 컨테이너화를 통한 애플리케이션 격리

2. 자동화된 장애 대응

자동 장애 감지

  • 상태 확인(Health Check) 시스템 구축
  • 분산 모니터링으로 장애 조기 감지
  • 이상 징후 탐지 알고리즘 적용

자동 복구 메커니즘

  • 자가 치유(Self-healing) 시스템 구현
  • 상태가 불량한 서버 자동 대체
  • 서비스 재시작 및 재배포 자동화

멀티 리전 아키텍처

글로벌 배포 전략

             +--------------------+
             |  DNS Load Balancer |
             +--------+-----------+
                      |
       +-------------------------------+
       |              |               |
+------v-----+  +-----v------+  +-----v------+
| Region A   |  | Region B   |  | Region C   |
| (Primary)  |  | (DR Site)  |  | (Edge)     |
+------+-----+  +-----+------+  +-----+------+
       |              |               |
       +-------------------------------+
                      |
             +--------v-----------+
             | Global Data Sync   |
             +--------------------+

리전별 서비스 특성화

  • 주 리전(Primary): 모든 서비스 및 데이터 처리
  • 재해 복구(DR) 리전: 장애 대비 복제 환경
  • 엣지 리전: 정적 콘텐츠 및 캐싱

글로벌 트래픽 관리

  • 지리적 라우팅으로 가장 가까운 리전으로 트래픽 유도
  • 리전 장애 시 자동 우회 라우팅
  • 부하에 따른 동적 트래픽 분산

데이터 동기화 전략

글로벌 데이터 일관성

  • 멀티 리전 데이터베이스 복제
  • 데이터 일관성 모델 선택 (강한 일관성 vs. 최종 일관성)
  • 분산 트랜잭션 관리

복제 지연 관리

  • 복제 지연 모니터링
  • 지연 임계값 설정 및 알림
  • 복제 최적화 전략

서비스 연속성

장애 조치(Failover) 전략

자동 장애 조치

1. 상태 모니터링 시스템이 장애 감지
2. 장애 발생 리전/서비스 격리
3. 대기 시스템으로 트래픽 전환
4. 장애 리전/서비스 복구 시도
5. 복구 완료 후 정상 운영 재개

수동 장애 조치

  • 계획된 유지보수를 위한 수동 장애 조치 절차
  • 테스트 환경에서 장애 조치 시뮬레이션
  • 장애 조치 체크리스트 및 롤백 계획

재해 복구 계획(DRP)

복구 시나리오

  • 단일 서비스 장애: 개별 서비스 재시작 또는 대체
  • 가용 영역 장애: 다른 AZ의 인스턴스로 자동 전환
  • 리전 장애: DR 리전으로 서비스 전환
  • 광범위한 재해: 백업에서 새 환경 구축

복구 목표

  • 복구 시간 목표(RTO): 서비스별 차등 적용
    • 핵심 서비스: 5분 이내
    • 일반 서비스: 15분 이내
    • 비핵심 서비스: 1시간 이내
  • 복구 지점 목표(RPO): 데이터 중요도에 따라 차등 적용
    • 핵심 데이터: 거의 실시간 (1분 이내)
    • 일반 데이터: 5분 이내
    • 통계/로그 데이터: 1시간 이내

데이터베이스 고가용성

Supabase PostgreSQL HA 구성

PostgreSQL 클러스터 구성

  • 1 Primary + 2 Replica 구성
  • 자동 장애 조치 설정
  • 연결 풀 관리

백업 전략

  • 일간 전체 백업
  • 지속적인 WAL(Write-Ahead Log) 아카이빙
  • Point-in-Time Recovery(PITR) 지원

다중 데이터베이스 전략

데이터베이스 샤딩

  • 사용자 ID 기반 수평 샤딩
  • 서비스별 수직 샤딩
  • 샤드 관리 및 라우팅 시스템

읽기/쓰기 분리

  • 쓰기 작업은 Primary로 라우팅
  • 읽기 작업은 Replica로 분산
  • 읽기 일관성 레벨 설정

애플리케이션 고가용성

무상태(Stateless) 설계

세션 관리

  • 분산 세션 스토어(Redis) 활용
  • 클라이언트 측 상태 관리 최소화
  • JWT 기반 인증으로 서버 상태 의존성 감소

캐싱 전략

  • 다층 캐싱 구현
  • 캐시 일관성 유지
  • 캐시 장애 대응 전략

API 게이트웨이 고가용성

API 게이트웨이 클러스터

  • 여러 가용 영역에 분산 배치
  • 로드 밸런싱 및 자동 확장
  • 장애 감지 및 자동 복구

서비스 디스커버리

  • 동적 서비스 등록 및 발견
  • 상태 기반 라우팅
  • 서비스 버전 관리

스토리지 고가용성

파일 스토리지 중복성

객체 스토리지 복제

  • 리전 내 여러 가용 영역에 걸친 복제
  • 리전 간 비동기 복제
  • 버저닝 기반 데이터 보호

콘텐츠 분산 전략

  • CDN을 통한 정적 콘텐츠 캐싱
  • 원본 대체(Origin Shield) 구현
  • 장애 시 대체 경로 제공

데이터 지속성 보장

데이터 내구성 목표

  • 99.999999999%(11 9's) 이상의 데이터 내구성
  • 다중 계층 데이터 보호
  • 일관된 백업 및 복원 절차

데이터 검증

  • 체크섬 기반 데이터 무결성 검증
  • 정기적인 복원 테스트
  • 데이터 감사 및 모니터링

모니터링 및 운영

고가용성 모니터링

실시간 상태 대시보드

  • 서비스 가용성 지표
  • 리전 및 가용 영역 상태
  • SLA 준수 모니터링

분산 로깅 시스템

  • 중앙 집중식 로그 수집
  • 로그 분석 및 알림
  • 장애 패턴 탐지

사전 예방적 운영

용량 계획

  • 정기적인 성능 검토
  • 성장 추세 분석
  • 확장 계획 수립

정기 유지보수

  • 계획된 유지보수 일정
  • 영향 최소화 전략
  • 무중단 배포 절차

테스트 및 검증

고가용성 테스트

정기적인 DR 훈련

  • 분기별 재해 복구 시뮬레이션
  • 장애 조치 절차 훈련
  • 복구 시간 측정 및 개선

카오스 엔지니어링

  • 제어된 환경에서 장애 주입
  • 시스템 복원력 테스트
  • 장애 대응 개선

성능 테스트

부하 테스트

  • 정상 부하의 3-5배 처리 검증
  • 자동 확장 기능 테스트
  • 병목 현상 식별 및 해결

장기 실행 테스트

  • 장기간(7일 이상) 연속 운영 테스트
  • 메모리 누수 및 성능 저하 모니터링
  • 자원 사용 패턴 분석

다음 단계

  1. 현재 시스템의 고가용성 수준 평가
  2. 주요 단일 장애점 식별 및 제거 계획 수립
  3. 멀티 리전 아키텍처 설계 및 구현
  4. 자동 장애 조치 시스템 개발
  5. 종합적인 재해 복구 계획 수립 및 테스트
  6. 고가용성 모니터링 체계 구축