DevOps
Pod pojęciem DevOps rozumie się
- Zbiór technicznych metod i narzędzi oraz
- Określoną kulturę współpracy między zespołami rozwoju oprogramowania i IT.
DevOps polega na tym, aby współpracę między rozwojem oprogramowania a działem operacji IT uczynić bardziej efektywną i skoordynowaną poprzez wspólne procesy i narzędzia programowe. Zespół DevOps składa się z programistów i pracowników IT, którzy współpracują ze sobą przez cały cykl życia produktu.
Początki DevOps
Termin DevOps powstał w 2009 roku i składa się z części Dev (= obszar Software Development / rozwój oprogramowania) oraz Ops (= obszar IT Operations / administracja systemami).
Ruch, który doprowadził do powstania DevOps, zaczął się jednak wcześniej: już około 2007 roku społeczności IT Operations i rozwoju oprogramowania wymieniały się doświadczeniami. Ich członkowie postrzegali rozdzielenie zespołów odpowiedzialnych za pisanie kodu od zespołów odpowiedzialnych za wdrażanie i wsparcie kodu jako problematyczne. Ta wymiana doświadczeń zapoczątkowała integrację obu dziedzin.
Cele DevOps
DevOps jest stosowany, aby osiągnąć następujące cele:
- Zwiększenie jakości oprogramowania
- Przyspieszenie rozwoju i dostarczania oprogramowania
- Poprawa współpracy między zespołami zaangażowanymi w rozwój i wdrażanie
- Zapewnienie wysokiej stabilności operacyjnej i unikanie defektów technicznych wynikających ze zmian i aktualizacji
Jak osiąga się te cele?
Cele te osiąga się poprzez automatyzację i integrację procesów między zespołami Development i Operations w organizacji. Najważniejsze aspekty to:
- Automatyzacja technologii
- Komunikacja i współpraca międzyzespołowa
- Wzmacnianie kompetencji zespołu
Cykl życia DevOps
Ciągły proces DevOps można sobie wyobrazić jako nieskończoną pętlę, która najczęściej składa się z następujących 6 faz:
- Planowanie
- Tworzenie / Build
- Continuous Integration i Continuous Delivery
- Monitorowanie i ostrzeganie / Monitor
- Operate
- Ciągły feedback
Te 6 faz reprezentuje różne umiejętności, procesy i narzędzia z obszarów rozwoju i operacji. Ważne jest, aby oba zespoły współpracowały i komunikowały się ze sobą jak jeden wspólny zespół w każdej z tych faz.
Jakie metody i narzędzia należą do DevOps?
Metody
DevOps obejmuje różne niezależne od siebie techniki:
- Zwinne wytwarzanie oprogramowania
- Continuous Integration (auch: CI oder Kontinuierliche Integration) i Continuous Delivery (auch: CD)
- Ciągły monitoring usług
- Microservices
- Automatyczne testy oprogramowania
- Software Configuration Management, zarządzanie wersjami i „Infrastructure as Code"
- Międzyobszarowe Key Performance Indicators (KPIs)
Narzędzia
Wymienione metody są wspierane lub umożliwiane na przykład przez następujące narzędzia DevOps:
- GitHub i GitLab (dla Continuous Integration i Continuous Delivery, automatycznych testów oprogramowania i zarządzania wersjami)
- Jenkins (Continuous Integration)
- Puppet (dla Infrastructure as Code)
- Ansible (dla Configuration Management)
- Vagrant (jako platforma wirtualizacji)
- Azure DevOps (np. dla Continuous Integration, testowania, zarządzania wydaniami i zarządzania systemami)
- Microsoft Azure (dla monitoringu i hostingu)
- Team Foundation Server
- Docker (dla wirtualizacji kontenerów)
- Kubernetes (orkiestracja kontenerów)
Jaką kulturę współpracy promuje DevOps?
DevOps ma na celu poprawę kooperacji między zespołami rozwoju i operacji jako zespołu międzyobszarowego oraz zniesienie ich wzajemnej separacji. Ścisła współpraca powstaje dzięki następującym aspektom:
- Zespoły IT Operations i Software Development ściśle ze sobą współpracują i często są łączone w jeden zespół na cały czas trwania cyklu życia produktu.
- Cały zespół koncentruje się na potrzebach i korzyściach klienta w trakcie cyklu życia oprogramowania.
- Wewnątrz zespołu procesy i plany są konsekwentnie wzajemnie widoczne.
- Priorytety, odpowiedzialności i zmiany są wzajemnie uzgadniane.
- Zarządzanie ryzykiem jest upraszczane dzięki krótszym cyklom wydań i planowaniu.
- Wszyscy członkowie zespołu dbają o regularną i otwartą komunikację.
Wyzwania przy wdrażaniu DevOps
Jak zawsze, gdy wprowadzane są zmiany, w zespole znajdą się osoby, które mają trudności z wdrożeniem lub budują konkretny opór wobec nich. Dlatego ważne jest, aby wszyscy członkowie zespołu naprawdę rozumieli zasady, wartości i korzyści DevOps oraz aby organizacja poświęciła wystarczająco dużo czasu na informowanie i wdrażanie.
Ważne kwestie do uwzględnienia:
- Im wcześniej rośnie zrozumienie dla połączenia zespołów rozwoju i operacji i silosy zostaną odpowiednio rozwiązane, tym łatwiej przebiega integracja DevOps.
- Samo stosowanie wymienionych narzędzi nie wystarczy, aby czerpać korzyści z DevOps. Kluczowa jest kombinacja kultury, metod, procesów i narzędzi.
Podsumowanie DevOps
DevOps ma na większość organizacji zdecydowanie pozytywny wpływ. Podejście to zapewnia bowiem wyższą efektywność zespołu i bezpieczeństwo, szybsze wydania oprogramowania oraz wyższą jakość produktu dla bardziej zadowolonych klientów.
Korzyści płynące z zasad DevOps są tak duże, że stojące za nimi podejście wraz z jego wartościami znajduje obecnie zastosowanie również w innych zespołach. Na przykład DevSecOps oznacza integrację bezpieczeństwa w proces rozwoju oprogramowania.