GH GambleHub

Wdrażanie zero-przestojów

(Sekcja: Architektura i protokoły)

1) Co to jest zero-przestoje i dlaczego jest potrzebne

Zero-Downtime (ZDT) jest sposobem na wydanie nowych wersji aplikacji bez niedostępności usługi dla użytkowników i bez utraty żądań. Cele:
  • Zero przestojów dla klientów i integracji.
  • Przewidywalne wydania, szybkie rolki i możliwe do opanowania ryzyko.
  • Zachowanie SLO/SLI (opóźnienia, błędy, dostępność) w granicach umów.

Kluczem do ZDT nie jest jedna „magiczna” technika, ale kombinacja wzorów dostaw, kompatybilności danych i właściwego trasowania ruchu.

2) Podstawowe zasady zero-przestoju

1. Kompatybilność wersji: Nowe i stare wersje muszą obsługiwać ruch i dane prawidłowo w tym samym czasie.
2. Idempotencja operacji: ponowne przetwarzanie nie powinno łamać stanu.
3. Wdzięczne zamknięcie i drenaż połączeń.
4. Krok po kroku kontrola stanu zdrowia: testy gotowości/chwiejności, punkty końcowe dla zdrowia.
5. Rollback jako obywatel pierwszej klasy: Rollback jest łatwiejszy i szybszy niż hotfix.
6. Obserwowalność według projektu: znaki uwolnienia, pojedyncze deski rozdzielcze, wpisy SLO.
7. Automatyzacja: Scenariusze zwolnienia i zwrotu są kodem, a nie instrukcjami ręcznymi.

3) Bez przestojów wzory dostaw

3. 1 Aktualizacja toczenia

Stopniowo usunąć część instancji starej wersji z ruchu, zaktualizować je do nowego i zwrócić je do puli.

Plusy: ekonomiczne w infrastrukturze, tylko w k8s/ASG.
Minusy: przez pewien czas klaster działa z dwiema wersjami w tym samym czasie (wersja skew).

3. 2 niebiesko-zielone

Dwa pełny prod: aktywny (niebieski) i kandydat (zielony). Przełączanie ruchu - flip atomowy.

Plusy: natychmiastowy zwrot, czysta izolacja.
Minusy: koszty infrastruktury, trudniejsze ze stanowczym.

3. 3 Kanaryjski/progresywny wałek

Dajemy niewielką część ruchu (1-5-10-25-50-100%) do nowej wersji z bramkami według metryki.

Plusy: minimalny promień wybuchu, rozwiązania napędzane danymi.
Minusy: Potrzebujesz dojrzałej obserwacji i inteligentnej trasy.

3. 4 Ruch cieni/Ciemny start

Lustro prawdziwe żądania do nowej wersji (bez odpowiedzi na użytkownika) lub uruchomienie ukryte do zbierania metryk.

Plusy: Wczesna identyfikacja problemów.
Minusy: podwójne obciążenie uzależnień, musisz kontrolować skutki uboczne.

4) Zarządzanie ruchem i połączeniem

4. 1 Gotowość/lojalność

Livity każe orkiestrze „uruchom mnie”.
Gotowość - „nie kieruj ruchem, nie jestem jeszcze gotowy”.
Nie można zwolnić bez poprawnej logiki gotowości i czasu.

4. 2 Drenaż połączeń

Przed usunięciem instancji z puli:
  • zaprzestanie przyjmowania nowych połączeń,
  • czekanie na zakończenie działalności,
  • przerwać „hung” timeout.

4. 3 Sesje lepkie i routing L7

Lepki jest przydatny do stanowych scenariuszy, ale komplikuje równowagę obciążenia.
Zasady L7 (ścieżka, nagłówek, pliki cookie, wersje API) są wygodne dla kanarka/pierścień.

4. 4 Długotrwałe połączenia

WebSocket/gRPC streaming: włącz tryb spustowy + sygnał „GOAWAY” przed aktualizacją.
Zaplanuj okna, aby przewyższyć strumienie i koparkę klienta.

5) Kompatybilność danych i migracja baz danych

5. 1 Kontrakt rozszerzający-migracyjny

1. Rozwiń: dodaj nowe kolumny/indeksy/tabele bez łamania starej wersji.
2. Migruj: przesyłamy dane w tle i idempotentnie (partie, punkty kontrolne).
3. Kontrakt: usunąć stare tylko po ustabilizowaniu.

5. 2 Praktyki

Unikaj wyłącznych blokad DDL w oknie wydania.
Wersioning umów API/event (schemat rejestru, CDC).
Dla ciężkich migracji - narzędzia online, repliki, stopniowe przełączanie.
Dual-write tylko z deduplication i idempotent konsumentów.
Skrzynka odbiorcza/skrzynka odbiorcza służąca do niezawodnej integracji przez kolejki.

6) Bufory, sesje i miejsca pracy

Sesje i pamięć podręczna są zewnętrzne (Redis/Memcached) tak, że wersje są wymienne.
Podgrzać cache/jits/tempo indeksy przed łączeniem.
Podziel kolejki tła przez wersję lub użyj leadership, aby uniknąć wyścigów.

7) Obserwowalność i bramy SLO

Złote sygnały: opóźnienie p95/p99, szybkość błędów, RPS, nasycenie, opóźnienie kolejki.
Business SLA: autoryzacje, konwersje, udane płatności, odmowa etapami lejkowymi.
Bramy: rollout jest promowany tylko wtedy, gdy kanaryjski ≤ wartości wyjściowe + progi degradacji, a budżet błędu nie wypala.

