Jak funguje architektura Microservices

Photo of author

By etechblogcz

Mikroslužby představují flexibilní, dobře škálovatelný a modulární přístup k vývoji softwaru. Jejich podstatou je rozdělení rozsáhlých aplikací na menší, autonomní celky, z nichž každý se stará o specifickou funkci.

Tento architektonický styl umožňuje nezávislý vývoj, aktualizaci, testování, implementaci a údržbu jednotlivých služeb. Výsledkem je, že vývojáři mohou vytvářet aplikace skládáním několika samostatných komponent.

Většina současných cloudových aplikací, které využívají kontejnery, je skvělým příkladem mikroslužeb. Kontejnery obsahují veškerý kód, knihovny, spustitelné soubory a další potřebné prostředky, které služba potřebuje ke svému běhu. Díky tomu se vývojáři nemusí starat o závislosti a mohou se soustředit na samotný kód.

Zdroj: microsoft.com

Dnes mnoho významných společností, jako Netflix, Amazon, Uber či eBay, přešlo z tradičních monolitických aplikací na architekturu mikroslužeb. Tento krok vedl k uživatelsky přívětivějším a spolehlivějším aplikacím a službám.

Přehled

V neustále se měnícím a konkurenčním prostředí hledají firmy způsoby, jak zvýšit efektivitu. Vývojáři softwaru proto zkoušejí nové metody pro tvorbu a údržbu aplikací, přidávání nových funkcí a další vylepšení.

Jedním z klíčových trendů je přechod od monolitické architektury k mikroslužbám. To jim umožňuje vytvářet a aktualizovat aplikace rychleji a spolehlivěji. Díky menším, flexibilnějším týmům mohou podniky a vývojáři častěji uvádět aktualizace.

Architektura mikroslužeb podporuje kontinuální vývoj a implementaci softwaru. Týmy mohou pracovat na malých, dílčích úpravách a díky automatizovaným nástrojům testovat aplikace a nové funkce rychleji.

Zdroj: aws.amazon.com

V ideálním případě mikroslužby odstraňují většinu problémů a omezení spojených s monolitickou architekturou. Rozdělením rozsáhlých a komplikovaných aplikací na menší celky je snazší vyvíjet velké a komplexní aplikace jako soubor menších, nezávislých součástí.

Jak funguje architektura mikroslužeb

Architektura mikroslužeb umožňuje vývojářům skládat aplikace z nezávislých a volně propojených služeb. Každá z těchto služeb je samostatnou jednotkou, která je spravována malým specializovaným týmem a zaměřuje se na konkrétní obchodní funkci.

Týmy mají možnost vytvářet, implementovat, upravovat, testovat a udržovat každou z těchto služeb nezávisle na ostatních. Na rozdíl od monolitických aplikací, kde jsou všechny služby integrované v jediné entitě, architektura mikroslužeb rozděluje každou obchodní funkčnost do samostatné jednotky.

Každá mikroslužba se specializuje na specifickou funkci, jako je například protokolování, fakturace, vyhledávání či zasílání zpráv. Kombinací více mikroslužeb vznikne plnohodnotná aplikace s rozličnými funkcemi. Zatímco některé mikroslužby mohou pracovat samostatně, jiné potřebují spolupracovat na větších, komplexních úkolech.

Vývojáři mohou rozdělit rozsáhlou a složitou aplikaci na menší, nezávisle nasaditelné jednotky podle obchodních nebo funkčních požadavků (vertikálně).

Některé operace vyžadují pouze jednu mikroslužbu, zatímco jiné, složitější, jsou rozloženy mezi několik mikroslužeb. V takových případech jednotky komunikují pomocí odlehčených synchronních nebo asynchronních síťových volání (např. REST, gRPC nebo zasílání zpráv).

Klienti nekomunikují přímo s mikroslužbami, ale využívají API brány, které předávají požadavky na správnou službu.

Charakteristika mikroservisní architektury

Každá mikroslužba či aplikační proces funguje jako autonomní služba s vlastní logikou a závislostmi. Týmy mohou mikroslužby upravovat, testovat, aktualizovat, implementovat a škálovat, aniž by ovlivnily ostatní části aplikace.

Mezi hlavní vlastnosti architektury mikroslužeb patří:

  • Aplikace se skládá z několika nezávisle nasaditelných procesů. Systém však může volat více mikroslužeb, aby obsloužil jediný uživatelský požadavek.
  • Architektura podporuje škálování na granulární a horizontální úrovni.
  • Mikroslužby mají jasně definované vnější rozhraní a interně mezi sebou nekomunikují. Komunikují prostřednictvím odlehčených síťových hovorů, jako je RPC a zasílání zpráv.
  • Skládá se ze specializovaných a jednoduchých jednotek, z nichž každá řeší specifickou obchodní funkci. Často má každý vývojový tým specializaci v konkrétní komponentě.
  • S rostoucími požadavky na nové funkce mohou vývojáři přidávat další kód, který může aplikaci zkomplikovat. V takovém případě lze aplikaci dále rozdělit na menší, snadněji spravovatelné služby.

