Rewolucja DevOps

152

Termin DevOps już od kilku lat nie schodzi z ust programistów i dyrektorów technologicznych na całym świecie. Ten sposób zarządzania stał się ważnym elementem sukcesu dla innowacyjnych firm, a podejście do takiej kultury organizacyjnej oraz jej narzędzia już na stałe weszły do użytku. Z czego wynika rewolucja DevOps i jak najlepiej wykorzystać jej owoce w codziennej pracy?

DevOps to kultura budowy przedsiębiorstw, a w szczególności działów IT. Zakłada ona taki sposób pracy, że rozwój oprogramowania (Dev-Development) jest ściśle powiązany z jego działaniem (Ops-Operations), a odpowiedzialność utrzymuje się w jednym zespole. Jest to diametralnie odmienne podejście w stosunku do kultury, jaka panowała w organizacjach jeszcze na przełomie XX i XXI wieku. Ponad 20 lat temu powszechne było separowanie programistów, którzy podczas tworzenia oprogramowania spełniali określone wymagania niefunkcjonalne i stos technologiczny, od administratorów, którzy utrzymywali maszyny i środowiska produkcyjne. Zespół deweloperski dostarczał gotowe pakiety do wdrożenia aplikacji, a reszta procesu była wyłącznie zadaniem administratorów. Co się zmieniło, że ten podział zniknął, a role tworzenia i utrzymywania oprogramowania połączyły się?

Agile, mikroserwisy i chmura

Poszczególne trendy w branży IT, takie jak agile, mikroserwisy i chmura, wpłynęły na konieczność wprowadzenia nowego podejścia jakim jest DevOps.

Agile stawia nacisk na krótki cykl dostarczania oprogramowania i interdyscyplinarność zespołu projektowego. W trakcie każdego sprintu (zazwyczaj 2 tygodnie) zespół powinien przekazać do produkcji nową funkcjonalność. Pozwala to na elastyczne reagowanie na potrzeby klientów i konkurencji, ale wymaga też dojrzałości w projektowaniu oprogramowania, kompetentnego zespołu oraz automatyzacji, która jest niekwestionowaną królową DevOps. Jeśli budowa aplikacji, testy, wdrożenie i monitorowanie są cykliczne, musi to odbywać się minimalnym nakładem czasu zespołu. Agile to także mnogość kompetencji. Jeśli do uruchomienia systemu potrzebne są określone umiejętności (np. systemów operacyjnych czy sieci), to zespół projektowy powinien je mieć „na pokładzie”. Stąd popularna ostatnio rola „DevOps engineer” – osoby, która zarówno sprawnie posługuje się narzędziami do automatyzacji wdrażania systemów, jaki i ramię w ramię pracuje w samym zespole projektowym.

Gdy mówi się o mikroserwisach, tak naprawdę trzeba przyjrzeć się szerszemu zakresowi zmian, jakie w ostatnich latach nastąpiły w definiowaniu założeń architektonicznych systemów informatycznych. Podczas budowy wielowarstwowej (np. 3-warstwowej – wizualna, logiki biznesowej i danych) i monolitycznej, umówienie się z administratorami było relatywnie proste. Wystarczyło wyspecyfikować potrzebny hardware i jego konfigurację, a samo wdrożenie było relatywnie proste. Można było umówić się na określony serwer aplikacyjny (np. IIS, JBoss, Apache Tomcat), zainstalowane narzędzia (.NET Framework czy określona wersja Javy) i reszta była odpowiedzialnością administratorów. Przy nowoczesnym podejściu, gdzie każdy system jest rozbity na wiele pojedynczych komponentów i każdy może być niezależnie rozwijany, nie jest to takie proste. Niestety w trosce o elastyczność, odporność na awarie, czy skalowalność, ucierpiała łatwość wdrażania. Na szczęście branża IT wypracowała przez ostatnie lata mnóstwo narzędzi, które ułatwiają i automatyzują ten proces. Są to m.in. kontenery, ale także bazy danych, bazy cache, API gateway, systemy kolejkowe i przetwarzania komunikatów – ta lista nie ma końca. Jeśli zespół deweloperski na co dzień decyduje o tym, jakich narzędzi używa, konieczne jest, aby był również odpowiedzialny za ich wdrożenie, konfigurację i integrację.

