usługi

Metodyka DevOps - wszystko, co musisz wiedzieć, aby ją wdrożyć

Pandemia doskonale pokazała, dlaczego wzrost wydajności w obszarze tworzenia oprogramowania jest kluczowy nie tylko dla rozwoju, ale często dla przetrwania przedsiębiorstw. Rok 2020 sprawił, że nastąpił szybszy zwrot w stronę usług i produktów cyfrowych. Zwiększyło się też zapotrzebowania na usługi DevOps, których głównym celem jest usprawnienie cyklu wydawniczego dzięki automatyzacji. Okazało się jednak, że w wielu firmach brakuje odpowiednich kompetencji. Jak zatem sprostać tym wyzwaniom i zapewnić firmie konkurencyjność?

Według badania McKinseya (1) w czasie kryzysu firmy działały od 20 do 25 razy szybciej niż oczekiwano, jeśli chodzi o tworzenie ofert i ulepszeń cyfrowych. A w obszarze pracy zdalnej nawet 40 razy szybciej. Respondenci twierdzili, że wdrożenie takiego poziomu organizacji pracy zdalnej zajęłoby wcześniej rok. W czasie pandemii wdrożenie działającego rozwiązania zajęło średnio 11 dni, a większość firm zrobiła to w ciągu kilku miesięcy.

Nie byłoby to możliwe bez technologii, a zwłaszcza chmury obliczeniowej i związanych z nią udogodnień. Inwestycje w infrastrukturę chmurową pozwoliły zapewnić bezpieczniejsze i bardziej efektywne środowisko dla rozwoju aplikacji. A ponieważ modele chmurowe takie jak PaaS czy IaaS wymagają inteligentnej automatyzacji, naturalną konsekwencją była (i jest) rosnąca potrzeba wdrożenia kultury i metodyki DevOps. Jej nadrzędnym celem jest bowiem automatyzacja przepływów pracy.

Czym jest DevOps?

W tradycyjnym modelu tworzenie i wdrażanie systemów oraz ich obsługa były osobnymi, rozdzielnymi procesami. Gdy kończył się pierwszy (Development) i programiści kończyli pracę nad aplikacją oraz wdrażali ją na produkcję, zaczynał się drugi (Operations), w którym docelowi użytkownicy dopiero ją testowali. Rozpoczynało się długotrwałe eliminowanie błędów, usuwanie awarii i rozwiązywanie problemów. Cykl produkcyjny potrafił trwać kilka-kilkanaście miesięcy i owocował wdrażaniem na produkcję niedopracowanych rozwiązań. Z czasem powodowało to coraz więcej napięć między programistami a pracownikami operacyjnymi.

Taki model pracy przestał się sprawdzać, w miarę rozrostu systemów i stopnia ich skomplikowania. Trzeba było doprowadzić do większej współpracy obu grup i sprawnego przepływu informacji zwrotnej, a ostatecznie zapewnić bardziej płynny proces rozwoju aplikacji. Tak zrodziła się kultura pracy DevOps.

DevOps przede wszystkim obejmuje dobre praktyki, ale i konkretne narzędzia oraz technologie umożliwiające ich realizację. Opiera się na odpowiednio usystematyzowanej współpracy zespołów programistycznych i operacyjnych, wspieranej przez automatyzację procesów i zadań. Podstawą tej metodyki jest ciągłe uczenie się (Continous Learning). Sprzyja temu wspólne rozwiązywanie problemów, które powinno zastąpić dawne „odbijanie piłeczki” miedzy działami. W obszarze tworzenia oprogramowania metodyka DevOps polega na ciągłym budowaniu, testowaniu i wdrażaniu. Programiści "wypuszczają" częściej mniejsze zmiany w systemie, które są na bieżąco testowane i dopiero po usunięciu ewentualnych usterek, wdrażane na produkcję.

Korzyści z metodyki DevOps

