Blog

Czym są mikrousługi?

Mikrousługi to styl programowania, w którym zespolone aplikacje składają się z wielu niezależnych serwisów. Serwisy te są małe, rozdzielone i skupione na spełnianiu niewielkich zadań – mogą być one oddzielnie rozwijane, testowane, budowane i lokowane. Koncepcja mikrousług wywodzi się z SOA – architektury zorientowanej na usługi, która swoje triumfy święciła wiele lat temu. Teraz powraca w ulepszonej postaci właśnie jako mikrousługi.

 

MicroservicesRozwiązanie tego typu daje wiele korzyści, zarówno dla developerów, jak i użytkowników. Podstawową zaletą mikroserwisów jest łatwe ich skalowanie. Skoro wszystkie serwisy to niezależne aplikacje, można zeskalować tylko niektóre z nich, pozostałe zostawiając nietknięte. Ważnym jednak jest, żeby każdy z serwisów miał swoje własne źródło danych, inaczej serwis nie będzie w pełni niezależny. Wychodzi tutaj też drugi ważny plus mikrousług – ich niezależność. Jeden serwis może być testowany i budowany bez robienia tego samego dla wszystkich innych, co znacznie upraszcza i przyśpiesza pracę. Co więcej, wydanie jednego serwisu nie jest blokowane przez niedokończenie innego, tylko może zostać swobodnie wprowadzone.

 

Mocną stroną takiego rozwiązania jest także niezależność skalowania - aplikacje są łatwiej, a więc lepiej testowalne. Niezależność mikrousług staje się dużym plusem w przypadku błędów – nawet pojedynczy nie zakłóci działania wszelkich innych aplikacji. Nie zepsuje też ogólnego działania systemu. Jest też łatwiejszy w naprawie. Mikrousługi to też niezależny rozwój, w efekcie czego jeden zespół może rozwijać jedną aplikacje, drugi drugą, nie wchodząc sobie w kompetencje. Plusy te są szczególnie ważne, jeśli chodzi o aplikacje internetowe, które muszą działać bez przerwy.

 

Aplikacje monolityczneMikroserwisy posiadają także swoje słabe strony. Wiele niezależnych, ale połączonych ze sobą i współpracujących aplikacji, może prowadzić do powstawania wielu niespodziewanych problemów i błędów – niektóre mogą być niemożliwe do rozwiązania. Niezależność mikroserwisów polegająca na łatwym przebiegu ich modyfikacji może być w niektórych sytuacjach postrzegana jako problem, na przykład wtedy, gdy potrzebna będzie zmiana większej części systemu. Wraz ze wzrostem każdej niezależnej aplikacji, wzrasta też zespół ją tworzący – może przyczynić się to do problemów w koordynacji. Łatwiej kierować jednym, sporym zespołem, tworzącym spójną całość i pracującym nad jednym kodem, niż nad wieloma zespołami pracującymi nad niezależnymi aplikacjami, które powinny tworzyć spójną całość. Mikroserwisy są stosunkowo nowym stylem programowania, który wymaga bardziej skomplikowanych narzędzi niż monolityczny odpowiednik. Jest też mniej znany, dlatego na i tak już małym rynku, znajduje się mniej specjalistów wdrożonych w system. Może więc generować większe koszty podczas tworzenia aplikacji, zwłaszcza na początku. Problemem może być też bezpieczeństwo – ciężej jest dbać o bezpieczeństwo małych, rozproszonych systemów niż o jeden spory system. Problem ten może też generować dodatkowe koszta.

 

Czy mimo wspomnianych słabych stron, warto zainteresować się mikroserwisami? Zdecydowanie tak. Po raz pierwszy od dawna powstała architektura oparta na byciu łatwą w zmianach, a przez to dostosowaniu się do szybkich zmian na rynku. Według badań wykonanych przez Business Performance Management Institute, jedynie 11% pracowników zarządów IT uważa, że jest w stanie nadążyć za momentalnie zmieniającym się rynkiem i wymaganiami stawianymi przez klientów. 36% pracowników przyznało, że ich działy mają spory problem z terminami. Mikroserwisy powstały właśnie jako ukłon w tym kierunku – dzięki nim można znacznie przyśpieszyć pracę. Nie bez powodu zostały już z powodzeniem wdrożone przez takich gigantów jak Netflix czy Amazon.