Co ma wspólnego DevOps z architekturą?
DevOps przestaje być ewenementem. Coraz częściej stanowi podstawową kulturę i podejście organizacji IT do wdrażania i utrzymywania oprogramowania.
Jednocześnie wciąż istnieje różne rozumienie tego, czym jest DevOps. W niniejszym artykule przez DevOps będę rozumiał zarówno kulturę jak i zestaw praktyk polegających integracji, współpracy i zwiększeniu szybkości przepływu prac oraz uzyskaniu wymaganej jakości w całym łańcuchu wartości IT mających na celu sukces całej organizacji (zarówno biznesu jak i IT).
DevOps łączy ze sobą praktyki zwinnego wytwarzania oprogramowania z ciągłym testowaniem, dostarczeniem, wdrażaniem (w miarę rozwoju DevOps słowo „continous” dodawane jest także do innych obszarów IT). Podstawą do tych praktyk jest oczywiście automatyzacja.
Gdzie jest architektura w DevOps?
Pozostaje pytanie, gdzie w tym wszystkim jest architektura. Wymienię kilka kluczowych obszarów, na które warto zwrócić uwagę
1. Architektura systemów projektowanych przez architektów
2. Technologie, które wspierają DevOps
3. Architektura i architekci jako uczestnicy łańcucha wartości DevOps
Przyjrzyjmy się tym czterem wskazanym obszarom.
Architektura jako fundament DevOps
DevOps polega w szczególności na stosowaniu praktyk wspierających szybkie dostarczanie stosując nieduże przyrosty oprogramowania.
Takie praktyki są łatwiejsze przy odpowiedniej modularności wdrażanych systemów i odejście od monolitycznych architektur. Mówimy też często o luźno powiązanej architekturze (ang. loosely coupled architecture) oraz prostocie. Jeden z pięciu ideałów DevOps wprowadzonych w książce Projekt Jednorożec (Unicorn Project) G. Kene’a mówi także o tym: lokalność i prostota (Locallity and simplicity). W takiej architekturze łatwiej jest dostarczać i wdrażać oprogramowanie w niedużych przyrostach. Chodzi tutaj zarówno o samo wdrożenie na produkcji, jak i także wszystkie wcześniejsze kroki, jak np. testowanie. Silnie powiązana architektura wymaga sporego narzutu testów regresji, po przy silnych zależnościach zakres testów zwykle jest bardzo duży.
Innym przykładem praktyki DevOps, która wymaga odpowiedniej architektury jest rozdzielenie wdrożenia oprogramowania (deployment) od jego udostępnienia (release) wraz z wykorzystaniem tzw. feature toggles (przełączników funkcjonalności). Polega to na tym, że funkcjonalność jest wdrażana na produkcji, ale udostępniania użytkownikowi dopiero po zmianie przełącznika. Pozwala to nawet na dostarczanie niedokończonej funkcjonalności, która już jest zintegrowana z produkcyjną wersją aplikacji, jednak nie jest widoczna dla użytkownika i nie psuje części działającej. Wymaga to odpowiedniego projektowania systemów, aby separować poszczególne części i projektować je w taki sposób, by mogły działać poprawnie w obu trybach (udostępnionej i nieudostępnionej funkcjonalności).
Technologie wspierające DevOps
Projektowane systemy mogą być oparte o różne technologie. Na ich wybór powinno rzutować także gotowość tych technologii do szybkiego dostarczania. Dobrym przykładem w tym kontekście są mikroserwisy i konteneryzacja.
Architekci częścią systemu DevOps
Kolejnym aspektem jest właściwie zaprojektowanie procesów architektonicznych. Jeśli przyjmiemy tzw. phase gate approach (podejście oparte na bramkach decyzyjnych), w którym mamy tradycyjny proces oraz architektów od których musimy uzyskać akceptację, to trudno będzie optymalizować przepływ w takim łańcuchu wartości. Architektura (podobnie do bezpieczeństwa) powinna być włączona w całość działań dostarczania działając zarówno jako ciało doradcze jak i weryfikacyjne. Mówiąc w uproszczeniu: lepiej jest robić od początku dobre projekty i implementację niż poprawiać na końcu gotowe oprogramowanie.
Drugim aspektem jest działanie architektów w kulturze DevOps – zarówno wspierając ją jak i promując. DevOps to nie tylko narzędzia, ale także kultura współpracy, zwinności, współodpowiedzialności za całość łańcucha wartości dostarczanych rozwiązań.
Podsumowanie
Na kilku powyższych przykładach widać, że architektura i DevOps mają wiele wspólnych elementów. Można powiedzieć, że nie ma DevOps bez architektury. Z drugiej strony te kilka przykładów może być pomocne dla architektów, by umieli się odnaleźć w zwinnym świecie kultury DevOps oraz rozumieli swoje miejsce w tym świecie.
Tekst: Mirosław Prywata
DevOps AIOps Foundation®
Forma szkolenia: zdalne
Język: polski
DevOps Engineering Foundation (DOEF)®
DevOps Foundation®
Forma szkolenia: zdalne, stacjonarne
TOGAF® EA Foundation – Level 1
TOGAF® EA Practitioner – Level 2
TOGAF® Enterprise Architecture Foundation & Practitioner Combined
Zapisz się do newslettera
Bądź zawsze na bieżąco i otrzymujod nas tygodniową dawkę wiedzy!
Informujemy, iż Państwa dane osobowe są przetwarzane przez administratora, którym jest Asseco Data Systems S.A. z siedzibą w Gdańsku, ul. Jana z Kolna 11, 80-864 Gdańsk. Przetwarzamy Państwa dane w celu: przygotowanie odpowiedzi na złożone zapytanie oraz przesyłania informacji marketingowych za pomocą środków komunikacji elektronicznej. W związku z przetwarzaniem Państwa danych, posiadacie prawa do : dostępu, sprostowania, usunięcia, przenoszenia danych, ograniczenia przetwarzania i prawo do cofnięcia zgody. Z pełną treścią informacji dotyczących przetwarzania Państwa danych osobowych, w tym o przysługujących prawach i ich zakresie możecie się Państwo zapoznać pod adresem: https://academy.asseco.pl/klauzula-newsletter/
wyrażam zgodę na przetwarzanie moich danych osobowych w celu przesyłania informacji marketingowych za pomocą środków komunikacji elektronicznej i programów automatyzujących na podstawie ustawy z dnia 18 lipca 2002 r. o świadczeniu usług drogą elektroniczną i w zw. z art. 172 ust. 1 ustawy z dnia 16 lipca 2004 r. prawa telekomunikacyjnego (zgoda alternatywna).