APLIKACJE W CHMURZE INNOWACJE

DevOps, fakty i mity zastosowań w chmurze

Nastanie ery cyfrowej zmusza ​​organizacje na całym świecie do istotnych zmian w sposobie myślenia i działania ze względu na fakt, że oprogramowanie staje się istotną, niekiedy wręcz kluczową, częścią dostarczanych produktów i usług. W konsekwencji organizacje przekształcają się adaptując do swojego modelu działania elementy, które dotąd były domeną IT, jak mobilność, komunikację, gromadzenie i przetwarzanie danych. Software is eating the world.

Przyszłość przyniesie rosnącą rolę rozwoju oprogramowania jako kluczowej części procesu wdrażania produktów i usług. Pojęciem-kluczem jest tutaj Time-To-Market – szybkość dostarczania klientom nowych rozwiązań w porównaniu z konkurencją. Rośnie presja na dostarczanie więcej, szybciej i lepiej za mniej, co z kolei determinuje ewolucję cyklów rozwoju i życia produktów. Cykl życia jest tutaj bardzo ważnym pojęciem – aby rozwinąć i utrzymać efektywność organizacji w dostarczaniu nowych rozwiązań nie wystarczy tylko zdolność do ich szybkiego dostarczania. Liczy się proces jako całość – zatem również ścisła współzależność z procesem wdrożenia i utrzymania. Dokładnie te same powody (więcej, szybciej, lepiej za mniej) leżą u podstaw rozwoju i wykorzystania platform chmurowych, które pozwalają na większą elastyczność kosztową, szybsze wdrażanie produktów oraz automatyzację procesów związanych z wdrażaniem i utrzymaniem. Zatem działania zmierzające do przeniesienia zarządzania cyklem rozwoju i utrzymania produktów/usług do chmury wydają się być naturalnym kierunkiem.

Co oznacza DevOps

DevOps, termin pochodzący od angielskich określeń rozwoju (development) i operacji (operations), to podejście do rozwoju  oprogramowania i szerzej – budowy systemów, uruchamiania produktów i usług, które opiera się na współpracy, komunikacji i integracji zespołów rozwoju i utrzymania. Podejście to wspiera coraz większą współzależność rozwoju i operacji. Celem jest wzrost efektywności wytwarzania i wdrażania nowych produktów i usług, redukcja kosztów wytworzenia i utrzymania, skrócenie terminów wprowadzania produktów i usług na rynek. Nieuniknione jest pytanie jak ma się DevOps do Agile – podejścia, któremu przyświecają niemal identyczne cele. Jest to temat bardzo szeroki – z jednej strony DevOps stanowi podejście wspierające zwinne zarządzanie IT w organizacji, pozwalające jej być bardziej elastyczną i responsywną. Z drugiej – metodyki zwinne są przez Gartnera umiejscawiane jako wspierające dla faz wytwórczej i testowania (weryfikacji) z dodatkowymi iteracjami w ramach standardowej pętli procesów DevOps pokazanej na rysunku poniżej. Bez wątpienia temat relacji DevOps – Agile domaga się dedykowanego opracowania.

Źródło: Gartner DevOps Toolchain. 2017.

DevOps potrzebuje chmury

Z punktu widzenia DevOps chmura tradycyjnie postrzegana była jako strona operacyjno-utrzymaniowa (Ops), ale to się bardzo dynamicznie zmienia z tego względu, że coraz więcej narzędzi wsparcia DevOps jest dostępnych jako usługi SaaS. Usługi chmurowe w ramach modelu DevOps oferują praktyczne rozwiązania pozwalające na pokonanie niektórych przeszkód stwarzanych przez  infrastrukturę. Choć niektóre wdrożenia wymagają wykorzystania wewnętrznej infrastruktury ze względu na problemy z integracją, inne mogą czerpać większe korzyści z publicznych chmur i ich elastycznego podejścia, a czasami projekty korzystają z kombinacji obu podejść. Dzisiaj trudno jest działać efektywnie jako organizacja – zwłaszcza mocno uzależniona od IT, jeśli czegoś brakować będzie kultury wlaściwej DevOps, bądź wykorzystania usług chmurowych. Wielu specjalistów uważa wręcz, że miejsce docelowe pełnego, sprawnie działającego modelu DevOps jest właśnie w chmurze. Ważne aby mieć na uwadze, że podejście DevOps jest zmianą w mentalności i kulturze, a rolą narzędzi jest wsparcie tej zmiany i zapewnienie operacyjności. DevOps to zintegrowany model rozwoju i operacji IT w pełni działający zarówno w celach wewnętrznych, jak i zewnętrznych organizacji, co oznacza, że ​​struktura zespołu DevOps może być, i często jest, mieszanką ekspertów z różnych dziedzin. Usługi w chmurze są podstawowym elementem modelu DevOps, zapewniając elastyczność i szybkość reagowania w codziennej praktyce.

Ale uwaga na problemy:

1. DevOps wymaga (najczęściej) podejścia hybrydowego

Obecnie dostawcy chmury publicznej nie zapewniają jeszcze pełnego zakresu niezbędnych w modelu DevOps narzędzi. Mimo że oferują zarządzanie rozwojem aplikacji, w tym wsparcie dla DevOps, wciąż jest to jednak świat, w którym trzeba rozwiązanie splatać z wielu produktów – obejmujących tak publiczne usługi w chmurze jak i tradycyjne oprogramowanie on-premise. Najczęściej mamy możliwość zarządzania workflow kodu (Code Pipeline) i ciągłą integracją (Continuous Integration) w większości chmur publicznych, jednak najczęściej trzeba przejść na własną platformę jeśli chodzi o ciągłe testy i/lub ciągłe wdrażanie. Stopień, w jakim tworzone usługi koncentrują się na chmurze będzie miał znaczenie dla ostatecznej konfiguracji i udziału chmury w modelu DevOps. Blisko rozwiązania odpowiadającego całościowym potrzebom DevOps jest AWS zapewniający zarządzanie wdrożeniami tak w chmurze jak i dla dedykowanych serwerów.

2. DevOps może oznaczać dodatkowe koszty w stosunku do chmury

Ponieważ nie da się uciec obecnie przed koniecznością użycia tradycyjnych platform wraz z chmurami publicznymi, koszty zazwyczaj wypadają wyższe niż w początkowych założeniach budżetowych dla chmury. Wiele organizacji budżetuje rozwiązanie DevOps zakładając, że jest ono oparte na chmurze. Ale tak nie jest – np. developerzy testują nowe narzędzia, biblioteki, API itp. poprzez uruchamianie w tym celu dedykowanych VM na czas testów i niszczenie instancji po ich zakończeniu. Efekty widać dopiero w bilingu.

3. Narzędzia Devops – to jeszcze nie jest stan docelowy

Choć wśród dostawców IT jak i organizacji i ich działów technologicznych wzrasta wiedza i świadomość potrzeby ciągłego rozwoju, testowania, integracji i wdrażania, które stanowią fundament DevOps, wciąż nie jesteśmy nawet w pobliżu stanu docelowego. Wybór narzędzi wspierających procesy DevOps jest co prawda szeroki, ale stopnie ich dojrzałości są bardzo różne, brak standardu współpracy i integracji lub jest ona wybiórcza i często pracochłonna. Super platforma, która automatyzowałaby wszystkie funkcje DevOps, w chmurze jak i poza nią, nie jest dostępna – i raczej szybko nie należy się jej spodziewać.

DevOps Marketplace. Źródło: Atlassian. Lipiec 2017.