Jak przyspieszać produkcję, wdrażanie i utrzymanie oprogramowania dzięki automatyzacji
Jedna z największych grup medialno-telekomnikacyjnych w Europie wypracowała we współpracy z architektami Mindbox zestaw dobrych praktyk i gotowych szablonów, które umożliwią przyspieszenie dostarczania nowych wersji oprogramowania klientom końcowym, ułatwią ich utrzymanie i rozwój. Dzięki nim można wdrażać więcej nowych funkcji w krótszym czasie, zmniejszać liczbę awarii a przy tym ograniczać koszty.
Grupa ta to największy dostawca zintegrowanych usług multimedialnych w Polsce. Zajmuje pozycję lidera na rynku płatnej telewizji, posiadającym wiodącą pozycję na rynku telekomunikacyjnym oraz prywatnych nadawców telewizyjnych.
Chcąc utrzymać swoją pozycję na rynku a zarazem wzmacniać przewagę konkurencyjną Grupa uruchomiła szeroką zakrojoną cyfrową transformację, której jednym z głównych nurtów jest przejście do nowego modelu wytwarzania oprogramowania i dostarczania go do klienta końcowego. Ta inicjatywa, bazująca na metodykach agile oraz podejściu DevOps, ma umożliwić zwiększenie szybkości działania organizacji wchodzących w skład Grupy i podniesienie produktywności przy jednoczesnym obniżeniu kosztów.
Wyzwanie: przyspieszenie transformacji do nowego modelu wytwarzania oprogramowania
Nowoczesna gospodarka cyfrowa opiera się na aplikacjach. Dlatego zwiększenie efektywności pracy programistów, skrócenie czasu wprowadzania nowych wersji oprogramowania a przy tym ułatwienie pracy specjalistom od operacji IT ma ogromne znaczenie dla osiągnięcia sukcesu biznesowego. Ostatecznym efektem jest bowiem szybsze dostarczanie lepszych jakościowo produktów klientom końcowym przy ograniczaniu kosztów.
W nowym świecie zwinnych metodyk i podejścia DevOps programiści otrzymują niezbędne zasoby – o ile jest to zgodne z firmową polityką – w sposób zautomatyzowany i natychmiastowy. Wystarczy, że opiszą środowisko, którego potrzebują i niemalże od ręki mają je do dyspozycji. Co więcej, po napisaniu kodu, nie trzeba organizować testów i prosić o akceptację potrzebną do wdrożenia programu na produkcji. Te działania są w dużej mierze zautomatyzowane a efekty pracy algorytmów są jedynie weryfikowane i akceptowane przez człowieka.
W tym nowym świecie fundamentem architektury aplikacyjnej są mikrousługi. Każda aplikacja składa się z wielu standardowych elementów, serwisów, które działają niezależnie od siebie. Dzięki temu wprowadzanie zmian w aplikacjach odbywa się błyskawicznie i bezproblemowo. Kiedy aktualizujemy jedną z mikrousług, pozostałe cały czas mogą działać. Nie potrzeba długich okien serwisowych, żeby wprowadzać ulepszenia nawet w największych i najbardziej skomplikowanych systemach.
Historycznie większość procesów związanych z produkcją aplikacji, ich wdrażaniem, utrzymaniem i rozwojem w tej Grupie miała charakter ściśle manualny. Dopiero później, wraz z popularyzacją wirtualizacji a następnie kontenerów, udało się zwiększyć efektywność w tym obszarze. Stosunkowo szybko dostrzeżono jednak, że istnieje dalsze pole do optymalizacji w zakresie infrastruktury i produkcji oprogramowania. Automatyzacja tworzy możliwości szybszego wdrażania klastrów Kubernetes. Cały proces nie wymaga angażowania nikogo po stronie operacji.
Jedna z największych grup medialno-telekomnikacyjnych w Europie, o której mowa, podobnie jak wszystkie inne duże organizacje, posiada silne, a zarazem mocno ustabilizowane struktury IT. Jednocześnie mierzy się z długiem technologicznym, który powstał na przestrzenie wielu lat. W takiej sytuacji zwykle potrzebne jest profesjonalne wsparcie z zewnątrz. Niezbędne jest do tego dobre rozpoznanie na rynku nowych technologii, ale zarazem doświadczenie, które umożliwia ich produkcyjne wdrożenie. Mając takiego partnera można szybciej nadgonić czas.
Grupa potrzebowała wsparcia w uruchomieniu i przeprowadzeniu transformacji w tym obszarze. Na partnera a zarazem mentora tej inicjatywy wybrała Mindbox. Plan współpracy zakładał przygotowania szablonów działań i wypracowanie dobrych praktyk na przykładzie jednej z firmowych aplikacji.
Rozwiązanie: szablony, które przyspieszają udostępnianie infrastruktury i zarządzanie nią w zautomatyzowany sposób
W ramach projektu architekci Mindbox prowadzili warsztaty, w których uczestniczyli zarówno programiści jak i specjaliści od infrastruktury Grupy. Celem było opracowanie najbardziej efektywnych metod współpracy, tworzenia środowisk, generowania kodu, testowania go oraz wdrażania na produkcji a także późniejszego utrzymywania i rozwijania.
Końcowym efektem prac były szablony i kod, które umożliwią proste a zarazem szybkie wykorzystanie wypracowanych standardów.
Szablon to de facto kod, którego uruchomienie na podstawie zdefiniowanych wartości uruchamia klaster obliczeniowy, składający się z określonej liczby maszyn o określonych parametrach. Na tych klastrach obowiązują określone ustawienia zarządzania aplikacjami. Działają na nich także komponenty, które kolekcjonują na bieżąco informacje o działaniu aplikacji.
Szablony są parametryzowalne, co pozwala na dostosowywanie uruchamianej infrastruktury do potrzeb konkretnych zespołów. Jedna grupa może potrzebować klastra składającego się z większej liczby maszyn, a inna potrzebuje określonego zestawu komponentów systemowych, których nie potrzebują pozostałe zespoły. Inne szablony służą dostarczeniu aplikacji odpowiedzialnej za obsługę aplikacji w skali jej całego cyklu użytkowania. Zawiera ona repozytorium kodów, system testowy i system wdrożeniowy.
Przykładowo, kiedy zespół odpowiedzialny za aplikacje VOD chce wprowadzić do niej nowe funkcje, wystarczy, że określi czego potrzebuje, a odpowiednie zasoby zostaną im udostępnione. Później wytworzony kod będzie przechowywany w określonym miejscu, a testy i wdrożenie zostaną zrealizowane zgodnie z firmową polityka. Wszystko to w maksymalnie zautomatyzowany sposób.
Korzyści: przyspieszenie pracy, automatyzacja, większa niezawodność i mniejsze koszty
Ostatecznie Grupa medialno-telekomnikacyjna może dzięki wypracowanym szablonom wdrażać nawet kilkanaście nowych funkcji miesięcznie, podczas gdy dotąd była to jedna czy dwie funkcje na miesiąc. Udało się także znacznie zmniejszyć liczbę awarii, ponieważ wbudowaną możliwością tego nowego, zautomatyzowanego środowiska jest natychmiastowy restart nie działającej poprawnie aplikacji bez konieczności udziału człowieka.
Całe nowe środowisko jest opisane kodem. Nie trzeba praktycznie nic robić ręcznie. Nawet w sytuacji awaryjnej, istnieje kod, który dokładnie opisuje uruchomienie infrastruktury od nowa. Wszystkie procesy tworzenia i zarządzania infrastrukturą związaną z uruchamianiem tworzonego przez programistów oprogramowania są zautomatyzowane.
Jednocześnie całe środowisko jest w pełni skalowalne w każdej z warstw – fizycznej, serwerów aplikacyjnych i samej aplikacji. Przy tym zasoby zostały w pełni zdemokratyzowane poprzez skalowanie horyzontalne. Dzięki temu, że środowisko budowane jest z wielu mniejszych, stosunkowo tanich maszyn, o wiele łatwiej je rozbudowywać i w każdej chwili można dodać nowe zasoby. Co więcej, zasoby te w krytycznych sytuacjach można w prosty sposób rozszerzać o chmurę publiczną.
Podobnie jest na poziomie aplikacyjnym. Kiedy nagle wiele osób zaczyna odwoływać się do danej aplikacji, to ona automatycznie skaluje się do odpowiedniej ilości kopii, z których wszystkie są logicznie odseparowane. Aplikacja może działać w jednej lub np. 50 kopiach – w zależności od bieżących potrzeb.
Niebagatelne znaczenie ma także wzrost niezawodności działania aplikacji. Jeśli zasoby w jednym ośrodku przetwarzania ulegają awarii, to automatycznie aplikacje przełączają się na inne zasoby, w innym ośrodku.
Wreszcie warto dodać, że nowe środowisko zwiększa także kontrolę nad wprowadzanymi zmianami. Istnieje możliwość przywracania stanu sprzed zmiany, która ma negatywny wpływ na działanie systemu. Oznacza to łatwiejsze odtwarzanie środowisk i prostsze tworzenie nowych.