Migracje do chmury bez przestojów
Są systemy, których nie da się wyłączyć na weekend. Przenosimy je tak, żeby przez cały czas obsługiwały klientów, z możliwością wycofania na każdym kroku.
Dlaczego weekendowe okna serwisowe przestały wystarczać
Kiedyś dało się wystawić stronę informacyjną w sobotę wieczorem i skończyć przed poniedziałkiem. To wciąż działa dla narzędzi wewnętrznych używanych w jednej strefie czasowej. Nie działa dla sklepu, platformy dla klientów ani niczego, co ma podpisane SLA.
Koszt przestoju rzadko sprowadza się do samej przerwy. To zamówienia, które nie zostały złożone, zgłoszenia, które przyjdą później, i fakt, że zaplanowane okno potrafi zamienić się w nieplanowane, gdy odtwarzanie danych trwa dłużej, niż zakładał harmonogram. Pytanie nie brzmi więc, jak zaplanować przestój. Brzmi: jak się bez niego obejść.
Na czym polega migracja bez przestojów
Sama idea jest prosta. Zamiast wyłączyć stary system i włączyć nowy, uruchamiasz oba, utrzymujesz je w synchronizacji i stopniowo przenosisz ruch.
Cała praca tkwi w szczegółach. Nowe środowisko musi być faktycznym odpowiednikiem, a nie przybliżeniem: te same wersje runtime'u, te same zmienne środowiskowe, te same certyfikaty, te same zadania cykliczne. Dane muszą płynąć ze starego systemu do nowego na tyle sprawnie, żeby przełączenie było bezpieczne. Ruch musi dać się przenosić małymi porcjami, co zwykle oznacza load balancer, proxy albo DNS z krótkim TTL obniżonym kilka dni wcześniej, a nie godzinę przed.
Każdy etap musi też być odwracalny. Jeśli nowy system zaczyna zwracać błędy przy pięciu procentach ruchu, cofasz te pięć procent i szukasz przyczyny bez wpływu na klientów. To właśnie ta cecha sprawia, że dodatkowy nakład pracy się opłaca.
Osobną kwestią są sesje użytkowników i pliki, które aplikacja trzyma lokalnie. W układzie, w którym część ruchu idzie do starego systemu, a część do nowego, zalogowany klient nie może zostać wylogowany tylko dlatego, że trafił na inny serwer. Sesje muszą więc być wspólne dla obu środowisk, a przesyłane pliki dostępne z obu stron. To drobiazgi, które nie pojawiają się na schemacie architektury, a potrafią zepsuć dobrze zaplanowane przełączenie.
Baza danych decyduje o wszystkim
Serwery aplikacyjne przenosi się łatwo. Są bezstanowe, można ich mieć dziesięć i nikt nie zauważy, który odpowiedział.
Z bazą danych jest odwrotnie. Jest jedna kopia uznawana za źródło prawdy, ciągle się zmienia, a w momencie, w którym dwa systemy uznają się za nadrzędne, masz problem z danymi, który kosztuje znacznie więcej niż awaria. To tutaj plan migracji się sprawdza albo rozsypuje.
Standardowe podejście to ciągła replikacja ze starej bazy do nowej, prowadzona wystarczająco długo, żeby opóźnienie było stabilnie niskie, a potem krótkie i dokładnie rozpisane przełączenie ścieżki zapisu. Tę sekwencję ćwiczymy wcześniej na odtworzonej kopii produkcji. Próba generalna nie jest tu opcjonalna. Tylko w ten sposób dowiesz się, ile przełączenie naprawdę trwa przy Twojej ilości danych, zamiast opierać się na szacunku.
Co sprawdzamy przed decyzją o przełączeniu
Przełączenie to decyzja i powinna zapadać na podstawie dowodów, a nie daty w kalendarzu. Zanim przeniesiemy istotną część ruchu, chcemy zobaczyć nowe środowisko pod realnym obciążeniem, stabilnie niskie opóźnienie replikacji, wykonany i odtworzony backup na nowej platformie oraz monitoring pokazujący te same metryki, które obserwowano wcześniej.
Jeśli któregokolwiek z tych elementów brakuje, rozsądnie jest poczekać. Migracja przesunięta o tydzień kosztuje nieporównanie mniej niż taka, która ruszyła na systemie, którego nikt nie widzi.
Ustalamy też wcześniej, kto podejmuje decyzję o wycofaniu i przy jakich wartościach. Jeśli próg jest spisany przed startem, nikt nie negocjuje w trakcie, czy podwojony czas odpowiedzi to jeszcze norma, czy już powód do cofnięcia ruchu.
Kiedy przestój jest tańszym rozwiązaniem
Nie każdy system to uzasadnia. Jeśli prowadzisz narzędzie wewnętrzne używane przez trzydzieści osób w jednym kraju, dwugodzinne okno w niedzielę jest prostsze, szybsze i tańsze niż budowanie równoległego środowiska i etapowego przenoszenia ruchu. Złożoność ma swoją cenę i warto ją płacić tylko tam, gdzie ciągłość naprawdę ma znaczenie.
Do której kategorii należy Twój system, powiemy na etapie analizy. Część klientów przychodzi po projekt bez przestojów, a wychodzi z planem znacznie mniejszym, bo tyle w ich sytuacji wystarczy.
Co dostajesz
Mapa zależności obecnego systemu
Zanim cokolwiek ruszy, spisujemy, co się z czym komunikuje, łącznie z integracjami, o których nikt już nie pamięta. Większość awarii przy migracji bierze się z połączenia, którego nie było na schemacie.
Środowisko docelowe zbudowane równolegle
Nową infrastrukturę stawiamy obok starej i sprawdzamy na realnym obciążeniu, żeby przełączenie było zmianą routingu, a nie pierwszym uruchomieniem.
Replikacja danych i plan przełączenia
Ciągła replikacja utrzymuje oba systemy zsynchronizowane aż do przełączenia, a samo przełączenie i jego cofnięcie mają spisaną kolejność kroków.
Stopniowe przenoszenie ruchu
Ruch przechodzi partiami, a nie naraz, więc ewentualny problem widzi niewielka część użytkowników, a nie wszyscy.
Monitoring gotowy przed przełączeniem
Błędy, czasy odpowiedzi i kolejki są opomiarowane na nowym środowisku jeszcze przed startem. Nie da się ocenić migracji systemu, którego się nie widzi.
Wygaszenie starego środowiska
Starą infrastrukturę wyłączamy świadomie, po ustalonym okresie obserwacji, zamiast zostawiać ją włączoną po cichu przez kolejny rok, żeby dalej generowała rachunki.
Jak pracujemy
- 01
Inwentaryzacja i ocena ryzyka
Spisujemy usługi, bazy danych, zadania cykliczne i integracje zewnętrzne, a potem układamy je według tego, jak bardzo zaboli awaria. Ta kolejność wyznacza plan migracji.
- 02
Budowa i weryfikacja środowiska docelowego
Infrastrukturę opisujemy kodem i wdrażamy na nowej platformie. Przed dopuszczeniem ruchu produkcyjnego robimy testy obciążeniowe i odtwarzamy realny backup.
- 03
Synchronizacja danych
Replikacja między starym a nowym systemem działa do momentu, w którym opóźnienie liczymy w sekundach. To zwykle najdłuższy etap i to on decyduje, czy przełączenie będzie nudne.
- 04
Przenoszenie ruchu etapami
Najpierw niewielki procent, potem więcej. Na każdym kroku obserwujemy błędy i czasy odpowiedzi. Jeśli coś idzie w złą stronę, cofamy ruch.
- 05
Stabilizacja i wyłączenie starego systemu
Stare środowisko zostaje dostępne przez ustalony okres obserwacji, a potem je wyłączamy i przestajesz za nie płacić.
Narzędzia i technologie
Tam, gdzie istnieje dobre narzędzie open source, wybieramy je zamiast zamkniętego. Bez uzależnienia od jednego dostawcy i z kosztami, które da się przewidzieć.
- OpenTofu
- Terraform
- Docker
- Kubernetes
- PostgreSQL
- Debezium
- Grafana
- Prometheus
- AWS
- Microsoft Azure
- Google Cloud
- Cloudflare
Najczęściej zadawane pytania
Powiązane realizacje
Pozostałe usługi w tej kategorii
Migracje inkrementacyjne
Nie wszystko trzeba przenosić naraz. Migrujemy system po systemie, zaczynając od tego, co najbardziej boli, więc efekty widzisz na długo przed końcem projektu.
Sprinty modernizacyjne
Krótkie, konkretne działanie, które naprawia w infrastrukturze to, co realnie Cię kosztuje, bez wchodzenia w projekt na wiele miesięcy.
Rozwiązania serverless i model scale-to-zero
Twój kod uruchamia się wtedy, kiedy jest potrzebny, i nic nie kosztuje, kiedy nie jest. Przy nierównym ruchu zmienia to rachunek ekonomiczny utrzymania systemu.
Przeczytaj opinie firm, które nam zaufały
Dostarczone znacznie wcześniej niż termin.
Indywidualne podejście ZanReal jest imponujące.
Wiedza i intuicja biznesowa czynią ich wartościowym partnerem.
Szybkie rozwiązania, które obniżyły koszty o 99%.
+20% dostarczalności dla naszych kampanii e-mail.

Masz system, którego nie możesz wyłączyć nawet na godzinę?
Napisz do nasOpisz nam, na czym działa i co od niego zależy, a zaproponujemy plan migracji z przećwiczonym wycofaniem na każdym etapie.
Nie nadążasz za zmianami w świecie AI?
Pozwól, że weźmiemy to na siebie. Co tydzień destylujemy najważniejsze wydarzenia ze świata AI w skupiony, 5-minutowy przegląd — żebyś był na bieżąco bez szumu.
Dowiedz się więcej