Migruję do V2. O co zapytać?2024-01-29Cześć! W ramach dzisiejszego wydania newsletteru, weźmiemy na tapet bardzo życiowy, z perspektywy lidera technicznego, temat. Porozmawiamy o migracji procesu / systemu / części produktu do nowej wersji. O czym pamiętać, na co zwracać uwagę, czego unikać? O tym piszę poniżej. Standardowo, czeka również, przygotowana specjalnie dla Ciebie, inżynierska prasówka. A więc w dzisiaj mam dla Ciebie: Miłego czytania 😀 Inżynierska prasówka
Migracja do nowszej wersjiW życiu każdego produktu, dochodzi do takiego momentu, że kolejną zmianę trudno jest przeprowadzić inkrementalnie. Chcemy zmigrować część procesu do nowego SaaSa. Może potrzebujemy zmienić platformę. Wykonujemy dużą zmianę na bazie danych. Przenosimy repozytorium do nowego hostingu. Brzmi znajomo, prawda? Niestety, temat jest nieco bardziej skomplikowany niż mogłoby się wydawać. Migracja przeprowadzona po łebkach powoduje, że umyka nam wiele rzeczy. A to ostatecznie sprawia, że cały proces się nie udaje. Dlatego do migracji trzeba podejść, jak do każdej dużej zmiany – w sposób przemyślany. Aby Ci w tym pomóc, przygotowałem listę pytań, jakie warto sobie zadać podczas planowania czy przeprowadzania procesu migracji. Pytania wstępnePoniżej przedstawiam pytania, jakie można sobie zadać podczas analizy migracji. Odpowiedzi wpłyną na plan i przyjęcie właściwego podejścia do migracji. Zakres migracji
Chcemy zebrać jak najwięcej informacji o tym, co faktycznie modyfikujemy.
Rzadko kiedy zmieniamy tylko jedną kategorię. “Rozplątanie” tych aspektów pozwoli nam migrację lepiej podzielić na etapy.
Może być to przykładowo:
To pozwoli nam podzielić migrację na kilka kroków i przenosić wymiary po kolei. Wykorzystanie systemu
Odpowiedź na powyższe pytania stworzy nasze wstępne ramy działania. Jeśli nasza baza klientów jest stosunkowo homogeniczna i mało aktywna, to mamy większe pole do manewru. W przypadku różnorodnych klientów korzystających z systemu przez cały dzień, robi się bardziej ryzykownie. Downtime
To nam pozwala określić, na jaki poziom elastyczności możemy sobie poradzić w ramach planowania.
Jeśli na poprzednie pytanie uzyskaliśmy odpowiedź twierdzącą, to możemy, idąc dalej, zapytać o zakres:
Im krótsza niedostępność, tym więcej złożonych wzorców trzeba zastosować. Atrybuty jakościowe
Brak świadomości w tym obszarze spowoduje ryzyko, że migracja nie dowiezie wymaganych wymagań biznesowych. Tutaj nie będę tego tematu poszerzał, ale jeśli jesteś ciekaw, to w artykule o driverach architektonicznych, omawiam to bardziej wyczerpująco. Split brain
Jeśli tak, to w jakim obszarze/obszarach?
Praca w obu wersjach naraz jest o cały rząd wielkości trudniejsza. Jednocześnie może być nieunikniona, ze względu wymaganej dostępności. Systemy zależne
Systemy wewnętrzne muszą funkcjnować w pełnej synchronizacji z naszymi pracami. W ramach ich wymagań, trzeba będzie więc zaplanować komunikację z dostawcami. User experience
Im mocniej zmiana dotyczy odbiorców, tym więcej pracy organizacyjnej trzeba zaplanować w ramach przygotowania do migracji. Znając odpowiedzi na wstępne pytania, możemy przejść do bardziej specyficznych zagadnień. Zaczniemy od problemu największego kalibru: migracji bazy. Migracja danychNajwiększym problemem, z jakim się stykamy w ramach migracji bazy danych jest jej typowa zero-jedynkowosć. Wykonujemy migrację i mamy 50% szans. Albo się uda, albo się nie uda 😉 Żeby zmniejszyć złożoność takiej migracji i trochę przechylić szalę prawdopodobieństwa na naszą korzyść, można sobie zadać dodatkowe pytania: Czas trwania migracji
Aby to sprawdzić, czy:
Druga sytuacja wydaje się dziwna, ale takie przypadki się zdarzają: przez rozmiar, brak repliki, niemożliwość wstrzymania ruchu i tym podobne scenariusze. Jeśli zaś możemy przetestować migrację w bezpieczny sposób, to powinniśmy bez wahania z tej opcji skorzystać , a następnie zsumować z ogólnym czasem migracji. I wtedy zadać docelowe pytanie:
Jeśli już wiemy, że proces potrwa zbyt długo, to trzeba przyjąć inne podejście i skupić się na stopniowej migracji bazy wykorzystując wzorce takie jak Zero Downtime Deployment. Zmiana schematu
Abstrahując od niedostępności, zmiana schematu może zwiastować problemy związane z wydajnością czy skalowalnością. Warto wtedy dodatkowo rozważyć testy obciążeniowe. Powstaje kolejne pytanie:
Odpowiedź na to pytanie każe nam się zastanowić, jak duża jest siła rażenia zmiany na poziomie schematu. Systemy BI często się są pomijane i w efekcie wywalają się dzień po migracji. Wymagania regulacyjne
Druga odpowiedź mogą zwiastować konieczność wykorzystania praktyk szyfrowania, maskowania danych, audytów bezpieczeństwa. Rollback
Przyznaję się, drugie pytanie jest zarzutką Jeśli czegoś nie przetestowałeś, to Prawo Muprheygo mówi, że to na pewno nie zadziała. A więc przetestuj wcześniej opcję rollbacku. Oczywiście nie wszystkie migracje będą potrzebowały rollbacków. Ale jeśli czytasz ten artykuł, to z dużym prawdopodobieństwem masz do czynienia z migracją, która tego potrzebuje. Migracja obszarów bezstanowychPo zajęciu się obszarem danych, można przejść do obszarów bezstanowych – serwisów / aplikacji. Architektura
Im więcej zmienianych elementów, tym większa szansa, że całe rozwiązanie nie będzie działało poprawnie. Zalecane jest zmienianie po kolei i sprawdzanie kompatybilności. Dostępy do zasobów
W ramach migracji może okazać się, że nie można wykorzystywać tych samych sposobów na uwierzytelnienie co dotychczas. Trzeba więc przygotować dodatkowe klucze czy zaplanować zmianę uprawnień na poziomie infrastruktury. Konfiguracja
Często podczas migracji chcemy również poprawić nieefektywne przechowywanie konfiguracji. Ale jeśli pominiemy odpowiednie testy, to nowy serwis się po prostu nie uruchomi. Procesy CI/CD
Dwa systemyJeśli na produkcji działają już dwa systemy / dwie bazy / dwa procesy, to musimy mieć świadomość, że mocno utrudni to nam migrację, ponieważ zduplikuje (i tak już dużą) ilość problemów. Utrzymanie spójności
Im więcej systemów naraz odczytuje i zapisuje dane, tym droższe są procesy utrzymywania spójności. Aby migracja się udała, wystąpi w tym przypadku konieczność zastosowania praktyk Dual Write, czy Change Data Capture (artykuły odnoszą się do bazy danych, ale to samo można przenieść na poziom całych systemów). Zatrzymanie podziału
Druga odpowiedź zwiastuje olbrzymie wydatki konieczne do utrzymywania procesów w obu systemach. Trzeba oczywiście też odpowiednio argumentować koszt takiego działania do interesariuszy. Koszta utrzymania
Brak zastanowienia się nad powyższym powoduje, że lekceważymy rosnące straty związane z utrzymaniem obu systemów w ruchu. Elementy okołotechniczne…czyli wszystko, co jest techniczne, ale nie spasowało wyżej 😃 Monitoring> Jak sprawdzimy, czy migracja idzie dobrze, czy źle?
Dobry system monitorowania pozwala nam szybko zareagować, gdy coś pójdzie nie po naszej myśli. Weryfikacja sukcesu
Wyznaczenie takich kroków pozwala nam osiągnąć 2 rzeczy. Raz, że lepiej wiemy co monitorować. Dwa, że zmniejsza paraliż decyzyjny organizacji. Wstępne testy
Dużej części problemów możemy uniknąć, przeprowadzając testy na sucho. Możliwe, że migracja bazy przejdzie gładko, ale już uruchomienie typowego procesu klienta rozwali cały system. Tylko dzięki testom dowiemy się o tym zawczasu. Aspekty organizacyjno-procesoweMigracja to temat mniej lub bardziej związany z pracą wielu osób na różnych szczeblach. I to też trzeba przemyśleć. Lider
W przypadku kilku osób dobrze uzgodnić wcześniej odpowiedzialności. Inaczej część zadań zostanie pomiędzy i nikt ich nie podejmie. A jeśli nie ma takiej osoby, to lepiej ją zorganizować 😉 Komunikacja
Często w ramach komunikacji pomijane są określone grupy osób. A później pominięte osoby eskalują problemy. Wykorzystaj Stakeholder Mapping by nie pominąć nikogo. Procesy
Odpowiedź na to pytanie wskaże na jak dużą skalę musimy przygotować nowe instrukcje bądź przeprowadzić szkolenia. Brak jasnych reguł spowoduje znaczące koszty operacyjne po stronie firmy. Dokumentacja
Warto zaplanować aktualizacje dokumentacji - później nie mamy rozbieżności w informacjach. W przypadku ostatniego punktu może to być wskazówka, by jednak jakąś dokumentację stworzyć 😉 Wsparcie po migracji
Może się okazać, że musimy przeznaczyć znaczne środki na wsparcie naszych klientów czy pracowników po zakończeniu migracji. Dużo zależy od skali zmian jakie określiliśmy w poprzednich krokach – im większy zakres, tym potencjalnie większe potrzebne wsparcie. Plan - nasz i zespołów zależnychZ odpowiedzi na powyższe pytania, powinieneś być w stanie określić pulę tematów, którymi trzeba się zająć w ramach migracji. Trzeba to teraz zaplanować. Osoby odpowiedzialne
Gdy nie wiemy kto robi dane zadanie, to jest duża szansa, że zbyt późno powiadomimy tę grupę. A wtedy ona nie znajdzie dla nas czasu. I cała migracja się opóźni. Zależności
To pozwoli nam poznać miejsca, które mogą być najbardziej problematyczne do dowiezienia. Możemy też zauważyć miejsca, gdzie możemy zrównoleglić pracę. A to przełoży się na szybsze dowiezienie całości. Priorytetyzacja
Dzięki temu zbudujemy sobie harmonogram działań, który ułatwi nam zarządzanie całym procesem. Formy komunikacji
To jest niby kwestia podstawowa, ale pominięta, wprowadza 10x więcej chaosu niż kosztuje nas dogranie tego na początku. PodsumowanieMam nadzieję, żę powyższe opracowanie Cię nie przeraziło 😬 Niestety, migracje to cwane bestie i potrafią rozłożyć nawet najlepsze plany na łopatki. Jednocześnie, jak mówi przysłowie: Szczęście sprzyja przygotowanym. Więc im więcej przemyślisz wcześniej, tym większej ilości problemów uda Ci się uniknąć 😊 A Ty, jakie pytania sobie zadajesz dookoła migracji? 📧 Prześlij dalejDzięki, że doczytałeś(aś) do końca. 😊 Wszystkie poprzednie wydania newslettera są dostępne tutaj. Jeśli spodobał Ci się mój newsletter, prześlij go proszę osobom, którym też mógłby się spodobać. Z góry dziękuję. A jeśli nie jesteś jeszcze w newsletterze, to zachęcam do zapisania się. Polecam się na przyszłość! "Inżynierskie podejście do produktów cyfrowych." P.S. Co myślisz o tym newsletterze? Odpisz :) |