Mikrousługi (Microservices) - faktyczna nowość, czy kolejny buzzword?

Kategoria II

W chwili obecnej coraz większą popularność wśród projektantów architektury oprogramowania zaczyna zdobywać koncepcja “mikrousług”. Jest to alternatywne – w stosunku do monolitycznego – podejście do budowy aplikacji. Stosowane jest ono m.in. przez takie firmy jak Amazon, The Guardian, czy Netflix. Do tej pory nie wypracowano jednak jednej, obowiązującej definicji tego pojęcia. Martin Fowler zauważa, że mikrousługi są jednym ze stylów architektonicznych, zgodnie z którym powstające oprogramowanie składa się z zestawu mikro-usług, z których każda działa w ramach własnego procesu i komunikuje się z innymi mikro-usługami za pomocą lekkich protokołów komunikacyjnych – takich jak np. HTTP. Każda mikro-usługa koncentruje się na wsparciu określonego potencjału biznesowego organizacji i jest niezależna od innych mikro-usług (dlatego może być samodzielnie deployment’owana). Ponadto nie ma scentralizowanego zarządzania mikrousługami, co powoduje, że każda z nich może być przygotowana w innym języku programowania oraz może używać innej technologi przechowywania danych.

Oczywiście przy takiej charakterystyce mikrousług, pierwsze co przyszło mi do głowy to, że jest to zabieg marketingowy dotyczący “ponownej sprzedaży” koncepcji  SOA. Czyli SOA nie jest już teraz takie modne (zostało “przykryte” przez Biga Data i Cloud Computing) więc, potrzebne było odkrycie na nowo tego podejścia. Z drugiej strony Martin Fowler na swoim blogu pisze, że SOA zrobiło się zbyt rozmytą koncepcją, która zaczęła znaczyć wszystko i nic – a tutaj jest to dosyć dobrze określony sposób tworzenia aplikacji (tylko tyle i aż tyle). Ale jeżeli pomyśli się o usługach sieciowych (web services) jako sposobie realizacji SOA – to nie za bardzo widzę różnicę (poza zmianami na poziomie technologii – bo powstały takie frameworki do tworzenia aplikacji jak  Sinatra czy Flask ) w stosunku do mikrousług.

Czy mikrousługi się przyjmą? Wydaje się, że tak. Po pierwsze idealnie wpasowują się w ideę zespołów pracujących w duchy Agile (a to jest obecnie na topie). Po drugie dostępne stały się narzędzia wspierające proces “Continuous delivery”, a zastosowanie takiego sposobu wytwarzania oprogramowania jest niezbędne dla wykorzystania mikrousług. Wreszcie filozofia mikrousług jest zbieżna z modelem, który Gartner określił mianem “API economy”, który ma być “must have” w najbliższych lata dla firm działających w sieci (czyli praktycznie wszystkich).