Monolitické vs. Architektury mikroslužeb

V případě monolitické architektury, když stoupne poptávka po jedné funkci, je nutné škálovat celou architekturu. Přidávání nových funkcí nebo úprava stávající aplikace je složitý, zdlouhavý a nákladný proces.

Selhání jedné komponenty může ovlivnit dostupnost celé aplikace, zejména když jsou komponenty závislé na sobě.

Mezi hlavní nevýhody monolitických aplikací patří:

  • Nízká spolehlivost: selhání jedné komponenty může způsobit selhání celé aplikace.
  • Snížená flexibilita.
  • Obtížné škálování.
  • Pomalý vývoj: funkce se musí nejprve vytvořit, než se přejde k dalšímu kroku.
  • Nevhodné pro velké a komplexní aplikace z důvodu nepružnosti a pomalého vývoje.

Naproti tomu, v architektuře mikroslužeb se aplikace sestavuje z různých, nezávislých komponent. Každá funkce nebo mikroslužba běží jako nezávislá služba. Pokud je třeba přidat či upravit funkce, není nutné aktualizovat celou architekturu, ale pouze potřebné komponenty.

Zdroj: ibm.com

To umožňuje aktualizovat, implementovat, škálovat či spouštět každou službu nezávisle na základě obchodních potřeb. Navíc dopad selhání jedné komponenty je mnohem menší než v monolitické aplikaci, kde vše selže najednou.

Výhody architektury mikroslužeb

Mezi hlavní výhody architektury mikroslužeb patří:

#1. Snadné a flexibilní škálování služeb

Architektura mikroslužeb umožňuje vývojářům škálovat jednotlivé služby nezávisle na základě požadavků konkrétní funkce.

Týmy tak nemusí škálovat celou aplikaci, ale pouze tu jednotku, která má zvýšenou poptávku, a s ní i přidruženou infrastrukturu.

#2. Vyšší odolnost

Protože jsou mikroslužby nezávislé, problémy s jednou službou pouze omezí funkčnost aplikace, ale nezpůsobí její kompletní selhání. Ostatní služby budou fungovat dál a nedostupná bude pouze dotčená funkce.

V monolitické architektuře může problém s jednou funkcí způsobit pád celé aplikace.

#3. Opakovaně použitelný kód

Vývojáři mohou využít některé moduly pro více procesů. Mikroslužba, která plní určitý úkol, může posloužit jako stavební blok pro jinou službu.

Díky tomu mohou vývojáři vytvářet nové funkce, aniž by museli psát kód od začátku. Místo toho mohou část kódu znovu využít pro jinou službu.

Další výhody:

  • Architektura mikroslužeb využívá kontejnery, bezserverové výpočty, DevOps a další moderní technologie vývoje softwaru.
  • Umožňuje vývojářům vytvářet a dodávat několik služeb najednou.
  • Schopnost testovat, odstraňovat problémy, aktualizovat nebo odstraňovat určité funkce bez dopadu na ostatní.
  • Kratší vývojové cykly a rychlejší nasazení.
  • Menší vývojové týmy.

Nevýhody architektury Microservices

Architektura mikroslužeb přináší výhody, jako je rychlý, častý a spolehlivý vývoj velkých a komplexních aplikací. Má ale i svá omezení a nevýhody.

  • V rozsáhlých aplikacích mohou vznikat komplikace spojené s kódováním mezi mikroslužbami.
  • Správa zabezpečení je komplikovanější s rostoucím počtem mikroslužeb a velikostí aplikace. Architektura vede k distribuovanému systému s větší útočnou plochou, složitými přístupovými pravidly a větším síťovým provozem. Zranitelnosti mikroslužeb zahrnují DDoS, man-in-the-middle útoky, cross-site scripting a další.
  • Odstraňování problémů s rozsáhlými a komplexními aplikacemi je s jejich růstem obtížnější. Velký počet vzájemně komunikujících modulů může generovat režii spojenou se zvýšeným síťovým provozem a voláními RPC.
  • Velké množství služeb, procesů, kontejnerů, databází a dalších částí přináší složitost a problémy distribuovaného systému.
  • S rostoucí složitostí aplikací je obtížnější zajištění bezpečnosti transakcí.

Zdroj: developers.redhat.com