Chmura publiczna dokłada do tej układanki kolejny poziom złożoności. Dzięki niej, wiele wcześniej wspomnianych komponentów dostępnych jest od ręki (np. tylko Amazon Web Services udostępnia 175 różnych usług i produktów). To zespół deweloperski podejmuje decyzje w jaki sposób najefektywniej stworzyć rozwiązanie. Pisanie każdego komponentu samemu i wdrażanie w modelu IaaS (Infrastructure as a Service) jest stratą czasu i zasobów. Z drugiej strony, to jakich elementów w tej układance należy użyć zależy od licznych czynników m.in. kosztu, elastyczności i odporności na awarie. Chmura publiczna daje jeszcze jeden kluczowy dla DevOps aspekt – dostępność. Każdy zasób jakiego zespół potrzebuje jest dostępny w chmurze po kilku kliknięciach. Dzięki temu, że zasoby są publiczne, oparte na skryptach i komendach, doskonale się automatyzują. Nie dziwi zatem wzrost popularności rozwiązań CI\CD oraz Intrastructure as Code.

Najważniejsze narzędzia DevOps

W ostatnich latach powstało wiele narzędzi DevOps. Wiele z nich ugruntowało już swoją pozycję i stało się wyznacznikiem standardu w danym obszarze. Poniżej opisuję kilka najważniejszych:

  1. SCM (Source Control Management) – umożliwia przechowywanie kodu w sposób dostępny dla wszystkich zainteresowanych, który zapewnia porządek i stabilność. Tu królem jest protokół GIT, który jest oferowany przez wszystkie narzędzia współpracy programistów jak GitLab, GitHub, Bitbucket czy Azure DevOps.
  2. CI (Continuous Integration) – pomaga sprawdzać czy stale integrowany i budowany przez programistów kod jest bezbłędny i spójny. Tu ponownie standardem jest GitLab lub Azure DevOps Pipelines.
  3. Automatyzacja Testów – testy jednostkowe, integracyjne i end-to-end są powszechną praktyką w projektach. Zespół powinien dysponować narzędziem, które regularnie uruchamia testy w sposób niezależny. Wraz z rozwojem architektury w stronę budowania API, popularność zyskują narzędzia do testów (SoapUI czy Selenium).
  4. CD (Continous Deployment) – wymaga zestawu narzędzi, który wdroży artefakty systemu na poszczególne środowiska. Warto wspomnieć o zarządzaniu konfiguracją (Ansible, Chef, Puppet) oraz o definiowaniu wdrożeń poprzez kod (IaC) jak AWS Cloud Formation czy Terraform. Ten ostatni automatyzuje wdrożenie na dowolną chmurę lub do własnego data center w modelu on-prem.
  5. Gdy większość nowych aplikacji wdraża się jako kontenery, do standardowego stosu DevOps dołączył Kubernetes oraz narzędzia, które ułatwiają pracę z kontenerami jak OpenShift czy Docker Swarm. W przypadku chmur publicznych są to usługi takie jak AKS czy EKS.

DevOps niekwestionowaną przyszłością IT

To, że DevOps wszedł do światowego krwiobiegu IT nie powinno już nikogo dziwić. Wymagana szybkość, pewność wprowadzania zmian i oczekiwania względem systemów (elastyczność, skalowalność, odporność), doprowadziły do wyłonienia się tej nowej specjalizacji i całego ogromu narzędzi. Kierunek, w którym całe organizacje, a nie tylko działy IT, implementują filozofię DevOps jest obecnie jedynym oczywistym wyborem dla liderów technologicznych.


Autor: Marcin Dąbrowski, dyrektor ds. innowacji w ITMAGINATION

Komentarze
Ładowanie...

W ramach naszej witryny stosujemy pliki cookies w celu świadczenia Państwu usług na najwyższym poziomie, w tym w sposób dostosowany do indywidualnych potrzeb. Korzystanie z witryny bez zmiany ustawień dotyczących cookies oznacza, że będą one zamieszczane w Państwa urządzeniu końcowym. Możecie Państwo dokonać w każdym czasie zmiany ustawień dotyczących cookies. Akceptuję Dowiedz się więcej