Automatyzacja dystrybucji oprogramowania przyspiesza dostarczanie usług

Materiał promocyjny Zastosowanie metodyki i narzędzi DevOps przynosi szereg korzyści wynikających m. in. z automatyzacji procesów wdrażania aplikacji, które dotychczas wymagały ręcznej pracy. O doświadczeniach wynikających z wdrożenia tego typu narzędzi opowiada Jacek Bednarczuk, Lider Systemów Inwentaryzacji Sieci w firmie Netia.

Piotr Pietruszyński: Czym według Ciebie jest wdrażanie oprogramowania (software deployment)?

Jacek Bednarczuk: To bardzo dobre pytanie. Wiele osób sądzi, że proces wdrażania oprogramowania rozpoczyna się w momencie budowania paczki z kodem wykonywalnym. W moim rozumieniu, ale i w kontekście aplikacji IBM UrbanCode, której używamy w tym obszarze, proces ten zaczyna się gdy paczka jest już zbudowana, a my chcemy ją wdrożyć na serwerze. Z repozytorium paczek wybieramy pożądaną wersję oprogramowania, instalujemy ją i uruchamiamy na określonym serwerze.

Dlaczego postanowiliście wdrożyć podejście DevOps?

W Netii, w moim obszarze mamy trzy komplety środowisk testowych, jedno przedprodukcyjne oraz jedno produkcyjne. Oznacza to, że ten sam system występuje co najmniej pięć razy w różnych środowiskach, za które odpowiadają analitycy systemowi (testy) oraz administratorzy (gold, produkcja). Jednym z celów wdrożenia narzędzi DevOps było uproszczenie procesu zarządzania aplikacjami uruchamianymi w tych środowiskach.

W jaki sposób pomogła w tym aplikacja IBM UrbanCode?

Narzędzia DevOps, a do tej grupy należy IBM UrbanCode, pozwalają zautomatyzować procesy, które dotychczas wymagały ręcznej pracy. Przed automatyzacją wdrożenie nowej wersji oprogramowania wymagało wejścia do repozytorium paczek i pobrania potrzebnego archiwum. Kolejnym krokiem było zalogowanie się do zdalnego hosta, zatrzymanie serwera aplikacyjnego, podmiana paczki i ponowne uruchomienie serwera. IBM UrbanCode ogranicza te czynności do wybrania paczki z oprogramowaniem.

Dlaczego to takie ważne?

O sile tego narzędzia przekonujemy się, gdy musimy zarządzać wieloma środowiskami uruchomieniowymi i farmą serwerów. IBM UrbanCode automatyzuje żmudne, powtarzalne operacje, które nie wnoszą nic nowego do projektu, a jedynie zajmują czas analityków albo administratorów. Poza tym, DevOps porządkuje pewne sprawy na wypadek gdyby informatyk zapomniał wgrać nową paczkę na którymś z serwerów w farmie.

Jakie inne korzyści udało się uzyskać z wdrożenia DevOps?

Wszystkie parametry połączeń do środowisk testowych są dostępne w jednym miejscu. Nie trzeba pamiętać nazw serwerów oraz haseł logowania, które teraz przechowywane są w narzędziu DevOps.

Poprzednio brakowało informacji kto i kiedy wprowadził aktualizacje oprogramowania. IBM UrbanCode rejestruje wszystkie te zdarzenia, dzięki czemu można na bieżąco monitorować jak często dostarczane są nowe wersje oprogramowania oraz czy proces aktualizacji zakończył się sukcesem.

Jak często stosujecie zautomatyzowane wdrożenia w waszej organizacji?

Narzędzi DevOps zauważalnie częściej używamy w środowiskach testowych, gdzie liczba wprowadzanych zmian (łatki, testy) jest wielokrotnie większa niż w instalacji produkcyjnej. W środowisku testowym pojawiają się też dodatkowe wymagania dotyczące śledzenia czy wycofywania wersji. Niemniej w Netii narzędzia automatyzujące procesy dostarczania oprogramowania stosujemy w środowiskach testowych i produkcyjnym.

Jakie będą kolejne kroki w rozwoju projektu?

Zadania dostarczania oprogramowania warto powiązać z procesami wydawania kolejnych wersji oprogramowania. W kontekście IBM UrbanCode oznacza to integrację narzędzi UrbanCode Deploy (wcześniej uDeploy) z UrbanCode Release (uRelease).

W UrbanCode Release tworzony jest harmonogram wydania nowej wersji oprogramowania, który propagowany jest do systemu UrbanCode Deploy. Administrator systemu dostaje zadanie, aby dostarczyć aktualne wersje oprogramowania do środowiska uruchomieniowego. Jeśli zostanie to wykonane, następuje publikacja odwrotna do UrbanCode Release i wydanie oprogramowania.

Bez tego, osoba odpowiedzialna za publikację oprogramowania musi wykonywać szereg zbędnych prac związanych z tworzeniem zleceń łatania środowiska, weryfikacji wykonanych prac, sprawdzenia ewentualnych problemów itd. UrbanCode Release automatyzuje te procesy także w kontekście przenoszenia wersji oprogramowania ze środowisk testowych do środowiska produkcyjnego.

Co poradziłabyś menedżerowi IT, który chciałby wdrożyć DevOps w swojej organizacji?

Zakres wdrożenia powinien być dostosowany do obszaru i specyfiki pracy działów deweloperskich i operacyjnych. Warto nakreślić cele oraz korzyści, które może przynieść wdrożenie narzędzi DevOps. W Netia wybraliśmy pięć systemów, w których staraliśmy się wprowadzić automatyzację. Projekt został zakończony sukcesem, choć nie obyło się bez problemów. Nadal pracujemy nad rozwojem tego systemu m.in. w zakresie głębszej integracji narzędzi UrbanCode Deploy z UrbanCode Release.

W żadnym przypadku nie należy popadać w hurraoptymizm, bowiem IBM UrbanCode, mimo że projektowany jest jako produkt uniwersalny, nie zawsze spełnia specyficzne wymagania niektórych organizacji. Aplikacja doskonale nadaje się do wdrażania oprogramowania pisanego w Javie, gdzie wystarczy podmienić paczkę z oprogramowaniem. Do dyspozycji mamy także szereg wtyczek obsługujących wiele innych technologii.

W Netii spotkaliśmy się z problemem automatyzacji procesów dostarczania aplikacji pisanych w niszowych technologiach np. używanych w naszym systemie Network Inventory. W UrbanCode musieliśmy przygotować dla nich własne skrypty, które pozwoliły obsłużyć te procesy.

Nie należy zapominać, że DevOps także wymaga utrzymania. Za każdym razem należy więc rozważyć wszystkie „za” i „przeciw”, co pozwoli ocenić , czy koszty wdrożenia nie przeważą nad korzyściami. . Jednak w wypadku większych środowisk i farm serwerów wybór wydaje się oczywisty.