Archifutura / Aeneia

Utrzymanie aplikacji

Jak wdrażać kolejne wersje aplikacji i bezpiecznie wrócić do poprzedniej

Zaplanuj publikację nowej wersji aplikacji, sprawdź zmiany w danych i przygotuj decyzję o powrocie do poprzedniego wdrożenia.

Tworzyliśmy rozwiązania dla

  • L'Oréal
  • Garnier
  • Netflix
  • Carrefour
  • Warner Bros. Discovery
  • Biedronka
  • HBO Max
  • Wolt
  • Żabka
  • COSRX
  • Mixa
  • Ambasada Chin w Polsce

Doświadczenie Aeneia, firmy stojącej za Archifutura.

W piątek po południu nowa wersja panelu zaczyna przyjmować zamówienia. Formularz wygląda poprawnie, jednak część zamówień nie pojawia się w systemie magazynowym. Zespół ma przed sobą dwa pytania: jak ograniczyć skutki błędu i co stało się z zamówieniami zapisanymi od chwili wdrożenia. Sam powrót do poprzedniego ekranu nie odpowiada na drugie pytanie.

To hipotetyczny przykład, ale decyzje są bardzo konkretne. Aktualizacja może zmieniać kod, dane, konfigurację i sposób komunikacji z innymi systemami. Plan wydania powinien określać, co sprawdzamy przed zmianą, kto podejmuje decyzję po publikacji i jak postępujemy z pracą wykonaną przez użytkowników w międzyczasie.

Nie trzeba zaczynać od wielostronicowej ceremonii. Dla niewielkiej zmiany wystarczy krótki, aktualny opis zawierający zakres, testy, osobę odpowiedzialną i sposób powrotu. W bardziej złożonym systemie ta sama logika pomaga uporządkować współpracę kilku zespołów.

Określ, co naprawdę zmienia wydanie

Lista zmian widocznych dla użytkownika nie zawsze obejmuje całą zmianę techniczną. Nowy przycisk może wymagać dodatkowego pola w bazie danych, zmiany integracji z płatnościami albo innych uprawnień. Przed wdrożeniem zapiszcie zależności i kolejność działań. Osoba podejmująca decyzję o powrocie musi wiedzieć, czy poprzednia wersja poradzi sobie z danymi zapisanymi przez nową.

Podzielcie duże przedsięwzięcie na mniejsze etapy tam, gdzie ma to sens biznesowy i techniczny. Oddzielne wydanie poprawki formularza oraz przebudowy rozliczeń zwykle łatwiej ocenić niż jedną paczkę, w której zmienia się wszystko naraz. Nie oznacza to, że każda zmiana jest samodzielna. Niektóre części trzeba dostarczyć razem, aby system pozostał spójny.

Przy stopniowej modernizacji aplikacji zaplanujcie również okres współistnienia starego i nowego rozwiązania. Ustalcie, które z nich zapisuje dane, skąd bierze je drugie oraz kiedy można bezpiecznie wyłączyć poprzedni mechanizm. Brak takiego ustalenia łatwo zamienia prosty powrót w ręczne porównywanie rozbieżnych rekordów.

Zapisujcie identyfikator wydania i zmianę konfiguracji w sposób dostępny zespołowi. Gdy problem pojawi się po kilku dniach, pytanie „co właściwie weszło wtedy na produkcję?” nie powinno wymagać przeglądania prywatnych wiadomości. Informacja o wydaniu musi odzwierciedlać faktycznie uruchomioną wersję, a nie tylko planowaną datę.

W zależności od projektu zmianę można ocenić również na podstawie przygotowanej listy ryzyk. Zapiszcie prawdopodobny wpływ problemu na użytkownika, sposób jego wykrycia oraz pierwszą osobę kontaktową. Nie potrzebujecie skali punktowej, jeśli kilka zdań wystarcza zespołowi do podjęcia decyzji.

Sprawdź dane przed zmianą i po niej

