Kilka miesięcy temu serwis internetowy „Wired” zamieścił rozmowę z Jen-Hsun Huangiem, CEO Nvidii, pod znamiennym tytułem „Nvidia Hardware Is Eating the World”. Oczywiście było to nawiązanie do słynnego artykułu Marca Andreessena „Why Software Is Eating The World”, opublikowanego czternaście lat temu na łamach The Wall Street Journal. Znany inwestor z Doliny Krzemowej zwrócił uwagę na inwazję oprogramowania niemal we wszystkich sektorach gospodarki. Wprawdzie ostatnie dwa lata pokazały, że nie należy lekceważyć sprzętu, co jednak nie umniejsza znaczenia aplikacji we współczesnym biznesie. Rynek oprogramowania wykazuje się dużą dynamiką wzrostu, a każdy rok przynosi ze sobą liczne innowacje. Firmy starają się nadążać za potrzebami klientów korzystających z technologicznych nowinek i coraz częściej zamiast inwestować w drogie, eleganckie marmury przeznaczają środki finansowe na usługi i produkty IT.

Chyba najlepszą egzemplifikacją powyższej tezy jest sektor bankowy, gdzie doszło do pewnego rodzaju paradoksu. Choć banki likwidują swoje kolejne placówki stacjonarne, a ich zyski rosną, to – przynajmniej teoretycznie – w ten sposób ograniczają klientom dostęp do swoich usług. Aby maksymalnie zatem ułatwić dostęp zdalny, są zmuszone do rozwoju coraz to nowych aplikacji, bądź ich częstą modyfikację. W podobnym kierunku zmierzają inne gałęzie gospodarki – handel, ubezpieczenia, media i rozrywka czy transport. Nie ma przy tym większego znaczenia wielkość podmiotów gospodarczych. Według badań przeprowadzonych przez firmę Okta małe i średnie przedsiębiorstwa wdrażają rocznie około 58 aplikacji. Przy czym w firmach zatrudniających poniżej 50 osób liczba ta wynosi 36. Autorzy badania zauważają, iż w mniejszych MŚP wskaźnik gęstości aplikacji na pracownika jest wyższy niż w dużych przedsiębiorstwach.

Nowe wymagania w zakresie tworzenia aplikacji, a także ich wdrażania nie pozostają bez wpływu na relacje pomiędzy programistami oraz działami IT. W tym celu opracowano koncepcję DevOps, zgodnie z którą automatyzacja procesów oraz usprawnienie komunikacji i współpracy między developerami oraz specjalistami IT poprawi jakość oraz tempo tworzonego oprogramowania. DevOps jest zbiorem najlepszych praktyk, które można wdrożyć przy użyciu różnych narzędzi i technologii. Po raz pierwszy nazwa ta pojawiła się w 2008 r., a jej autorem jest belgijski konsultant IT Patrick Debois. DevOps eliminuje granice pomiędzy zespołami odpowiedzialnymi za administrację serwera i rozwój oprogramowania. To obszar, który dynamicznie się rozwija i cały czas pojawiają się ciekawe koncepcje i propozycje usprawnień. W ostatnim czasie wysoko stoją akcje mikrousług, systemów low-code oraz no-code czy AIOps.

Od monolitu do mikrousług

Naturalnym podejściem do tworzenia aplikacji jest architektura monolityczna, wykorzystywana przez programistów już od lat. W tym modelu wszystkie komponenty aplikacji są połączone w jednostkę nazywaną monolitem. To sprawia, że tworzenie i wdrażanie oprogramowania jest stosunkowo proste. Natomiast poważne trudności pojawiają się w przypadku opracowywania niestandardowych aplikacji bądź wprowadzania modyfikacji. Niejednokrotnie się zdarza, że aplikacja jest przestarzała, jeszcze zanim ujrzy światło dzienne.

