SPA dla programistów
Autor
Michał Matynia
Dlaczego to robimy?
System informatyczny SPA to coś więcej niż ciepłe kamienie i aromatyczne świece – to najnowsze technologie, przychodzące z pomocą klientom w sytuacjach awaryjnych. Można powiedzieć, że nazwa odpowiada przeznaczeniu – dzięki naszemu SPA, klienci mogą odetchnąć.
System Pomocy Assistance został powołany w 2020 roku w celu zastąpienia jego poprzednika oraz towarzyszących mu narzędzi jednolitym systemem informatycznym, umożliwiającym całościową obsługę spraw – od zgłoszenia przez klienta, przez organizację różnego rodzaju pomocy, aż po rozliczenia z usługodawcami.
Jak do tego podeszliśmy?
W projekcie brały udział 4 doświadczone zespoły: Północ, Wschód, Zachód i… Alpaki.
- Ogromną zaletą nowego projektu była architektura mikroserwisowa. Od wielu lat na konferencjach technologicznych powtarzają się wykłady o przechodzeniu z monolitu w mikroserwisy. W SPA nie musieliśmy na nie chodzić, jesteśmy na tyle sprytni, że bez wykładów wiedzieliśmy, żeby podążyć tą ścieżką. Wybrane przez nas rozwiązanie oparte na kontenerach Docker na Kubernetesie wspierane jest przez zespół DevOps w procesie CI/CD. Odpowiednie wydzielenie domen pozwoliło również na wprowadzenie właścicielstwa zespołów nad poszczególnymi fragmentami systemu. Zespoły mogą dzięki temu koncentrować się na rozwijaniu i poprawianiu przede wszystkim własnego kodu.
- W sercu naszego systemu znalazła się Kafka, odpowiadająca za integracje asynchroniczne. Poszczególnymi procesami biznesowymi i przepływem danych orkiestruje Camunda z wykorzystaniem silnika procesowego BPMN oraz decyzyjnego DMN. Narzędzia te pozwalają zobrazować i łatwiej sterować procesami obsługi spraw, komunikacji czy organizowanych usług. Do monitoringu wykorzystaliśmy popularny stos ELK, a jakości kodu pilnuje Sonar.
- Podczas gdy system SPA zaczął nabierać kształtu, dochodziły kolejne usługi i funkcjonalności, pojawił się pomysł pilotażowego przyspieszenia oddawania zmian biznesowi. Zespoły odpowiedzialne za SPA zadeklarowały, że przy odpowiedniej współpracy z biznesem i niewielkich zmianach w CI/CD, będą w stanie zwiększyć częstotliwość wdrożeń czterokrotnie.
- Przejście na model szybkich wdrożeń, czy tzw. małych porcji, okazał się dużym sukcesem. W tym modelu, bazującym na gitflow, programiści oddają swoje zmiany w dwutygodniowych sprintach i po kilku dniach testów UAT zmiana trafia na produkcję. Wdrożenia typu rolling update są zautomatyzowane i wymagają zaledwie kilku kliknięć, a system zachowuje pełną dostępność.
- Kluczową kwestią przyspieszenia wdrożeń działającego produkcyjnie systemu było ukrycie wprowadzanych zmian do czasu ich zakończenia lub decyzji biznesowej o ich opublikowaniu. Zadanie to realizują feature toggle, z których pomocą sterujemy widocznością wybranych funkcjonalności na poszczególnych środowiskach.
- Model częstego oddawania zmian na produkcję wpłynął bardzo korzystnie na pracę przy systemie. Wymaganych jest mniej testów manualnych, podczas gdy za regresję odpowiadają wyłącznie testy automatyczne. Zespoły są w stanie szybciej naprawiać potencjalne błędy, które wyniknęły w ciągu ostatnich 2 tygodni. Jednocześnie, w każdej chwili możemy realizować poprawki na środowiska UAT lub produkcyjne.
Jakie technologie za tym stoją?
System powstał w oparciu najnowsze wersje języka Java i Spring Framework. Architektura mikroserwisowa bazuje na kontenerach Docker uruchomionych na Kubernetesie. Komunikacją między domenami zarządza Apache Kafka, a za orkiestrację procesów i silnik decyzyjny odpowiada Camunda (BPMN i DMN). Fronty napisane są w Angularze, a testy jednostkowe i integracyjne w Spock Framework.
Testy Automatyczne Regresji oparte są na frameworku Serenity. Używamy również Selenium, Java 17, Cucumbera i Gherkina, dzięki czemu automatyczne testy regresji są zrozumiałe nawet dla nietechnicznych użytkowników systemu. Wspomagamy się REST Assured w celu ustawienia warunków wstępnych testów po API, co przyspiesza wykonywanie testów. Testy uruchamiamy równolegle na klastrze Selenium GRID, dzięki czemu znacznie szybciej otrzymujemy wyniki.
Testy automatyczne regresji pokrywają obecnie ponad 85% wymagań biznesowych.
Liczby, tego projektu
- ok. 25 realizowanych wdrożeń rocznie
- ok. 320 wdrażanych user story rocznie
- ok. 13 user story przekazywanych w wydaniu
- ponad 300 tysięcy obsłużonych spraw i 500 tysięcy usług