W architekturze mikroserwisów w ramach jednego, zintegrowanego systemu może działać wiele niezależnych od siebie aplikacji obsługujących różne działy, funkcje, czy procesy biznesowe. O tym, jakie są zalety tworzenia aplikacji w tej technologii – mówi na łamach magazynu „Computerworld” ekspert Asseco Data Systems, Paweł Skarżyński.
Jeszcze kilka lat temu, tworząc aplikację, programiści długo zastanawiali się, z którego języka korzystać. Dzisiaj pojawia się pytanie: czy pisać aplikację z wykorzystaniem mikroserwisów? W tej architekturze w ramach jednego, zintegrowanego systemu działają niezależne aplikacje obsługujące konkretne działy, funkcje lub procesy biznesowe. Mikroserwisy są od siebie niezależne biznesowo i technologicznie, dzięki czemu mogą być rozwijane równolegle przez różne zespoły projektowe.
W 2005 r. dr Peter Rodgers po raz pierwszy użył pojęcia mikrousług webowych. Pojęcie mikroserwisu weszło na stale do branżowego języka dopiero 6 lat później, odgrywając główną rolę w tworzeniu usług i aplikacji. Zainteresowanie podejściem do modułowego pisania aplikacji systematycznie rośnie.
Czym jest MSA?
Architektura mikroserwisowa wywodzi się z klasycznego podejścia do tworzenia kodu i aplikacji. Jest jednak różnica: mikroserwis ma ściśle określony cel i może być łączony z innymi mikroserwisami. Określenie „mikro” nie odnosi się zatem do rozmiaru, a do celu i przeznaczenia, w jakim jest tworzony.
Posłużmy się przykładem aplikacji, z której na co dzień korzysta 50 pracowników firmy – pobierają z niej dane o klientach, historię zakupów, wprowadzają nowe zamówienia. Jeden z działów, chcąc zwiększyć sprzedaż, potrzebuje rozbudować system o mechanizm promocji. W klasycznym, tzw. monolitycznym podejściu niezbędna byłaby analiza kodu w celu zidentyfikowania koniecznych do modyfikacji miejsc. Poza tym wdrożenie funkcjonalności wymagałoby czasowego wyłączenia aplikacji, co w przypadku dużych systemów mogłoby być problematyczne.
W aplikacjach tworzonych na bazie mikroserwisów wystarczy stwo¬rzyć kod mechanizmu promocji i połączyć go za pośrednictwem API z pozostałymi elementami systemu. Innymi słowy, do naszej budowli dokładamy kolejny klocek, który łatwo łączymy z już gotowym projektem.
Zalet technologii mikroserwisowej jest sporo:
Łatwość rozbudowy i aktualizacji
Aplikację stworzoną z „klocków” możemy rozwijać w dowolnym momencie, dokładając funkcjonalności, aktualizując i poprawiając już działające mechanizmy. Całość odbywa się bez przestojów w pracy systemu.
Możliwość skalowania
Duże aplikacje (tzw. monolity) nie są w stanie zaoferować takiego poziomu skalowalności. Jeśli system zaczyna pracować wolno, bardzo często jest to wina jednego z elementów. W architekturze MSA programiści mogą eliminować „wąskie gardła” poprzez skalowanie, np. odpowiednio dobierając zasoby sprzętowe infrastruktury, na których działa aplikacja.
Ciągła dostępność
Aktualizacje czy rozbudowa nie wymagają wyłączania całego systemu. Dla użytkowników takie operacje są całkowicie transparentne, a to gwarantuje komfort korzystania z aplikacji.
Uniwersalność językowa
Poszczególne elementy aplikacji mogą być tworzone w różnych językach, za ich prawidłową komunikację odpowiada protokół API. To eliminuje ryzyko związane z brakiem specjalistów piszących kod w wybranej technologii.
Eliminacja długu technologicznego
Również istniejące aplikacje można przystosować do pracy w architekturze rozproszonej. Zamiast przepisywać cały kod, wybiera się kluczowe z biznesowego punktu widzenia funkcjonalności, które następnie zamykane są w kontenerach. Kontenery te „rozmawiają” później z pozostałą częścią aplikacji za pośrednictwem API. Dzięki temu możemy tchnąć nowe życie w już działające rozwiązania, bez przepisywania ich od podstaw.
Wsparcie w chmurze
Tworzenie aplikacji w modelu mikroserwisowym nie byłoby możliwe bez rozwoju technologii cloudowych. Chmura zainicjowała zmiany w tworzeniu oprogramowania, dostarczając DevOpsom nowe, elastyczne narzędzia, takie jak: skalowanie zasobów sprzętowych, klastrowanie wybranych elementów aplikacji czy kolejkowanie zapytań. Przykładem takich rozwiązań jest technologia konteneryzacji kodu – Docker ze wsparciem dla K8S (Kubernetes). Te rozwiązania pozwalają wdrażać aplikacje działające w kontenerach, zarządzać nimi, automatyzować je oraz skalować. Asseco oferuje tę usługę w chmurze publicznej Cloud by Asseco.
Czy mikroserwisy są dla każdego?
Przed rozpoczęciem pracy nad tworzeniem aplikacji należy zastanowić się nad wyborem odpowiedniego podejścia. Jeśli wiemy, że wytwarzane rozwiązanie będzie wymagało częstej rozbudowy, a dostępność i skalowalność są ważne, warto rozważyć podejście mikroserwisowe. Już na tym etapie programiści będą mogli dokonać podziału aplikacji i zamknąć wybrane elementy w kontenerach. W połączeniu z zasobami usług chmurowych tak tworzone aplikacje gwarantują wysoką dostępność oraz łatwość w zarządzaniu i rozwoju.
Autor publikacji jest kierowniem produktu w Pionie Usług Cloud i Data Center w Asseco Data Systems.