Migracja danych to zmiana ich struktury lub sposobu przechowywania. Bywa potrzebna, gdy nowa wersja wprowadza inne pola, relacje lub reguły. Ustalcie, ile danych obejmuje operacja, czy można sprawdzić ją na bezpiecznej kopii oraz jak potwierdzić wynik. Pomyślny komunikat narzędzia nie zastępuje sprawdzenia, czy użytkownik widzi właściwe informacje.

W hipotetycznym sklepie pole adresu może zostać podzielone na kilka części. Nowa wersja zapisze ulicę osobno od numeru budynku. Przed publikacją trzeba sprawdzić zarówno przeniesienie dotychczasowych adresów, jak i działanie zamówień utworzonych po zmianie. Jeśli starsza wersja odczytuje tylko dawny format, powrót wymaga planu zgodności lub dodatkowego działania na danych.

Nie zakładajcie, że cofnięcie aplikacji cofa również bazę. Dane mogły zmienić się po wdrożeniu: klienci złożyli zamówienia, pracownicy wprowadzili poprawki, a integracja wysłała dokumenty na zewnątrz. Przywrócenie starszej kopii bez uzgodnienia mogłoby usunąć lub pominąć późniejszą pracę. Przed każdą taką decyzją trzeba rozpoznać jej skutki i wybrać procedurę odpowiednią do sytuacji.

Plan powinien wskazywać, kto może wykonać migrację, gdzie znajduje się instrukcja i jak zweryfikować stan po operacji. Jeśli potrzebne jest okno serwisowe, trzeba określić także wpływ na użytkowników i komunikat dla nich. Temat oceny działania przed przekazaniem szerzej omawiamy w kryteriach odbioru i testach aplikacji.

Zaplanuj sprawdzenie po publikacji

Przed wydaniem ustalcie krótki zestaw rzeczywistych ścieżek. W panelu zamówień może to być zalogowanie, zapis przykładowego zamówienia w przygotowanym środowisku, sprawdzenie statusu i odczyt zdarzenia w integracji. Na produkcji sposób takiej próby trzeba dobrać ostrożnie, aby test nie stworzył prawdziwej płatności ani nie wysłał niezamówionego towaru.

Obok prób funkcjonalnych przydają się informacje o błędach, opóźnieniach i stanie zależnych usług. OpenTelemetry opisuje sygnały takie jak metryki, logi i ślady operacji. Każdy odpowiada na inne pytanie: czy problem narasta, co zgłoszono oraz przez jakie części systemu przeszło konkretne żądanie. Sensownie wybrane sygnały pomagają znaleźć problem, ale same nie podejmą decyzji za zespół.

Uzgodnijcie progi reakcji powiązane z procesem. Na przykład: jeśli nie można przyjąć zamówienia albo błędnie zmienia się jego status, osoba dyżurna zatrzymuje dalsze wdrażanie i zawiadamia właściciela procesu. Konkretny próg trzeba dobrać do usługi. Liczba, która ma sens dla dużego sklepu, nie musi mieć znaczenia dla wewnętrznego panelu kilkunastu osób.

W monitorowaniu automatyzacji liczy się również to, czy wiadomość uruchomiła oczekiwane działanie. Brak błędu na ekranie nie dowodzi, że dokument dotarł do kolejnego systemu. Po publikacji sprawdźcie zatem nie tylko dostępność strony, lecz także rezultat najważniejszych przepływów.

Przed wykonaniem zmian ustalcie także, jak sprawdzić kopię potrzebną do odtworzenia danych oraz kto ma do niej dostęp. Sama informacja o istnieniu kopii nie odpowiada na pytanie, czy zawiera właściwy zakres i czy zespół potrafi ją wykorzystać.

Uzgodnij moment i kolejność działań

Pora wdrożenia powinna odpowiadać rytmowi pracy użytkowników i dostępności osób, które potrafią rozwiązać problem. Noc nie jest automatycznie bezpieczniejsza od dnia: mniejszy ruch może oznaczać mniej zgłoszeń, ale również brak osoby znającej proces po stronie firmy. Ustalcie, kiedy zespół techniczny i właściciel procesu mogą wspólnie ocenić wynik.

