GH GambleHub

다운 타임 제로 배포

(섹션: 아키텍처 및 프로토콜)

1) 제로 다운 타임 인 이유와 필요한 이유

ZDT (Zero-Downtime) 는 사용자가 서비스를 이용할 수없고 요청을 잃지 않고 새로운 버전의 응용 프로그램을 출시하는 방법입니다. 목표:
  • 고객 및 통합을위한 다운 타임 제로.
  • 예측 가능한 릴리스, 빠른 롤백 및 관리 가능한 위험.
  • 계약 경계 내에서 SLO/SLI (대기 시간, 오류, 가용성) 보존.

ZDT의 핵심은 하나의 "매직" 기술이 아니라 전달 패턴, 데이터 호환성 및 유능한 트래픽 라우팅의 조합입니다.

2) 기본 제로 다운 타임 원칙

1. 버전 호환성: 새 버전과 이전 버전은 트래픽과 데이터를 동시에 올바르게 처리해야합니다.
2. 운영의 이념성: 재 처리가 상태를 깨뜨리지 않아야합니다.
3. 우수한 셧다운 및 연결 배수.
4. 단계별 건강 검진: 준비/활력 검사, 건강 종점.
5. 일류 시민으로서의 롤백: 롤백은 핫픽스보다 쉽고 빠릅니다.
6. 설계 별 관찰 가능성: 릴리스 마크, 단일 대시 보드, SLO 경고.
7. 자동화: 릴리스 및 롤백 시나리오는 수동 명령어가 아닌 코드입니다.

3) 다운 타임없는 배송 패턴

3. 1 롤링 업데이트

이전 버전의 인스턴스 중 일부를 트래픽에서 점차적으로 제거하고 새 버전으로 업데이트 한 다음 풀로 되돌립니다.

전문가: k8/ASG의 인프라 경제적.
단점: 클러스터는 동시에 두 가지 버전으로 작동합니다 (버전 왜곡).

3. 2 청록색

활성 (파란색) 과 후보 (녹색) 의 두 가지 전체 내용. 트래픽 전환-원자 플립.

장점: 인스턴트 롤백, 깨끗한 격리.
단점: TP 인프라 비용, 고마워하기가 더 어렵습니다.

3. 3 카나리아/프로그레시브 롤아웃

우리는 지표별로 게이트가있는 새 버전에 작은 트래픽 (1-5-10-25-50-100%) 을 제공합니다.

장점: 최소 폭발 반경, 데이터 중심 솔루션.
단점: 성숙한 관찰 성과 지능적인 라우팅이 필요합니다.

3. 4 그림자 트래픽/어두운 발사

새 버전에 대한 실제 요청 (사용자에게 응답하지 않고) 을 미러링하거나 메트릭을 수집하기 위해 숨겨진 상태로

장점: 문제의 조기 식별.
단점: 중독에 대한 이중 부하, 부작용을 제어해야합니다.

4) 트래픽 및 연결 관리

4. 1 준비/생활

Livence는 오케 스트레이터에게 "나를 다시 시작" 하라고 말합니

준비- "직접 트래픽을 지시하지 마십시오. 아직 준비가되지 않았습니다".
올바른 준비 논리 및 타임 아웃 없이는 해제 할 수 없습니다.

4. 2 연결 배수

풀에서 인스턴스를 제거하기 전에:
  • 새로운 연결 허용을 중지하고
  • 활동이 완료되기를 기다리는 중
  • "매달린" 타임 아웃을 중단합니다.

4. 3 개의 끈적 끈적한 세션 및 L7 라우팅

끈적 끈적한 시나리오는 유용하지만로드 균형이 복잡합니다.
L7 규칙 (경로, 헤더, 쿠키, API 버전) 은 카나리아/링에 편리합니다.

4. 4 장기 연결

WebSocket/gRPC 스트리밍: 업데이트하기 전에 드레인 모드 + "GOAWAY" 신호를 켜십시오.
스트림과 클라이언트 백호를 능가하는 창을 계획하십시오.

5) 데이터 호환성 및 데이터베이스 마

5. 1 확장-마이그레이트 계약

1. 확장: 이전 버전을 깨지 않고 새 열/색인/테이블을 추가하십시오.
2. Migrate: 백그라운드에서 데이터를 엄청나게 전송합니다 (배치, 체크 포인트).
3. 계약: 안정화 후에 만 이전을 삭제하십시오.

5. 2 가지 관행

릴리스 창에서 독점적 인 DDL 잠금을 피하십시오.
검증 API/이벤트 계약 (스키마 레지스트리, CDC).
온라인 도구, 복제품, 단계별 전환과 같은 강력한 마이그레이션.
중복 및 dempotent 소비자에게만 이중 쓰기.
대기열을 통한 안정적인 통합을위한 전송/받은 편지함.

6) 캐시, 세션 및 배경 작업

세션 및 캐시는 외부 (Redis/Memcashed) 이므로 버전을 교환 할 수 있습니다.
풀링 전에 캐시/위트/템포 인덱스를 예열하십시오.

경주를 피하기 위해 배경 대기열을 버전별로 나누거나 리더십을 사용하십시오

7) 관찰 및 SLO 게이트

황금 신호: p95/p99 대기 시간, 오류율, RPS, 채도, 대기열 지연.
비즈니스 SLA: 승인, 전환, 성공적인 지불, 깔때기 단계 거부.