8) Bezpieczne zakończenie i zwrot

Rollback to ten sam rurociąg, tylko w przeciwnym kierunku: stałe polecenia, a nie „ręczny kraft”.
Dla niebiesko-zielonych - odwróć; dla kanarka - odchudzanie do 0% lub poprzedni stabilny krok.
Dane: kompensacja transakcji, ponowne przetwarzanie, deduplikacja zdarzeń.

9) Listy kontrolne zero-przestojów

Przed zwolnieniem

  • Zebrano jeden podpisany artefakt (niezmienny), SBOM i kontrolę zależności.
  • Gotowość/los wdrożone i przetestowane.
  • Plan migracji w trybie rozszerzenia, odwracalność potwierdzona.
  • Deski rozdzielcze i wpisy do nowej wersji są gotowe, znaki wydania są rzucane.
  • Rollback sprawdzone pod kątem postoju/pre-prod.

W momencie zwolnienia

  • Drenaż połączeń jest włączony, harmonogram jest odpowiedni.
  • Ruch jest kanaryjski/pierścień lub flip (niebiesko-zielony).
  • Wskaźniki porównuje się z poziomem bazowym, przestrzega się progów bram.

Po zwolnieniu

  • Godziny po monitorowaniu N, bez incydentów.
  • Zakończona migracja kontraktowa, usunięte tymczasowe flagi/trasy.
  • Retrospektywna, aktualizacja odtwarzania.

10) Anty-wzory

Odtworzyć-rozmieścić bez drenażu i gotowości na życzenie przerw.
Nieprzygotowane blokady DDL i timeouts w prime time.
Mieszanie niezgodnych systemów między wersjami usług.
Brak idempotencji u opiekunów i pracowników.
„Rozwinąć przez czuć” bez bram i porównania z linią wyjściową.
Długi DNS-TTL z niebiesko-zielonym, dlatego flip trwa godzinami.
Sesje lokalne/pamięć podręczna w przypadku pamięci rolling/canary.

11) Scenariusze realizacji

11. 1 kubernety (walcowanie + kanarka)

Wdrożenie „maxNiedostępne = 0”, „maxSurge = 25%”.
Gotowość czeka na rozgrzewkę (inicjalizacja pamięci podręcznej, drobna migracja).
Siatka serwisowa/Ingress z ważoną trasą (1-5-10-25-50-100%).
Wpisy: p95, 5xx, kolejka opóźnienia, lejek biznesowy.

11. 2 niebiesko-zielone w chmurze

Dwa stosy za balancerem: 'niebieski. przykład. com 'в' zielony. przykład. com ".
Rozgrzewka zielona, dym/regres, a następnie swap słuchacza/trasy (lub przełącznik DNS z niskim TTL).
W przypadku problemów - natychmiastowy odwrót.

11. 3 Służba państwowa

Repliki danych + migracje online; podwójny odczyt z walidacją.
Tło jabs są noszone przez wersję „leadership” lub podzielone kolejki.
Sesje/pamięć podręczna poza instancją; lepki jest tylko tymczasowo włączony.

12) Ficheflags i aplikacje klienckie

Nowe funkcje są aktywowane przez flagi (segmenty: pracownicy → beta → wszystkie).
W przypadku klientów mobilnych/stacjonarnych należy rozważyć granice kompatybilności protokołu i zasady degradacji spuścizny (awaria po stronie serwera).

13) Wydajność i koszt

Walcowanie jest tańsze, ale wymaga starannej kompatybilności.
Blue-Green jest droższy w momencie wydania, ale rollback jest natychmiastowy.
Kanaryjski równoważy ryzyko i koszty, ale wymaga silnej obserwacji.
Zapisz przez efemeryczne podglądy i stoiska do automatycznego czyszczenia.

14) Minimalny rurociąg referencyjny ZDT

1. Budowa: pojedynczy artefakt, podpis, SBOM.
2. Test: jednostka/integracja/umowa + bezpieczeństwo.
3. Ustawianie: dym, ładunek, rozszerzyć migracje, sprawdzić rollback.
4. Prod: cień → kanarka (bramy) lub niebiesko-zielony klapa.
5. Po rozmieszczeniu: nadzór, porządek kontraktowy, retro.

15) Krótkie podsumowanie

Zero-Downtime to dyscyplina: kompatybilne wersje + poprawne routing + zarządzane migracje + obserwowalność i szybki zwrot. Wybierz wzór dla kontekstu (walcowanie, niebiesko-zielony, kanaryjski), zautomatyzuj bramki SLO, zachowaj idempotent danych - a wydania przestają być wydarzeniem, zmieniając się w niezawodny proces rutynowy.

Contact

Skontaktuj się z nami

Napisz do nas w każdej sprawie — pytania, wsparcie, konsultacje.Zawsze jesteśmy gotowi pomóc!

Rozpocznij integrację

Email jest wymagany. Telegram lub WhatsApp są opcjonalne.

Twoje imię opcjonalne
Email opcjonalne
Temat opcjonalne
Wiadomość opcjonalne
Telegram opcjonalne
@
Jeśli podasz Telegram — odpowiemy także tam, oprócz emaila.
WhatsApp opcjonalne
Format: kod kraju i numer (np. +48XXXXXXXXX).

Klikając przycisk, wyrażasz zgodę na przetwarzanie swoich danych.