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.