Programování
26. června 2020 4 minuty čtení

Mikroslužby

Mikroslužby neboli microservices jsou jedním z největších buzzwordů dnešního IT. Ve vývojářské komunitě snad není nikdo, kdo by o architektuře založené na mikroslužbách ještě neslyšel nebo ji nevyužíval. Jenže když dojde na to, jak tento koncept definovat, nejsou odborníci jednotní, obzvláště pokud jde o to, jak jej přiblížit široké veřejnosti.

Mikroslužby jsou velice komplexní technické téma, které spadá do oblasti softwarového vývoje. Architektura založená na mikroslužbách je složená z malých autonomních služeb (mikroslužby). Každá tato část je samostatná a nezávislá (má autonomní kód), může ji spravovat samostatný vývojářský tým a lze ji upravovat bez nutnosti budovat znovu celou aplikaci, která se skládá z volně propojených mikroslužeb. Architektura založená na mikroslužbách je ve spojení s kontejnerovými technologiemi a orchestrací prezentována zejména jako řešení ideální pro cloudové aplikace a software-as-a-service modely. Teď si zkusíme rozebrat, co to vlastně znamená.

Monolit

Pro lepší představu si představíme monolitický způsob budování aplikací, který je jakýmsi protipólem architektury mikroslužeb. Dříve vývojáři vytvářeli systémy tzv. monoliticky. Probíhalo to tak, že na základní projekt se postupně nabalovaly nové funkce a docházelo k jeho rozvoji. Postupně tak projekt bobtnal a za dva roky z něj bylo „monstrum“, kde jakýkoliv zásah a úprava mohly vyústit ve zhroucení celého systému. Tento typ systému je také náročnější a nákladnější jakkoliv škálovat. Typicky byly takto vyvíjeny podnikové aplikace, pro něž měla architektura založená na mikroslužbách přinést řešení problematického vývoje a provozních problémů. 

Ekosystém mikroslužeb

Jednou z nosných myšlenek mikroslužeb je zaměření se na budování jednotlivých služeb se specifickým účelem, který spolehlivě zastávají. Tyto jednotky jsou modulární a využívají jednoduché a dobře navržené rozhraní pro komunikaci s dalšími službami, které jsou komponentami výsledného celku. Ten je ve finále ekosystémem, ve kterém operují nezávislé mikroslužby.

Výhody a nevýhody

Mezi výhody architektury mikroslužeb patří zejména flexibilita a zjednodušení procesu oprav, updatů i správy. Na jednotlivých službách mohou pracovat samostatné týmy, které mohou lépe komunikovat a být produktivnější. Také se na minimum snižuje závislost kódu a úpravy nevyžadují zásahy na více místech, díky čemuž je jednodušší přidávat nové funkce. Jednodušší jsou také aktualizace, avšak aktualizace služby nesmí přerušit funkci služeb, které na ní závisí. Když dojde k chybě, je snazší ji v rámci konkrétní mikroslužby odhalit a opravit, případně mikroslužbu izolovat, aniž by bylo nutné vyřadit celou aplikaci.

Nicméně ani architektura založená na mikroslužbách není všespásné řešení. Přestože jsou mikroslužby jednotlivě lépe ovladatelné a spravovatelné, výsledná aplikace je tím složitější, čím více mikroslužeb obsahuje. Testování závislostí služeb znesnadňuje absence vhodných nástrojů, a proto může být komplikovanější. Mikroslužby také vyžadují jiný přístup k vývoji, přičemž decentralizace vytváření mikroslužeb je poněkud dvousečná. Výsledný produkt může skončit jako těžko spravovatelná skrumáž a je nutné zavést určité standardy, zejména v případě společných funkcí. Platí zásada, že služby by měly být volně vázány, ale mít vysokou soudržnost funkcí.

Jak implementovat mikroslužby

Architekturu založenou na mikroslužbách si osvojily například Netflix, Uber nebo Spotify. Díky tomu mohou lépe škálovat své služby i minimalizovat nežádoucí masivní výpadky. Pro úspěšnou implementaci tohoto modelu je proto zapotřebí dobře chápat své obchodní záměry a vyhodnotit, zda jde o vhodné řešení. Mikroslužby fungují dobře pro rozsáhlé podnikové systémy, které denně odbavují tisíce procesů. Pro začínající start-up je proto vhodnější tradiční přístup.

Co se týká vývoje, všichni musí také chápat, co se po nich chce – týmy musejí mít dostatečné znalosti a dovednosti, jako data modeling, asynchronní programování a vývoj API. Migrace k mikroslužbám vyžaduje, aby si jednotlivé týmy osvojily agilní metodiky. Větší tým by měl být rozdělen na několik menších, pracujících nezávisle.

Úspěšný přechod na architekturu mikroslužeb do značné míry závisí na vývojářích a správném přístupu a komplexní strategii.

 

Číst další články na téma Programování