Metodyka DevOps to połączona moc szybkich cyklów wydawniczych i automatyzacji, która pozwala:

  • skrócić i usprawnić czas pracy nad projektami,
  • zmniejszyć liczbę błędów i odrzuconych zmian,
  • zwiększyć efektywność zespołów,
  • skrócić Time-to-market,
  • zapewnić wyższą jakość aplikacji,
  • obniżyć koszty produkcji rozwiązań,
  • zapewnić skalowalność i wysoka dostępność aplikacji,
  • zminimalizować czas przestojów,
  • zwiększyć satysfakcję zespołów.

Trzy filary metodyki DevOps

Szybkie przechodzenie od pomysłu do wdrożenia wymaga innego podejścia i narzędzi, niż te dotąd wykorzystywane. Z metodyką DevOps wiąże się wiele praktyk i technologii, jednak trzy z nich miały fundamentalne znaczenie dla jej rozwoju, umożliwiając realizację głównego celu: skrócenia cyklów wydawniczych. Są to:

1. Chmura

Pierwszym filarem jest chmura obliczeniowa, która pozwala z sukcesem realizować założenia DevOps, zapewniając elastyczne i skalowalne środowisko IT. Dzięki niej twórcy oprogramowania zyskują wygodny dostęp do nieograniczonych zasobów, bez konieczności zakupu i utrzymania fizycznych serwerów. Szybkie konfigurowanie środowiska i wdrażanie aplikacji, a także możliwość dynamicznego zarządzania zasobami, zwiększają wydajność zespołów przy jednoczesnym obniżeniu kosztów.

2. CI / CD

Drugim filarem metodyki DevOps, a jednocześnie najważniejszą praktyką, jest CI / CD. CI czyli integracja ciągła (Continuous Integration) oraz CD, czyli ciągłe dostarczanie i wdrażanie (Continuous Delivery i/lub Deployment), pozwalają programistom efektywniej i bezpieczniej rozwijać systemy. Ciągła integracja polega na wdrażaniu niewielkich zmian i częstego weryfikowania kodu w systemach kontroli wersji (np. Git), umożliwiając błyskawiczne wyłapanie nieprawidłowości i wprowadzenie poprawek. Kolejny etap to ciągłe dostarczanie, które opiera się na automatyzacji wdrażania aplikacji do różnych środowisk programistycznych i testowych. Ciągła integracja i ciągłe dostarczanie wymagają ciągłego testowania, aby zwiększyć gwarancję dostarczanie wysokiej jakości aplikacji. Wszystkie te procesy, wraz z procedurą wdrażania aplikacji, odbywają się automatycznie.

3. Kontenery i Kubernetes

Z automatyzacją procesów CI / CD nierozerwalnie wiąże się technologia konteneryzacji. Szybkie cykle wdrażania wymagają zmiany nie tylko w podejściu do sposobu dostarczania oprogramowania, ale także do jego budowy i wdrażania. Odejście od monolitycznej architektury systemów na rzecz mikroserwisów spowodowało trudności w zarządzaniu rozproszoną architekturą. Aby uprościć obsługę złożonych aplikacji na wielu serwerach, programiści sięgnęli po kontenery. Konteneryzacja polega na umieszczeniu komponentów i zależności aplikacji w odizolowanej jednostce, a następnie zarządzanie nią w dowolnym środowisku.

Mówiąc o konteneryzacji, nie można pominąć platformy Kubernetes. To zyskujące od kilku lat na popularności narzędzie open-source do orkiestracji kontenerów stworzone przez Google i wspierane przez ogromną społeczność. Pozwala w pełni zautomatyzować zarządzanie kontenerami, przejmując rutynowe zadania administratora systemu (konfiguracja, aktualizacja serwerów, monitorowanie, tworzenie kopii zapasowych, usuwanie awarii, ale też równoważenie obciążenia i automatyczne skalowanie). Ogromną zaletą Kubernetesa jest to, że pozwala na aktualizowanie aplikacji w czasie rzeczywistym, dzięki czemu likwiduje przestoje. Bez Kubernetesa trudno dziś wyobrazić sobie efektywną realizację przepływów pracy ciągłej integracji/ciągłego wdrażania.

