Blog: Zarzadzanie i organizacja projektow it | Metodyka devops | Narzedzia devops 2 | Metodyka devops 2

DevOps: Burzenie muru pomiędzy developerami i utrzymaniem.

DevOps: Burzenie muru pomiędzy developerami i utrzymaniem.
  • 1 256 views

Jeszcze kilka lat temu zespoły odpowiedzialne za wytwarzanie oprogramowania pracowały w zupełnie innym sposób. Obecnie panującym trendem stał się DevOps ..

Udostępnij!

… i coraz więcej menedżerów decyduje się na jego wprowadzenie do swoich procesów. Warto jednak dokładnie zrozumieć czym jest ta metodyka i kiedy warto ją stosować. DevOps to przede wszystkim zmiana postrzegania procesu życia oprogramowania oraz zaimplementowanie odpowiednich procesów i narzędzi.

Od czego się zaczęło?

Zrozumienie przesłanek stojących za sukcesem metodyki DevOps wymaga przyjrzenia się procesowi Application LifeCycle Management, czyli cyklowi życia aplikacji. Ten powszechnie stosowany i zaimplementowany w większości firm proces zakłada, że tworzenie aplikacji składa się z dwóch faz, które następują po sobie i tworzą zamknięty cykl.

Pierwsza faza związana jest z developmentem aplikacji. Jej etapy to:

  • Kodowanie
  • Budowanie
  • Testowanie

Efektem tej fazy jest wypuszczenie kolejnej wersji aplikacji.

W tym momencie rozpoczyna się faza szeroko pojętej eksploatacji, której etapami są:

  • Wdrożenie
  • Utrzymanie
  • Monitorowanie

Zebrane błędy i sugestie w trakcie tej fazy stanowią wstęp do etapu planowania kolejnej wersji, czyli wejścia w fazę develomentu, co zamyka cały cykl. W klasycznym modelu organizacji zespoły developerskie oraz utrzymaniowe są od siebie całkowicie niezależne i mają oddzielne piony kierownicze. Zazwyczaj są także finansowane z zupełnie innych budżetów. Środki na rozwój pochodzą z CAPEXu (wydatki inwestycyjne na rozwój produktu lub wdrożenie systemu) i to ten dział jest uznawany za ten, który generuje zyski. Z kolei Utrzymanie jest kosztem księgowanym po stronie OPEXu (wydatki na utrzymanie produktu, biznesu czy systemu) i jest traktowany jako zespół generujący koszty.

Ten tradycyjny model zarządzania buduje mur pomiędzy obiema fazami cyklu. Obie strony odpowiedzialne za tworzenie tej samej aplikacji w rzeczywistości realizują dwa przeciwstawne cele. Dochodzi do tego, że optymalizacje czynione po jednej stronie generują dodatkowe zadania i trudności po drugiej stronie. Wydłuża to czas wdrożenia konkretnych funkcji, obniża jakość tworzonych rozwiązań oraz tworzy dodatkowe koszty w całościowym spojrzeniu.

Czym jest DevOps

Nazwa DevOps jest skrótem stworzonym z połączenia angielskich słów Development oraz Operations. Jest to metodyka realizująca działania w oparciu o synergię zespołów developerskich oraz utrzymaniowych. Uwzględnia wzajemną zależność oraz wspólny cel obu tych obszarów, czyli tworzone oprogramowanie. DevOps dąży do skrócenia czasu trwania pojedynczego cyklu oraz zmniejszenia kosztów rozwoju oprogramowania. Zalecanym przez DevOps sposobem pracy jest zastosowanie programowania zwinnego (Agile), które pozwala na zaangażowanie w proces tworzenia aplikacji członków obu działów.

Środowisko pracy i narzędzia

DevOps opiera swoją siłę na onarzędziowaniu całego procesu tworzenia aplikacji. Narzędzia i systemy jakie należy wdrożyć pokrywają następujące obszary:

  • Komunikacja
  • Toolchainy
  • Środowisko wdrożeniowe.

Krótki cykl wytwarzania aplikacji, częste wdrożenia oraz praca w metodykach zwinnych przy udziale zarówno developerów jak i specjalistów utrzymania wymaga zastosowania narzędzi współpracy takich jak Scrum Boardy oraz wideokonferencje. Obie strony procesu muszą być świadome potrzeb i wymagań stojących po drugiej stronie a synergia powinna dotyczyć każdego etapu cyklu życia aplikacji.

DevOps to również infrastruktura służąca do zautomatyzowania całego procesu. Każdy z etapów wytwarzania oprogramowania powinien być pokryty odpowiednim narzędziem oraz pozostawać zintegrowany z systemami obsługującymi pozostałe etapy procesu. Taką sekwencję zintegrowanego oprogramowania nazywa się Toolchainem.

Minimalny zestaw użytych narzędzi w metodyce DevOps pokrywa następujące obszary:

  • System kontroli wersji
  • Narzędzia klasy CI/CD
  • Automatyzację testów
  • System monitorowania
  • BugTracker

Ostatnie wymagane zadanie, to przygotowanie odpowiedniego środowiska wdrożeniowego. Zastosowanie zwirtualizowanych aplikacji opartych na chmurze bądź systemów skonteneryzowanych przyspiesza i ułatwia proces wdrożenia oraz przygotowania środowisk testowych. Możliwe jest wprowadzenie zmian w środowisku bez przerw w działaniu aplikacji, a w przypadku wykrycia nieprawidłowości wprowadzone poprawki da się w bardzo łatwy sposób wycofać. Docelowym rozwiązaniem powinno być także zaimplementowanie narzędzi orkiestracji, które automatyzują również sam proces wdrożenia aplikacji.

Podsumowanie

Jak widać DevOps nie polega jedynie na stworzeniu zespołu o określonej nazwie i kompetencjach. Praca zgodna z założeniami tej metodyki wymaga zmiany podejścia, przeprojektowania procesów oraz zbudowania odpowiedniego środowiska. W zamian otrzymujemy skrócony cykl życia aplikacji, a jakość tworzonego oprogramowania staje się wyższa. Integracja dwóch zespołów usprawnia komunikację oraz poprawia relacje między pracownikami. DevOps to także zestaw narzędzi, które umożliwiają monitorowanie i nadzorowanie każdego z etapów procesu, a automatyzacja zmniejsza nakłady pracy wymagane do wykonania określonych czynności i niweluje błędy spowodowane czynnikiem ludzkim.