– W monolicie nawet drobna zmiana wpływa na cały system, dlatego wdrożenia wymagają wielu formalności, nierzadko zatwierdzenia przez kadrę menedżerską. W praktyce oznacza to poważne aktualizacje raz na miesiąc lub dwa miesiące, co zwiększa ryzyko błędów oraz nakład pracy. Takie podejście wyraźnie kłóci się z filozofią DevOps – tłumaczy Bartłomiej Rekke, Senior DevOps Engineer w SoftwareMill.

Najbardziej obrazowy jest tutaj przykład aplikacji internetowej składającej się z modułów autoryzacji, płatności, historii zdarzeń itp. Awaria jednego z wymienionych elementów zatrzymuje działanie całej aplikacji, co oznacza poważne kłopoty dla dostawcy usług, klientów, a zwłaszcza programistów, którzy muszą rozwiązać problem.

Alternatywą dla architektury monolitycznej stały się tak zwane mikrousługi. Idea tego rozwiązania sprowadza się do podziału monolitycznej aplikacji na zbiór mniejszych usług, pozostających ze sobą w relacji. Poszczególne komponenty posiadają własny cykl życia rozwoju i aktualizacji, dzięki czemu daną aplikację można rozwijać stopniowo – funkcja po funkcji – a także łatwo skalować. Mikrousługi zaczęły zyskiwać na popularności kilka lat temu, w chwili, gdy pojawiło się zapotrzebowanie na duże i złożone platformy.

– Mikroserwisy bardzo dobrze wpasowują się w metodykę pracy DevOps. Rozbicie systemu na mniejsze serwisy pozwala szybciej reagować na potrzeby klienta, w tym na wykryte błędy. Jeżeli zmieni się logika biznesowa dla danego modułu, to zmiana jest wprowadzana w pojedynczym mikroserwisie i nie wymusza modyfikacji w pozostałych. Warto dodać, że do dużej popularności mikroserwisów przyczynił się rozwój konteneryzacji – mówi Mateusz Szwajkosz, Business Development Manager w OPTeam.

W związku z tym, że mikrousługi komunikują się za pośrednictwem standardowych interfejsów API, można je łatwo zintegrować z aplikacjami opracowanymi przez innych dostawców. Nie jest to jednak architektura pozbawiona wad. Eksperci przyznają, że tworzenie rozproszonych systemów może być trudne, między innymi ze względu na obsługę zadań przekazywanych pomiędzy modułami. Innym wyzwaniem jest obsługa wielu baz danych i zarządzanie transakcjami, a także procesy związane z testowaniem. Z wymienionych powodów architektura monolityczna nie wydaje się dobrą opcją dla mniejszych firm. Trzeba też mieć na uwadze, iż przejście na model mikrousług niesie ze sobą poważną zmianę organizacyjną, być może na lepsze, aczkolwiek w krótkim okresie czasu może wywołać duży chaos.

Zdaniem specjalisty 

Michał Rykiert, Chief Evangelist EMEA, Webcon Michał Rykiert, Chief Evangelist EMEA, Webcon  

Dojrzałe podejście do rozwoju platform low-code ma na celu ich ciągłe dostosowywanie do rosnących potrzeb rynkowych. Technologie sztucznej inteligencji i uczenia maszynowego  dają szansę, aby jak najskuteczniej optymalizować procesy i wspierać pracowników w działaniach operacyjnych. Wśród wykorzystywanych obecnie w tym kontekście rozwiązań można wymienić algorytmy ML, które wykrywają anomalie w procesach, czy mechanizmy SI do automatycznego tłumaczenia dokumentów, tworzenia streszczeń czy podsumowań. Sztuczna inteligencja może też stanowić istotne wsparcie w tworzeniu aplikacji na platformach low-code. Doświadczenia wczesnych naśladowców pokazują jednak, że organizacje muszą być naprawdę dobrze przygotowane na wykorzystanie sztucznej inteligencji. Co w praktyce oznacza, że powinny najpierw odpowiednio zaadresować podstawowe poziomy piramidy potrzeb cyfrowych – zadbać o kompletność i poprawność danych oraz uporządkować, obsłużyć cyfrowo i zautomatyzować procesy biznesowe.