Architektura mikroslužeb umožňuje menším týmům vyvíjet samostatné a volně propojené služby. Týmy musí využívat různé nástroje na podporu rámce, automatizovat opakující se úkoly a urychlovat implementaci aplikací a nových funkcí, aby si zachovaly konkurenceschopnost.

Nástroje pro mikroslužby se liší v závislosti na jejich funkcích a vlastnostech. Jejich výběr závisí na konkrétních potřebách a cílech vývojářů.

Mezi běžné nástroje patří:

  • Operační systémy: Linux a Windows
  • Programovací jazyky: Spring Boot, Elixir, Java, Golang, Python, Node JS
  • Nástroje pro správu a testování API: API Fortress, Postman, Tyk
  • Nástroje pro zasílání zpráv: RabbitMQ, Amazon Simple Queue Service (SQS), Apache Kafka, Google Cloud Pub/Sub
  • Sady nástrojů: Seneca, fabric8, Google Cloud Functions
  • Architektonické rámce: Kong, Goa, Helidon, Quarkus, Molecular
  • Orchestrační nástroje: Conductor, Kurbenetes, Azure Kurbenetes service (AKS), Apache Mesos, Amazon Elastic Container Service
  • Monitorovací nástroje: Logstash, Graylog Elastic Stack, Middleware
  • Bezserverové nástroje: Kubeless, Claudia, Apache Openwhisk
  • Případy použití architektury Microservices

    Mikroslužby jsou ideální pro různá odvětví a aplikace, kde zlepšují výkon a efektivitu. Níže jsou uvedeny některé běžné příklady:

    #1. Streamování dat

    Mikroslužby mohou zlepšit efektivitu a výkon při streamování a zpracování velkého objemu dat z jednoho nebo více zdrojů.

    #2. Škálovatelné webové aplikace

    I když jsou některé webové aplikace monolitické, využití architektury mikroslužeb může zvýšit škálovatelnost a výkon.

    #3. Aplikace internetu věcí (IoT)

    Vývojáři aplikací IoT mohou využít architekturu mikroslužeb pro vytváření menších, samostatných a snadno spravovatelných aplikací.

    ETL je technologie, která extrahuje data z jednoho nebo více zdrojů, transformuje je do požadovaného formátu a ukládá je do jiného úložiště dat či databáze. Mikroslužby mohou zlepšit škálovatelnost a výkon těchto ETL procesů.

    Příklady společností využívajících architekturu Microservices

    Některé z velkých technologických společností, které přešly na mikroslužby, jsou:

    Amazon

    Amazon je jedním z hlavních propagátorů architektury mikroslužeb. S růstem společnosti a zákaznické základny se původní monolitická aplikace stala nestabilní a nespolehlivou.

    Pro vyřešení tohoto problému přešli na mikroslužby, které umožňují snazší údržbu, přidávání nových funkcí a údržbu jednotlivých služeb bez kompletních výpadků.

    Kromě využití mikroslužeb na nákupním webu Amazon nabízí také infrastrukturu, Amazon Web Services (AWS), kde mohou podniky vytvářet, hostovat a spravovat mikroslužby.

    Uber

    Na začátku Uber spoléhal na monolitickou aplikaci, která byla dostatečná pro město, ve kterém poskytoval služby. S rozšiřováním na nové trhy a regiony však aplikace nedokázala efektivně podporovat uživatele.

    Aby Uber zajistil spolehlivé služby, přešel na architekturu mikroslužeb pro některé funkce, jako je správa jízd, plateb atd.

    Zdroj: uber.com

    Netflix

    Díky mikroslužbám se Netflix dokázal vypořádat s problémy se škálovatelností, které se objevily s růstem počtu zákazníků.

    K obsloužení přibližně 2 miliard požadavků denně používá více než 500 cloudových mikroslužeb. Kromě zlepšení spolehlivosti a dostupnosti architektura mikroslužeb snížila náklady na streamování.

    Závěrečná slova

    Architektura mikroslužeb nabízí oproti monolitickým systémům řadu výhod. Mezi ně patří rychlejší nasazování aplikací a funkcí, vysoká flexibilita a škálovatelnost, odolnost a další.

    Má ale i své nevýhody a nemusí být vhodná pro všechny aplikace. Například u menších aplikací nemusí být nákladově efektivní.

    S rostoucí velikostí a složitostí aplikací je navíc stále obtížnější a nákladnější vytvářet, nasazovat a testovat dílčí celky, zejména pokud jsou distribuované v různých cloudech a síťových prostředích.

    Proto je nezbytné vyhodnotit a porozumět výhodám a nevýhodám architektury mikroslužeb před jejím použitím.

    Dále se podívejte na špičková řešení pro správu API pro malé firmy i velké podniky.