Metodyka DevOps a kultura firmowa

Mimo większego zrozumienia wartości, jakie daje organizacjom przestawienie się na kulturę DevOps i wdrożenie automatyzacji, w praktyce jest to ogromne przedsięwzięcie, które wciąż napotyka wiele przeciwności.

Przede wszystkim adopcja metodyki DevOps i powiązanych z nią technologii wiąże się z ogromnym zapotrzebowaniem na wysoko wyspecjalizowanych architektów i programistów. Budowanie kompetencji wewnątrz zespołów jest trudne i kosztowne, a poszukiwanie na zewnątrz specjalistów z odpowiednim doświadczeniem projektowym długotrwałe. Większość firm woli, aby istniejące zespoły IT skupiały się na rozwoju dobrze im już znanych produktów i usług, a nie projektowaniu architektury czy zarządzaniu infrastrukturą.

Jak pokazuje badanie DevOps Institute (2) barierą są też skostniałe struktury organizacyjne podbudowane nadmiernym niepokojem, szczególnie wśród kierownictwa średniego szczebla. Problemem jest również brak zachęty do współpracy miedzy zorganizowanymi w silosy zespołami oraz niedostatek wykwalifikowanych liderów, który udźwignęliby zmianę. Nie są to wyzwania łatwe do przeskoczenia, ale nie niemożliwe. Firmy, które chcą pozostać konkurencyjne, nie mogą ignorować korzyści jakie daje automatyzacja i będą musiały tę transformację w końcu przejść.

Jak więc wdrożyć DevOps?

Pytanie więc, jak sprawnie i niezbyt kosztownie wdrożyć zaawansowaną automatyzację? Jak przyspieszyć rozwój oprogramowania jednocześnie nie obciążając własnych programistów? Wybór, czy rozwijać własny zespół czy skorzystać z zewnętrznego partnera zależy przede wszystkim od tego, czym zajmuje się biznes. Budowanie własnego zespołu inżynierów DevOpsów jest kosztowne, więc ma sens wtedy, jeśli zarządzasz dużą firmą produkującą skomplikowane produkty IT i potrzebujesz autorskich rozwiązań, a nie gotowych narzędzi partnera.

W innym wypadku bardziej opłacalnym rozwiązaniem może być korzystanie z zewnętrznych usług, co pozwala wewnętrznemu zespołowi skoncentrować się na realizacji celów biznesowych. Outsourcing usług DevOps sprawdzi się w przypadku zespołów programistycznych, które nie mają czasu ani odpowiedniej wiedzy, a chcą wygodnie korzystać z odpowiednio skalibrowanej pod potrzeby infrastruktury i popularnych narzędzi do automatyzacji (np. platformy Kubernetes). Zalet outsourcingu jest zresztą więcej. Zdalny zespół DevOps często posiada większe doświadczenie w pracy dzięki realizacji różnorodnych projektów u innych klientów. To sprawia, że ma wypracowane metody rdzenia sobie z problemami i nieprzewidzianymi sytuacjami. Zewnętrzny zespół eliminuje też wyzwania kadrowe, problem rotacji, czy koszty związane z jego skalowaniem w górę czy w dół.

W Oktawave świadczymy usługi DevOps, wspierając firmy w projektowaniu, wdrażaniu i codziennym utrzymaniu wydajnych środowisk. Wykorzystujemy technologie mikroserwisów i kontenerów, dbamy o zautomatyzowany proces deploymentu i testowania aplikacji. Zapewniamy zespół certyfikowanych ekspertów z doświadczeniem w wielu złożonych projektach (zobacz case study: Tui, Edipresse). Jeśli chcesz dowiedzieć się, co możesz zyskać dzięki współpracy z inżynierami Oktawave, umów się na bezpłatną konsultację.

(1) How COVID-19 has pushed companies over the technology tipping point—and transformed business forever
(2) Upskilling 2020: The Enterprise DevOps Skills Report from DevOps Institute