Mój zespół z powodzeniem ukończył pierwszy etap systemu rezerwacji biletów "Train Planet" i zainstalował go na Produkcie.
Rezultat można zobaczyć tutaj. W końcu nadszedł dzień rolloutu i o dziwo byłem całkiem spokojny i wyluzowany, ponieważ spędziliśmy trochę czasu na wdrażaniu niefunkcjonalnych funkcji, co pozwoliło nam w pełni zdiagnozować aplikację na środowisku produkcyjnym.
W tym artykule chciałbym podkreślić siedem ważnych kroków, aby zmniejszyć poziom stresu podczas procesu wdrażania. Zapraszam do potraktowania tego wpisu jako listy kontrolnej gotowości przed uruchomieniem.
1. Automatyczne testy end-to-end i testy wydajności przed wdrożeniem
Dobry specjalista IT wie, jak ważna jest faza testowania. Przed wdrożeniem produkcyjnym zaleca się zamrożenie kodu i przeprowadzenie testów end-to-end. Aby być w zgodzie z potrzebami biznesowymi, zalecanym sposobem jest określenie scenariuszy testowych obejmujących główne lub nawet wszystkie przypadki biznesowe i tworzenie testów automatycznych za pomocą dedykowanych narzędzi, takich jak Cucumber, Selenium, Appium, Ranorex, Cypress i wiele innych. Ten krok powinien obejmować również testy wydajnościowe, aby sprawdzić, jak szybka jest nasza aplikacja i odkryć wąskie gardła aplikacji. Pomocnym narzędziem do tego jest JMeter.
Nasze punkty działania:
Cypress dla testów E2E
JMeter dla testów wydajności
2. Monitorowanie infrastruktury
Po zainstalowaniu aplikacji na produkcji zdecydowanie zaleca się zbieranie wszystkich metryk infrastruktury, takich jak zużycie pamięci, dostępność miejsca na dysku, użycie procesora, ruch sieciowy i inne statystyki wymagane do płynnego wdrożenia i uruchomienia naszej aplikacji. Ponadto należy również zdefiniować proces ostrzegania, aby powiadamiać DevOps lub inne osoby o potencjalnych problemach powodujących awarię aplikacji. Obecnie istnieje cała masa narzędzi, które mogą monitorować infrastrukturę, na przykład Zabbix, Nagios, Cacti, Dynatrace. Jeśli aplikacja jest zainstalowana w chmurze, możliwe jest użycie narzędzi Software as a Service (SaaS) dostarczanych przez operatora chmury, takich jak AWS CloudWatch lub Azure Monitor.
Nasze punkty działania:
AWS CloudWatch
Dynatrace
3. Monitorowanie aplikacji
Wiele firm ma dedykowane zespoły do tworzenia i rozwijania całej aplikacji oraz oddzielne zespoły utrzymania, które dbają i monitorują aplikację na produkcji. Oba zespoły mają różne cele i zazwyczaj jest to duża niespodzianka, gdy aplikacja zmienia właściciela. Zespół programistów zazwyczaj koncentruje się na wymaganiach funkcjonalnych i terminach. Zespół utrzymania skupia się na stabilności aplikacji i płynnym funkcjonowaniu. Jednym z pytań zespołu utrzymania jest: gdzie możemy znaleźć metryki aplikacji? Możliwe jest tworzenie metryk podczas fazy rozwoju lub korzystanie z nowoczesnych narzędzi do automatycznego wykrywania infrastruktury, używanych frameworków i silników, odkrywania zależności aplikacji, śledzenia transakcji na wszystkich poziomach i zbierania potencjalnych winowajców. Imponującym narzędziem jest Dynatrace, które pozwala śledzić cały przepływ wewnątrz aplikacji, mierzyć każdy krok, taki jak zapytanie do bazy danych, interakcję z systemami zewnętrznymi lub znaleźć wąskie gardło w kodzie. Pozwala również monitorować Garbage Collector, obrazy Docker itp.
Nasze punkty działania:
AWS CloudWatch
Sprawdzanie kondycji AWS Route 53
Dynatrace
4. Polityka rotacji logów i przechowywanie logów
Dużym zaskoczeniem jest, gdy system monitorowania ostrzega, że pamięć dyskowa jest pełna. Jednym z potencjalnych winowajców jest dziennik aplikacji. Programiści uwielbiają umieszczać wszystkie informacje w pliku dziennika, aby móc śledzić błędy lub wychwytywać nieoczekiwane sytuacje. Przed wdrożeniem produkcyjnym dobrą praktyką jest sprawdzenie poziomów logów w celu zmniejszenia ilości informacji przechowywanych w pliku logów i stworzenie polityki rotacji logów. W środowiskach chmurowych i podejściu opartym na mikrousługach dobrą praktyką jest również posiadanie magazynu dzienników w celu gromadzenia danych z wielu mikrousług. Doskonałym wyborem jest stos ELK (Elasticsearch, Logstash, Kibana) lub funkcjonalność Dynatrace Log Storage. Warto opracować standard propagacji B3 dla rozproszonego śledzenia w środowisku mikrousług za pomocą Zipkin lub Spring Cloud Sleuth.
Nasze punkty działania:
AWS EBS Storage i migawki EBS do celów tworzenia kopii zapasowych
Dynatrace
5. Polityka dotycząca danych poufnych
RODO jest wszędzie. Wymagane jest zdefiniowanie polityki danych poufnych i jej przestrzeganie. Jest to ogromny temat na osobny wpis na blogu, więc tutaj zostanie wspomniana tylko niewielka część - poufne dane przechowywane w plikach dziennika. Aplikacja zazwyczaj wchodzi w interakcje z innymi systemami za pomocą danych uwierzytelniających (np. znaczników użytkownik/hasło w nagłówku SOAP). Dodatkowo, wewnątrz aplikacji znajdują się funkcje służące do logowania, wysyłania wiadomości e-mail lub inne funkcje przetwarzające dane użytkowników. Wymagane jest przeglądanie logów i sprawdzanie, czy kluczowe dane są chronione, anonimizowane lub nawet usuwane z pliku dziennika. W świecie Java, frameworki logowania zapewniają funkcje pozwalające na zastąpienie lub usunięcie znacznej części logu.
Nasze punkty działania:
Funkcja zastępowania Log4j2
Ręczny audyt i niestandardowa biblioteka do anonimizacji
6. Automatyzacja aktualizacji i definicja procedury wycofania
Podejście automatycznej aktualizacji jest bardzo powszechne i najprawdopodobniej Twoja firma używa Jenkinsa, Bamboo lub podobnego narzędzia do wykonania takiego przypadku. Jest też druga strona medalu. Aby być profesjonalną firmą IT, wymagane jest zdefiniowanie dodatkowych punktów działania:
- procedura wycofania w przypadku niepowodzenia aktualizacji
- okno serwisowe uzgodnione z firmą
- definicja czasu niedostępności (na przykład 15 sekund na aktualizację aplikacji lub proces wdrażania niebiesko-zielonego bez zatrzymywania świata)
- strona konserwacji w przypadku niedostępności aplikacji
Nasze punkty działania:
Kompilacja Jenkins
Docker + Docker Compose
Oznaczanie repozytoriów i obrazów Docker
Elastyczny rejestr kontenerów Amazon
Konfiguracja NGINX do wyświetlania strony konserwacji podczas aktualizacji
7. Śledzenie użytkowników i współczynnika konwersji
Ostatnim, ale nie mniej ważnym punktem jest śledzenie użytkowników. Każda aplikacja, nawet jeśli jest przeznaczona tylko do użytku wewnętrznego, ma aktywne sesje i ruch użytkowników. Warto wiedzieć, gdzie użytkownik spędza czas i jak długo to trwa. Dodatkowo, jeśli jest to system transakcyjny (np. sklep internetowy), dobre wdrożenie powinno również mierzyć współczynnik konwersji (ile produktów zostało sprzedanych i jaki był dochód).
Nasze punkty działania:
Google Analytics
Google Enhanced Ecommerce
Menedżer tagów Google
Dynatrace
Czy jesteś gotowy na Go-live?
Nasza lista kontrolna gotowości została przedstawiona w tym artykule. Teraz Twoja kolej - zdefiniuj swoją listę punktów kontrolnych i wybierz narzędzia, które pomogą Ci monitorować aplikację. Jeśli znasz takie narzędzia, daj nam znać w komentarzu.
Ulepszmy razem nasz świat IT!
Jeśli chcesz dowiedzieć się więcej o naszej metodologii, oto jak to robimy.
Chcesz porozmawiać z naszymi ekspertami o rozwiązaniach technologicznych dla Twojej firmy?
[custom_button title="UZYSKAJ BEZPŁATNĄ KONSULTACJĘ IT" url="https://inspeerity.com/software-consultation"]