Jeśli aktualizacja obejmuje kilka elementów, zapiszcie ich kolejność wraz z warunkami przejścia dalej. Zmiana konfiguracji, uruchomienie migracji, publikacja nowej aplikacji i sprawdzenie integracji mogą mieć wzajemne zależności. Przy każdym kroku potrzebny jest czytelny wynik: kontynuujemy, zatrzymujemy się lub podejmujemy wcześniej uzgodnioną decyzję.

Części zmian nie da się wiarygodnie zweryfikować na kopii, która nie przypomina rzeczywistego środowiska. Warto spisać różnice, zamiast udawać pełne pokrycie testów. Jeżeli dostawca zewnętrzny oferuje środowisko testowe z ograniczonym zakresem zachowań, zaplanujcie dodatkowe sprawdzenie tego, co można bezpiecznie potwierdzić po publikacji.

Jeżeli po publikacji rośnie czas odpowiedzi, szczegóły pomiarów pomogą wskazać etap wymagający sprawdzenia. O tym, jak łączyć metryki, logi i ślady aplikacji, piszemy osobno.

Oddziel wydanie kodu od udostępnienia funkcji

Czasem nową część aplikacji da się opublikować, pozostawiając ją początkowo wyłączoną dla użytkowników. Włączenie jej wybranej grupie pozwala zebrać informacje przed rozszerzeniem dostępu. Taki mechanizm trzeba jednak zaprojektować i przetestować: przełącznik sam nie naprawia błędnej migracji ani nie cofa wysłanych wiadomości.

Przy stopniowym udostępnianiu ustalcie, kto należy do pierwszej grupy, co zespół monitoruje i kiedy podejmuje decyzję o kolejnym kroku. Osoby objęte próbą powinny wiedzieć, gdzie zgłosić problem i jaki proces pozostaje dostępny, gdy nowa funkcja nie działa zgodnie z oczekiwaniem.

Po zakończeniu wdrożenia sprawdźcie, czy tymczasowy przełącznik nadal jest potrzebny. Pozostawienie wielu nieopisanych wariantów utrudnia testowanie i ustalenie, które zachowanie widzi użytkownik. Usuwanie przełącznika też jest zmianą, dlatego wymaga sprawdzenia zależności i właściwego wydania.

W artykule o stopniowym udostępnieniu funkcji opisujemy wybór grupy, obserwację i wyłączenie flagi. Wyłączenie widoku nie cofa automatycznie danych zapisanych podczas próby.

Powrót do poprzedniej wersji to decyzja, nie odruch

Ustalcie przed wydaniem, kto ma prawo uruchomić powrót i z kim powinien skonsultować wpływ na dane. Opiszcie też sytuacje, w których lepiej zatrzymać tylko nową funkcję, a kiedy trzeba wrócić do poprzedniego wdrożenia. Wybór zależy od konstrukcji aplikacji i rodzaju usterki.

Vercel opisuje mechanizm przywrócenia wcześniejszego wdrożenia produkcyjnego przez ponowne skierowanie domeny. Dokumentacja zwraca uwagę na konfigurację oraz zależności od zewnętrznych baz i usług. Po Instant Rollback automatyczne przypisywanie domen produkcyjnych do kolejnych wdrożeń jest wyłączone do ponownej promocji wdrożenia lub cofnięcia rollbacku. To przykład możliwości konkretnej platformy, a nie obietnica, że każde środowisko ma identyczny mechanizm. Przed zmianą trzeba sprawdzić dostępność i zasady obowiązujące w używanym projekcie.

Po przywróceniu starszej wersji sprawdźcie pełną ścieżkę pracy oraz integracje. Zidentyfikujcie sprawy rozpoczęte między wydaniami i osobę odpowiedzialną za ich uzgodnienie. Jeżeli użytkownik otrzymał potwierdzenie, a zamówienie nie dotarło do magazynu, sama poprawa kodu nie powiadomi magazynu o brakującym zadaniu. Potrzebna jest lista i kontrola kolejnych kroków.

W systemie z kilkoma usługami powrót jednej części może zmienić sposób współpracy z pozostałymi. W artykule o integracjach API i webhookach opisujemy, dlaczego warto znać granice przepływu danych. Podczas planowania wydania ustalcie również, kto kontaktuje się z zewnętrznym dostawcą, jeśli problem dotyczy jego usługi.

