Od kaskady do DevOpsa

Materiał promocyjny Przed nadejściem DevOps to metodologia Agile wywoływała podobne zainteresowanie i szum, który pchał organizacje do inwestowania znacznych środków w modernizację struktury organizacyjnej czy wdrożenia nowych rozwiązań. Mimo wielu cech wspólnych są między tymi metodologiami istotne różnice.

Agile wprowadził zmianę modelu prowadzenia prac rozwojowych nad oprogramowaniem, przede wszystkim przyniósł odejście od charakterystycznego dla kaskady (waterfall) udostępniania gotowego kodu użytkownikom końcowym dopiero po ukończeniu prac nad całym systemem. Jednak oryginalne wartości i zasady Agile, aby dostarczać rozwiązania w małych, iteracyjnych etapach, zostały szybko zapomniane. Ta metodologia jest stosowana tylko podczas prac deweloperskich, jest zatem wyzwaniem dla zespołów operacyjnych, które nie są w stanie wystarczająco szybko wdrażać nowych wersji kodu.

Agile, czyli nowa kaskada

Problemy z metodologią Agile zaczęły narastać, kiedy zespoły deweloperskie zaczęły trzymać się różnych błędnych założeń, np.:

  • "Techniczny dług można spłacić później" – takie rozumowanie prowadzi do akumulacji długu technicznego. Kiedy dodaje się nowe moduły do tych, które obarczone są takim długiem, finalny kod i błędy, które zawiera, okazują się zbyt kosztowne do poprawienia.
  • "Stała refaktoryzacja jest najlepszą praktykę" – w długoterminowych projektach prace deweloperskie grzęzną w niekończących się wymaganiach refaktoryzacji.
  • "Wystarczy trzymać się zasad Agile" – w praktyce systemy muszą być na tyle elastyczne, aby umożliwiać wprowadzanie zmian w ramach projektów realizowanych według Agile.

Zespoły programistyczne trzymające się tych – i innych – błędnych założeń w ramach metodologii Agile nie zwiększają swojej produktywności. Zamiast tego wpadają w świat planowania, rozwoju, testowania, wdrażania i integracji w formie krótkich sekwencji, ale realizowanych zgodnie z założeniami kaskady.

Działy operacji funkcjonowały w jeszcze innych realiach i wdrożenia piętrzyły się przed nimi szybciej niż mogły być realizowane, a klienci nigdy nie otrzymywali tego, czego oczekiwali. Tendencja ta ostatecznie doprowadziła do powstania DevOps, nowej wersji metodyki Agile. DevOps czerpie z najlepszych praktyk i osiągnięć Agile, jednocześnie wychodząc naprzeciw wymienianym wyżej problemom.

DevOps: radykalna transformacja

Mimo wielu wspólnych cech Agile i DevOps, stały przepływ pracy z działu rozwoju do działu operacji jest krytycznym czynnikiem decydującym o zwinności dostarczania, czasie dotarcia na rynek i jakości kodu. DevOps to kompleksowe podejście do rozwoju oprogramowania, które nie jest poprawioną wersją metodologii Agile, choć obie metodologie są realizowane według podobnych założeń kulturowych.

Mimo że Agile i DevOps mają wspólne cele, jeśli chodzi o produktywność IT, to DevOps zachęca działy rozwoju i operacji do zsynchronizowania prac deweloperskich z operacyjnymi procesami testowania, wdrażania i zarządzania, co ma zapobiegać narastaniu zaległości.

Bez odpowiedniej synchronizacji DevOps staje się jedynie pewną wariacją na temat Agile, wyróżniającą się większym zaangażowaniem działu operacji, który nadal musi zmagać się z zaległościami. Celem DevOps jest rozwiązanie problemów wynikających z braku ścisłej współpracy między zespołami Development i Operations, m. in. poprzez zwiększenie wzajemnych interakcji czy uwzględnianie opinii użytkowników końcowych w procesach DevOps. Innymi słowy, DevOps kładzie nacisk na skuteczną współpracę i komunikację między dwoma departamentami, która umożliwia zoptymalizowanie procesów tworzenia wysokiej jakości i dobrze przetestowanego kodu.

Od kaskady do DevOpsa

DevOps może stworzyć nieskończoną pętlę udostępniania kodu w każdym projekcie deweloperskim.