Bamboo Umbrella czyli wdrożenia na petardzie
W erze mikroserwisów, konteneryzacji i wielozespołowego rozwoju oprogramowania, sukces projektu coraz częściej zależy nie od samego kodu, ale od sposobu jego dostarczania. Dynamiczne środowiska IT (a za takie należy uznać nasze;) wymagają narzędzi, które zapewnią powtarzalność, automatyzację i możliwość pełnej obserwacji procesu wdrożeniowego.
Autor
Mateusz Lipiński
Autor
Mateusz Wojsa
Krótki opis projektu
Bamboo Umbrella to nasza komplementarna odpowiedź na te potrzeby. Gdyby pokusić się o jego definicję, nazwalibyśmy go wewnętrznym orchestratorem CI/CD, integrującym istniejące pipeline’y, standardy i praktyki DevOps w jedno spójne środowisko. Dzięki temu rozwiązaniu możemy automatyzować krytyczne etapy procesu wydawniczego, porządkować cykl życia artefaktów i precyzyjnie zarządzać wdrożeniami – od pull requesta po rollout na produkcję.
Dlaczego to zrobiliśmy
Wraz ze wzrostem skali projektów i liczby zespołów programistycznych, w PZU IT pojawiła się potrzeba ustandaryzowania i usprawnienia procesu CI/CD. Bamboo Umbrella stworzyliśmy jako mechanizm zarządzający działaniami wokół cyklu wydawniczego – od obsługi pull requestów, przez walidację artefaktów, aż po ich wdrożenie i retencję.
Rozwiązanie pozwala na:
- wdrażanie części monolitycznej aplikacji bez przerywania dostępności środowiska;
- jednolity sposób wdrożenia aplikacji niezależnie od środowiska;
- realizację złożonych pipeline’ów CI/CD opartych o Atlassian Bamboo;
- integrację z Git i automatyzację zarządzania branchami oraz weryfikację PR przed release'm;
- automatyczne tworzenie i publikację build planów;
- kontrolę wersji i retencję artefaktów w repozytorium Harbor;
- pilnowanie kompletności procesu wydawniczego;
- łatwiejszą automatyzację release’ów oraz rolloutów aplikacji w środowiskach docelowych.
W skrócie: Bamboo Umbrella porządkuje, standaryzuje i przyspiesza proces dostarczania aplikacji w całej organizacji, zwiększając jego niezawodność, bezpieczeństwo i przewidywalność.
Jak do tego podeszliśmy
W pierwszej kolejności zidentyfikowaliśmy powtarzalne zadania w procesie wytwórczym, które nadmiernie obciążały zespoły deweloperskie i administracyjne, takie jak manualna konfiguracja planów build'ów, ręczne wdrożenia czy walidacja branch'ów. Zmapowaliśmy te obszary oraz określiliśmy punkty krytyczne, w których brak standaryzacji skutkował opóźnieniami lub ryzykiem błędu.
Na tej podstawie zaprojektowaliśmy koncepcję orkiestratora CI/CD, który automatyzuje typowe scenariusze, uszczelnia przepływ wdrożeniowy i zapewnia zgodność z najlepszymi praktykami DevOps. Kluczowe przy tym było zachowanie elastyczności. Nasze rozwiązanie miało nie tylko wspierać różne zespoły i typy aplikacji (w tym monolity), ale też integrować się z istniejącym ekosystemem narzędzi: Bamboo, Git, Harbor i systemami monitoringu.
Budowa Bamboo Umbrella przebiegała iteracyjnie. W kolejnych fazach wdrażaliśmy kolejne funkcjonalności: od automatyzacji publikacji planów build'ów, przez weryfikację PR, aż po zarządzanie rollout'ami aplikacji. Każdy komponent był rozwijany z myślą o reużywalności i rozszerzalności, z założeniem, że będzie służył dziesiątkom zespołów w całej organizacji.
Jakie technologie za tym stoją
Bamboo Umbrella to aplikacja webowa oparta na architekturze klient-serwer, zbudowana z wykorzystaniem sprawdzonych i wydajnych komponentów technologicznych. Część back-endową zaimplementowaliśmy w języku Java z wykorzystaniem frameworka Spring Boot, co zapewnia wysoką wydajność, modularność oraz łatwość integracji z zewnętrznymi systemami (takimi jak Bamboo, Git czy Harbor). Udostępniane API pozwala na uruchamianie procesów bezpośrednio z poziomu narzędzi zewnętrznych.
Interfejs użytkownika oparliśmy na Angularze, co przekłada się na tworzenie responsywnych ekranów do zarządzania procesami CI/CD – takich jak lista pipeline’ów, historia wdrożeń czy manualne rollouty.
Do przechowywania danych tymczasowych i cache’owania operacji aplikacja wykorzystuje Redis, co znacząco redukuje czas odpowiedzi i obciążenie serwera bazowego przy dużym wolumenie operacji.
Autoryzacja i uwierzytelnianie użytkowników realizowane są w pełni poprzez SSO (Single Sign-On) zintegrowane z centralnym mechanizmem w PZU. Logowanie odbywa się na podstawie tożsamości korporacyjnej, a uprawnienia są mapowane na role systemowe, co pozwala na kontrolę dostępu do funkcji takich jak zatwierdzanie release’ów czy rollback produkcji.
Aplikacja działa na platformie Sahul, wewnętrznym środowisku kontenerowym opartym o Kubernetes, co zapewnia skalowalność, wysoką dostępność oraz integrację z monitoringiem i systemami logowania.
Integralnym elementem środowiska jest również Japet, platforma wspierająca konteneryzację baz danych, wykorzystywana do dynamicznego uruchamiania instancji baz w izolowanych środowiskach.
Liczby, tego projektu 
Efekty wdrożenia Bamboo Umbrella są mierzalne zarówno w skali operacyjnej, jak i organizacyjnej. Automatyzacja procesu CI/CD przełożyła się na konkretne usprawnienia, które poprawiają komfort pracy nie tylko zespołów deweloperskich, ale też, co niezwykle ważne, użytkowników końcowych.
A co do konkretów...
- 23 aktywnych użytkowników korzystających z narzędzia na co dzień (wcześniej: tylko 2 osoby z pełną wiedzą i uprawnieniami - kontrast, który znacząco podbija skalę sukcesu rozwiązania);
- Wzrost liczby wdrożeń z 4 miesięcznie (wyłącznie w godzinach nocnych 22:00–24:00) do nawet 5 jednego dnia (aktualny rekord!) w godzinach 8:00–16:00 – zgodnie z harmonogramem i bez przestojów,
- Pełna automatyzacja wdrożeń na środowiska testowe – wcześniej wykonywane ręcznie wyłącznie w oknach serwisowych;
- Redukcja czasu wydania paczki produkcyjnej z 8 godzin do 2 minut. Robi wrażenie, prawda?
- Maksymalny czas od podjęcia decyzji do wdrożenia na produkcję: 30 minut, czyli przeciętna długość odcinka ulubionego serialu;);
- Eliminacja zamrażania kodu w 12 modułach – wcześniej wstrzymywane indywidualnie, obecnie procesy realizowane zgodnie z kalendarzem wydań.