Artykuł z magazynu ITwizCIOArchitektura ITPolecane tematy
Neoautomatyzacja, czyli jak wygenerować znacznie większą wartość dla biznesu
Obserwując dzisiejszy rynek IT w Polsce, projekty realizowane w dużych przedsiębiorstwach trudno się oprzeć wrażeniu, że automatyzacja jest praktyczną realizacją teoretycznych założeń chmury prywatnej. O ile koncepcja chmury obliczeniowej propagowana przez liderów rynku nie przyjęła się jako jeden spójny przepis na nowoczesne IT, to w wielu wypadkach została przekształcona na zautomatyzowane środowisko, coraz częściej połączone z chmurą publiczną.
W ramach cyklu publikacji na łamach ITwiz omówiliśmy techniki automatyzacji infrastruktury, ale przecież to dopiero początek historii. W erze nowoczesnych aplikacji mobilnych i zapotrzebowanie na ich błyskawiczny rozwój, poganiany dodatkowo przez rosnącą konkurencję automatyzacja infrastruktury to dalece za mało. Dzisiaj trzeba realnie dać ludziom, którzy pracują nad rozwojem aplikacji, narzędzie do przyspieszenia tych prac. W pewnym momencie – jak to zwykle bywa – potrzeba zrodziła więc technologię.
W kierunku budowy nowoczesnych, rozproszonych aplikacji
Gdzieś na granicy infrastruktury i rozwoju aplikacji znalazł się Docker i Mesos. Kontenery odgrywają dzisiaj bardzo istotną rolę w środowiskach deweloperskich dzięki swojej elastyczności i standaryzacji obrazów. Pojawiają się jednak także coraz częściej w środowiskach produkcyjnych dużych instytucji. Czemu zatem uwolnienie się od maszyny wirtualnej i umieszczenie aplikacji w kontenerze jeszcze bardziej burzliwie ujmuje rynek, niż wcześniej wirtualizacja uwalniająca nas od warstwy sprzętu?
Większość znanych, dużych dostawców IT ma w swoim portfolio jakąś automatyzację lub orkiestrację. Efekt? Gartner już przewiduje, że w przedsiębiorstwach będzie funkcjonować około 4 rozwiązań automatyzacyjnych. Co dla nas – ludzi IT – jest w tym procesie najważniejsze? Pesymiści obawiają się utraty pracy. Ale zamiast kurczowo trzymać się konfiguracji maszyny wirtualnej czy przełącznika sieciowego, warto dostrzec ogromną szansę jaką daje nowe rozdanie! Możemy wreszcie wygenerować znacznie większą wartość dla biznesu.
Odpowiedzią może tutaj być samo założenie, że nowoczesne aplikacje z natury rzeczy są rozproszone. Ważne, aby dostarczyć środowisko funkcjonalne i elastyczne – jego ciągłość działania zapewniana jest przez odpowiednio dużą mnogość bytów realizujących te same funkcje. Można by to porównać do żyjącego organizmu. Organy naszego ciała też budowane są przez komórki poszczególnych typów. Przykładowo biceps nie jest jednym bytem potrafiącym wygenerować dużą siłę, ale milionem bytów potrafiących wygenerować siłę bardzo małą, a co ważne zastępujących się wzajemnie. Mechanizm łączenia komórek w tkanki i organy jest tu równie ważny jak ten, odpowiadający za ich eliminację. Jeśli organizm nie umie wyeliminować uszkodzonej komórki tworzy się nowotwór. Musi zatem występować bardzo dobra koordynacja tych wszystkich procesów. Podsumowując ten biologiczny przykład można powiedzieć, że w naszym organizmie nie ma „silosów”. W dzisiejszym IT również ich unikamy. Coraz częściej budujemy rozwiązanie w oparciu o składowe utworzone w modelu atomowym.
Mikrousługi: fundament nowoczesnej automatyzacji
Tu przechodzimy do kolejnego fundamentu nowoczesnej automatyzacji w warstwie aplikacji jaką są mikrousługi, o których w ITwiz też napisano już wiele. Wyobrazimy sobie np. portal elektronicznego biura obsługi klienta dostawcy energii elektrycznej, wody czy innych usług. Mamy na nim zakładki związane z naszym pakietem usług, rozliczeniami, bilingiem, konfiguracją itp. Od dawna już na stronie, którą oglądamy – czy to na komputerze czy w aplikacji mobilnej – są to widoki budowane z wielu systemów: odpowiednio CRM, bilingowego, technicznego i wielu innych. Jednak mimo tego, systemy dostarczające te dane ciągle bardzo często są silosowe. W praktyce oznacza to, że komunikują się jednym API, najczęściej przy użyciu szyny danych. Wymieniają dzięki temu między sobą komunikaty, ale same dla siebie stanową autonomiczne światy.
Kolejnym fundamentem nowoczesnej automatyzacji w warstwie aplikacji są mikrousługi. Dzięki temu różne systemy mogą się komunikować i wykorzystywać swoje możliwości na poziomie komponentów. Można sobie wyobrazić dwa pakiety inżynierskie wykonujące obliczenia matematyczne, każdy w innej dziedzinie. Oba mogą być specjalizowane w konkretnym kierunku, ale jeśli w jednym istnieje już np. moduł różniczkujący to modelu atomowym wystarczy zwiększyć ilość silników obliczeniowych wykonujących tę operacje matematyczną i pozwolić je wywołać z innego programu, który tych obliczeń potrzebuje. Cała sztuka polega na tym, aby umieć w czasie regulować ilość komórek danej klasy wymaganych do wykonania potrzebnych zadań w tym informatycznym organizmie. Poziom granularności maszyny wirtualnej już dawno przestała wystarczać.
To co się zmienia, to tendencja, aby różne systemy komunikowały się i wykorzystywały swoje możliwości na poziomie komponentów. Można sobie wyobrazić dwa pakiety inżynierskie wykonujące obliczenia matematyczne, każdy w innej dziedzinie. Oba mogą być specjalizowane w konkretnym kierunku, ale jeśli w jednym istnieje już np. moduł różniczkujący to modelu atomowym wystarczy zwiększyć ilość silników obliczeniowych wykonujących tę operacje matematyczną i pozwolić je wywołać z innego programu, który tych obliczeń potrzebuje. Co więcej, cała sztuka polega na tym, aby umieć w czasie regulować ilość komórek danej klasy wymaganych do wykonania potrzebnych zadań w tym informatycznym organizmie. Poziom granularności maszyny wirtualnej już dawno przestała wystarczać.
Zarządzanie mikrousługami na poziomie makro
Aby jednak taki organizm mógł działać trzeba spełnić kilka warunków. Po pierwsze to, co działa w skali mikro – aby było użyteczne – musi być sterowalne ze świata makro. Stąd takie rozwiązania jak Kubernetes czy Mesosphere. W warstwie aplikacji też pojawiają się narzędzia odpowiadające za dystrybucję kodów, takie jak GitHib, Chef, Puppet czy Jenkins. Tyle w zakresie wizji.
O Continous Delivery/Integration/Development mówi się w wielu organizacjach, jednak w niewielu całość została wdrożona. Szczególnie ten ważny element propagacji zmian na produkcję co dałoby pełny DevOps. Dlaczego? Ponieważ w wielu firmach – które na to stać, bo nie są już start-up’ami – istnieją ograniczenia technologiczne, procesowe, finansowe i oczywiście regulatory prawne. Większość ze wspomnianych mechanizmów można wdrożyć w życie dość szybko, jeśli chcemy dostarczać i stale rozwijać aplikację mobilną, która w całości powstała w chmurze publicznej, jak Amazon Web Services czy Microsoft Azure, jest tam rozwijana i stamtąd dostarczana. Jednak przeniesienie tego schematu do dużego banku jest niemożliwe. I choć banki coraz częściej zaczynają używać chmury publicznej i prowadzą projekty automatyzacyjne, to do pełnego DevOps jeszcze daleko.
Gdzieś na granicy infrastruktury i rozwoju aplikacji znalazł się Docker i Mesos. Kontenery odgrywają dzisiaj bardzo istotną rolę w środowiskach deweloperskich dzięki swojej elastyczności i standaryzacji obrazów. Pojawiają się jednak także coraz częściej w środowiskach produkcyjnych dużych instytucji. Czemu zatem uwolnienie się od maszyny wirtualnej i umieszczenie aplikacji w kontenerze jeszcze bardziej burzliwie ujmuje rynek, niż wcześniej wirtualizacja uwalniająca nas od warstwy sprzętu? Odpowiedzią może tutaj być samo założenie, że nowoczesne aplikacje z natury rzeczy są rozproszone.
To właśnie dlatego – aby odpowiedzieć na te wyzwania – producenci sprawdzonych i rozwiniętych rozwiązań automatyzacyjnych, tacy jak VMware, Microsoft, BMC, Oracle czy HPE robią wszystko, aby klasyczną automatyzację infrastruktury, którą oferują od dawna zintegrować z tą nowszą, bardziej dynamiczną warstwą. To właśnie dlatego pojawia się integracja vRealize Automation z platformą kontenerów, vRealize CodeStream, Microsoft Team Foundation Server i inne. Pewnie również dlatego tak bardzo rozwija się SDN i SDS.
Większość znanych, dużych dostawców IT ma w swoim portfolio jakąś automatyzację lub orkiestrację. Efekt? Gartner już przewiduje, że w przedsiębiorstwach będzie funkcjonować około 4 rozwiązań automatyzacyjnych. Co dla nas – ludzi IT – jest w tym procesie najważniejsze? Pesymiści obawiają się utraty pracy. Ale zamiast kurczowo trzymać się konfiguracji maszyny wirtualnej czy przełącznika sieciowego, warto dostrzec ogromną szansę jaką daje nowe rozdanie! Możemy wreszcie wygenerować znacznie większą wartość dla biznesu, uczestniczyć w kreowaniu procesów. Jedyne co trzeba zrobić to uczyć się… i odważyć!
Krzysztof Waszkiewicz
Daniel Wasyliszyn
Architekci