253 lines
6.9 KiB
Markdown
253 lines
6.9 KiB
Markdown
# 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. 고가용성 모니터링 체계 구축
|
|
```
|