Ćwiczenie przed trudnym dniem

Dobrym testem planu jest przejście przez hipotetyczną awarię bez rzeczywistego odłączania produkcji. Zespół otrzymuje scenariusz: po nowym wydaniu część zgłoszeń nie dociera do systemu obsługi. Gdzie sprawdzacie identyfikator wersji? Kto może wstrzymać wysyłkę? Jak odróżnicie zgłoszenia przyjęte od tych, których wynik pozostaje nieznany? Odpowiedzi powinny prowadzić do konkretnych narzędzi i osób.

Jeśli środowisko testowe pozwala bezpiecznie wykonać próbny powrót, sprawdźcie również samą procedurę. Zanotujcie ograniczenia takiej próby: środowisko może mieć mniej danych i inne zależności niż produkcja. Pomiar czasu z testu jest użyteczną wskazówką, ale nie jest gwarancją identycznego czasu w rzeczywistym incydencie.

Warto przećwiczyć także komunikację. Osoba obsługująca klientów potrzebuje wiedzieć, co przestało działać i kiedy otrzyma następną aktualizację, nawet jeśli przyczyna jest jeszcze nieznana. Wewnętrzny komunikat powinien wskazywać fakty, właściciela sprawy i następny krok. Nie trzeba obiecywać terminu naprawy, którego nikt nie potrafi jeszcze uzasadnić.

Po ćwiczeniu poprawcie instrukcję i usuńcie nieaktualne odnośniki. Sprawdźcie, czy uprawniona osoba nadal ma dostęp do narzędzi, a zastępstwo wie, gdzie znaleźć procedurę. Szczegóły dostępu nie powinny być zapisywane w otwartej dokumentacji razem z hasłami. Proces trzeba przekazać zespołowi utrzymania, co opisujemy w tekście o przekazaniu kodu i utrzymaniu aplikacji.

Wydanie kończy się po sprawdzeniu efektu

Po ustabilizowaniu wersji porównajcie wynik z celem zmiany. Czy nowy formularz rzeczywiście pozwala przyjąć zapytanie? Czy integracja przekazuje właściwe dane? Czy osoby pracujące w panelu rozumieją nowy status? Pytania biznesowe powinny towarzyszyć technicznym, ponieważ sprawnie uruchomiona aplikacja może nadal utrudniać wykonanie zadania.

Jeśli incydent wystąpił, zapiszcie przebieg i decyzje na podstawie dostępnych faktów. Zwróćcie uwagę na moment wykrycia, wpływ na użytkowników, stan danych i sposób przywrócenia działania. Przegląd ma pomóc zmienić proces oraz testy, nie służy szukaniu osoby winnej. Osobno wyznaczcie właściciela poprawki i termin ponownego sprawdzenia.

Takie ustalenia wpływają również na planowanie utrzymania systemu i przejście od pilota AI do stabilnego rozwiązania. W projekcie oprogramowania na zamówienie można je uwzględnić od pierwszego etapu. Jeśli chcesz omówić sposób wydawania zmian w swojej firmie, wyślij krótki brief z opisem aplikacji, zależnych systemów oraz najważniejszego procesu użytkownika.

Źródła i dokumentacja

Materiały sprawdzone przy opracowaniu tekstu. Przy wyborze usługi lub technologii potwierdzamy warunki dla konkretnego projektu.

Kiedy potrzebujesz spojrzeć szerzej

Projekt nie kończy się na kodzie.

Twój proces, Twój zakres

Sprawdźmy, co ma powstać w Twojej firmie.

Nie potrzebujesz gotowej specyfikacji. Opisz zadanie, obecne narzędzia i to, co dziś wymaga ręcznej pracy.

Opisz swój projekt

Narzędzia i integracje, z których korzystamy

  • Google
  • OpenAI
  • Microsoft
  • Stripe
  • Anthropic
  • Linear

Dobór technologii i dostępnych połączeń ustalamy dla konkretnego projektu.