게이트: 롤아웃은 카나리아

8) 안전한 완료 및 롤백

롤백은 "수동 크래프트" 가 아닌 고정 명령과 반대 방향으로 만 동일한 파이프 라인입니다.
청록색-뒤집기; 카나리아-체중 감량 0% 또는 이전 안정적인 단계.
데이터: 트랜잭션 상쇄, 재 처리, 이벤트 중복 제거.

9) 제로 다운 타임 체크리스트

출시 전

  • 하나의 서명 된 아티팩트 (불변성), SBOM 및 종속성 검사가 수집됩니다.
  • 준비/활력이 구현 및 테스트되었습니다.
  • 확장 모드의 마이그레이션 계획, 가역성 확인.
  • 새 버전에 대한 대시 보드 및 경고가 준비되었으며 릴리스 마크가 표시됩니다.
  • 롤백은 준비/사전 프로그램을 위해 체크했습니다.

출시 당시

  • 연결 배수가 활성화되고 타임 아웃이 적절합니다.
  • 트래픽은 카나리아/링 또는 플립 (청록색) 입니다.
  • 메트릭은 기준선과 비교되고 게이트 임계 값이 충족됩니다.

출시 후

  • 모니터링 후 N 시간, 사고 없음.
  • 계약 마이그레이션을 완료하고 임시 플래그/경로를 제거했습니다
  • 회고전, 플레이 북 업데이트.

10) 반 패턴

배수 및 준비 요청없이 재배치-배치 요청 중단.
준비되지 않은 DDL 데이터 잠금 및 타임 아웃 프라임 타임.
서비스 버전간에 호환되지 않는 체계를 혼합합니다.
처리기와 근로자의 demopotency 부족.
게이트없이 "느낌에 의해 롤아웃" 하고 기준선과 비교하십시오.
청록색의 긴 DNA-TTL은 플립이 몇 시간 동안 지속되는 이유입니다.
롤링/카나리아가있는 메모리의 로컬 세션/캐시.

11) 구현 시나리오

11. 1 Kubernetes (롤링 + 카나리아)

배포: 'maxUnasable = 0', 'maxSurge = 25%'.
준비 상태가 예열을 기다리고 있습니다 (캐시 초기화, 사소한 마이그레이션).
가중 라우팅 (1-5-10-25-50-100%) 이있는 서비스 메쉬/흡입.
경고: p95, 5xx, 대기열 지연, 비즈니스 깔때기.

11. 클라우드에서 2 청록색

밸런서 뒤에 두 스택: '파란색. 예. com '년형' 녹색. 예. com '.
녹색, 연기/회귀를 예열 한 다음 청취자/경로 교환 (또는 낮은 TTL이있는 DNA 스위치) 을 예열하십시오.
문제가있는 경우-즉시 뒤집기.

11. 3 스테이트 풀 서비스

데이터 복제본 + 온라인 마이그레이션; 검증을 통한 이중 판독.
배경 bs은 버전 "리더십" 또는 분할 대기열로 운반됩니다.

인스턴스 외부의 세션/캐시; 끈적 끈적한 일시적으로 만 활성화

12) Ficheflags 및 클라이언트 응용 프로그램

새로운 기능은 플래그에 의해 활성화됩니다 (세그먼트: 직원 → 베타 → 모두).
모바일/데스크톱 클라이언트의 경우 프로토콜 호환성 경계 및 레거시 저하 정책 (서버 측 대체) 을 고려하십시오.

13) 성능 및 비용

롤링은 저렴하지만 신중한 호환성이 필요합니다.
Blue-Green은 출시 당시 더 비싸지 만 롤백은 즉각적입니다.

카나리아는 위험과 비용의 균형을 유지하지만 강력한 관찰 가능성이

임시 미리보기와 자동 청소 스탠드를 통해 저장하십시오.

14) 최소 참조 파이프 라인 ZDT

1. 빌드: 단일 아티팩트, 서명, SBOM.
2. 테스트: 단위/통합/계약 + 보안.
3. 준비: 연기, 하중, 마이그레이션 확장, 롤백 점검.
4. Prod: 그림자 → 카나리아 (게이트) 또는 청록색 플립.
5. 배치 후: 감시, 계약 정리, 복고풍.

15) 간략한 요약

Zero-Downtime은 호환 가능한 버전 + 올바른 라우팅 + 관리 마이그레이션 + 관찰 가능성 및 빠른 롤백입니다. 컨텍스트 (롤링, 블루 그린, 카나리아), SLO 게이트 자동화, 데이터 유지 등의 패턴을 선택하면 이벤트가 중단되어 안정적인 루틴 프로세스로 전환됩니다.

Contact

문의하기

질문이나 지원이 필요하시면 언제든지 연락하십시오.우리는 항상 도울 준비가 되어 있습니다!

통합 시작

Email — 필수. Telegram 또는 WhatsApp — 선택 사항.

이름 선택 사항
Email 선택 사항
제목 선택 사항
메시지 선택 사항
Telegram 선택 사항
@
Telegram을 입력하시면 Email과 함께 Telegram에서도 답변드립니다.
WhatsApp 선택 사항
형식: +국가 코드 + 번호 (예: +82XXXXXXXXX).

버튼을 클릭하면 데이터 처리에 동의하는 것으로 간주됩니다.