Jak funguje architektura Microservices

Architektura mikroslužeb je flexibilní, škálovatelný a modulární styl vývoje softwarových aplikací. Zahrnuje rozdělení velkých aplikací na malé nezávislé části, které plní specifické funkce.

Obecně platí, že architektura poskytuje rámec pro vytváření, aktualizaci, testování, nasazení a údržbu každé služby nezávisle. Jako takový umožňuje vývojářům vytvářet aplikace jako kolekci několika autonomních služeb.

Většina moderních cloudových nativních aplikací je dobrým příkladem mikroslužeb vytvořených pomocí kontejnerů. Kontejnery obsahují sadu všech kódů, knihoven, spustitelných souborů, souborů a dalších zdrojů, které mikroslužba vyžaduje ke spuštění. V důsledku toho mohou vývojáři vytvářet aplikace bez obav ze závislostí.

Zdroj: microsoft.com

Dnes společnosti jako Netflix, Amazon, Uber, eBay a další přešly od tradičních monolitických aplikací k mikroslužbám. Výsledkem této změny jsou uživatelsky přívětivější aplikace a spolehlivé a vylepšené služby.

Přehled

Jak podniky stále hledají způsoby, jak zůstat konkurenceschopné v nejistém a složitém prostředí, hledají způsoby, jak zvýšit efektivitu. Zejména vývojáři softwaru přijímají nové metody pro vytváření a údržbu aplikací, přidávání funkcí a další.

K tomu se posouvají od monolitické k architektuře mikroslužeb. A to jim umožňuje vytvářet aplikace a nové funkce rychleji a spolehlivě. Vývojáři a podniky mohou také pravidelně aktualizovat aplikace pomocí menších, vícefunkčních a volně propojených týmů.

Architektura mikroslužeb podporuje neustálý vývoj a nasazení softwaru. Každý tým může vytvořit řadu malých změn a testovat aplikaci a nové funkce rychleji pomocí automatizovaného zaváděcího kanálu.

Zdroj: aws.amazon.com

V ideálním případě architektura překonává většinu problémů a omezení monolitické architektury. Rozdělením velkých a složitých aplikací na menší jednotky je snazší vyvíjet velké a složité aplikace jako soubor několika nezávislých podjednotek.

Jak funguje architektura mikroslužeb

Architektura mikroslužeb je styl, který umožňuje vývojářům sestavit aplikaci jako kolekci volně propojených, nezávisle nasaditelných služeb. Každá služba, kterou vlastní malý specializovaný tým, je samostatná a zaměřuje se na řešení konkrétní obchodní funkce.

Týmy mohou vytvářet, nasazovat, upravovat, testovat a udržovat každou z jednotek nezávisle, aniž by to ovlivnilo ostatní služby. Na rozdíl od monolitické aplikace, kde jsou všechny služby sdruženy do jedné jednotky bez jakýchkoli hranic, architektura mikroslužeb rozděluje každou obchodní funkcionalitu do jediné nezávislé jednotky.

Každá mikroslužba se zaměřuje na určitou funkci, jako je protokolování, fakturace, vyhledávání, zasílání zpráv atd. Kombinací více mikroslužeb vznikne jediná aplikace s různými funkcemi. Zatímco některé mikroslužby mohou vykonávat určitou obchodní funkci samostatně, jsou chvíle, kdy dvě nebo více služeb spolupracují na provedení většího komplexního úkolu.

  Top 5 bezpečnostních mezer v instalacích WordPress

V architektuře mohou vývojáři rozložit velkou komplexní aplikaci na základě obchodních nebo funkčních požadavků (vertikálně). Výsledkem jsou menší samostatně rozmístitelné podjednotky.

Některé operace vyžadují pouze jednu mikroslužbu. Některé složité nebo náročné operace jsou však distribuovány napříč několika mikroslužbami. V takovém případě podjednotky mezi sebou komunikují pomocí lehkých synchronních nebo asynchronních síťových volání agnostických jazyků, jako je REST, gRPC nebo zasílání zpráv.

Klienti navíc nemluví přímo s mikroslužbami. Místo toho používají brány API, které předávají požadavek příslušné mikroslužbě.

Charakteristika mikroservisní architektury

Každá mikroslužba nebo aplikační proces funguje jako volně propojená, samostatná služba se svou logikou a závislostmi. Týmy mohou mikroslužbu upravovat, testovat, aktualizovat, nasazovat a škálovat, aniž by to ovlivnilo ostatní v rámci stejné aplikace.

Některé vlastnosti architektury mikroslužeb jsou:

  • Aplikace obsahuje několik samostatných nezávisle nasaditelných procesů. Systém však může volat více mikroslužeb, aby obsluhoval požadavek jednoho uživatele.
  • Architektura podporuje granulární a horizontální škálování.
  • Mikroslužby mají vnější hranice a interně spolu nekomunikují. Místo toho spolu mluví prostřednictvím lehký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ší určitou obchodní funkci nebo problém. Nejčastěji má každý vývojový tým odborné znalosti v určité komponentě.
  • S rostoucí poptávkou po více funkcích mohou vývojáři přidat další kód, díky kterému bude aplikace složitější. V takovém případě to týmy mohou dále rozdělit na nezávislejší a snáze spravovatelné služby.

Monolitické vs. Architektury mikroslužeb

Pokud v monolitické architektuře vzroste poptávka po jedné funkci, musí vývojáři škálovat celou architekturu. Přidávání nových funkcí nebo úprava stávající aplikace je složitá, časově náročná a nákladná.

Dopad selhání jedné komponenty může také ovlivnit dostupnost celé aplikace, zvláště když jsou komponenty nebo procesy na sobě závislé.

Mezi hlavní nevýhody monolitické aplikace patří:

  • Nízká spolehlivost, protože pokud selže jedna komponenta, nebude fungovat celá aplikace
  • Není snadno flexibilní
  • Obtížné měřítko
  • Pomalý vývoj, protože funkce musí být nejprve vytvořena, než se přesune k dalšímu kroku
  • Není vhodný pro velké a složité aplikace kvůli své nepružnosti a pomalému vývoji

V architektuře mikroslužeb se k sestavení aplikace používají různé a nezávislé komponenty. Každá funkce nebo mikroslužba běží jako nezávislá služba, a když je potřeba přidat nebo upravit funkce, nemusíte upgradovat celou architekturu. Místo toho postavíte pouze požadované komponenty.

Zdroj: ibm.com

To vám umožňuje aktualizovat, nasazovat nebo škálovat nebo spouštět každou službu nezávisle na vašich obchodních potřebách. Navíc dopad selhání jedné součásti je menší ve srovnání s monolitickou aplikací, kde se všechno pokazí.

Výhody architektury mikroslužeb

Hlavní výhody architektury mikroslužeb jsou:

  Jak střídat stínování řádků nebo sloupců v Tabulkách Google

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

Architektura mikroslužeb umožňuje vývojářům škálovat každou službu nezávisle, aby splňovala jedinečné požadavky na konkrétní funkci.

Díky tomu týmy nemusí škálovat celou aplikaci. Místo toho se zaměřují pouze na jednotku, která má vyšší poptávku, a následně ji škálují spolu s přidruženou infrastrukturou.

#2. Lepší odolnost

Protože jsou mikroslužby nezávislé a samostatné, problém s jednou službou pouze degraduje aplikaci a nevede k úplnému selhání. Ostatní dobré mikroslužby budou nadále fungovat a nedostupná bude pouze dotčená funkce.

V monolitické architektuře problém v jedné funkci pravděpodobně způsobí selhání celé aplikace.

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

Vývojáři mohou použít některé moduly k provádění více procesů. Například mikroslužba provádějící určitý úkol může také fungovat jako stavební blok pro jinou službu.

Vývojáři tak mohou vytvářet další funkce, aniž by museli psát nový kód od začátku. Místo toho mohou část kódu znovu použít pro jinou službu.

Další výhody jsou:

  • 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 poskytovat několik služeb současně.
  • Schopnost testovat, odstraňovat problémy, aktualizovat nebo odstraňovat určité funkce, aniž by to ovlivnilo ostatní.
  • Kratší vývojové cykly a rychlejší nasazení.
  • Menší vývojové týmy

Nevýhody architektury Microservices

Architektura mikroslužeb poskytuje výhody, jako je umožnění rychlého, častého a spolehlivého vývoje velkých a složitých aplikací. Má však také určité nevýhody a omezení.

  • U velkých aplikací mohou existovat složité problémy s kódováním mezi mikroslužbami.
  • Správa zabezpečení je výzvou, protože počet mikroslužeb roste a aplikace roste. V praxi architektura vede k široce 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, který je třeba monitorovat. Existuje například mnoho odkrytých portů, rozhraní API a dalších komponent, které tradiční nástroje zabezpečení a brány firewall nemohou dostatečně zabezpečit. Díky tomu jsou mikroslužby zranitelné vůči DDoS, man-in-the-middle, cross-site skriptování a dalším útokům.
  • Odstraňování problémů s velkými a složitými aplikacemi je s jejich růstem obtížnější. Velký počet modulů, které spolu komunikují, může mít za následek režii komunikace v důsledku zvýšeného síťového provozu a volání RPC.
  • Velké množství služeb, procesů, kontejnerů, databází a dalších pohyblivých částí přináší složitosti a výzvy distribuovaného systému.
  • S tím, jak se aplikace rozrůstají a jsou složitější, je zajištění bezpečnosti transakcí obtížné.

Zdroj: developers.redhat.com

Architektura mikroslužeb umožňuje menším týmům vyvíjet jednotlivé volně propojené služby. Aby týmy zůstaly konkurenceschopné, musí používat různé nástroje na podporu rámce, automatizovat některé opakující se úkoly a urychlit nasazení aplikací a nových funkcí.

Nástroje mikroslužeb se liší schopnostmi a dalšími funkcemi. Výběr jako takový závisí na konkrétních potřebách a na tom, čeho chtějí vývojáři dosáhnout.

Některé běžné nástroje zahrnují:

  • Operační systémy jako 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
  •   Proč je IR Blaster stále užitečný na telefonech v roce 2020

    Případy použití architektury Microservices

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

    #1. Streamování dat

    Když je potřeba streamovat a zpracovávat velké množství dat z jednoho nebo více zdrojů, mikroslužby mohou pomoci zlepšit efektivitu a výkon.

    #2. Škálovatelné webové aplikace

    Ačkoli jsou některé webové aplikace obvykle monolitické, použití architektury mikroslužeb může zlepšit škálovatelnost a výkon.

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

    Vývojáři aplikací IoT mohou k vytváření aplikací použít architekturu mikroslužeb. To jim umožňuje vytvářet malé, lehké, samostatně nasazovatelné a spravovatelné aplikace.

    ETL je technologie, která extrahuje data z jednoho nebo několika zdrojů, transformuje je do požadovaného formátu a načte je do jiného úložiště dat nebo databáze. Mikroslužby mohou pomoci zlepšit škálovatelnost a výkon takových ETL procesů.

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

    Některé z hlavních technologických společností, které přijaly mikroslužby, zahrnují;

    Amazonka

    Amazon je jedním z hlavních propagátorů architektury mikroslužeb. Jak společnost a zákaznická základna rostla, monolitická aplikace, kterou měli, se stala nestabilní a nespolehlivá.

    K vyřešení tohoto problému přešli na mikroslužby, které nyní zajišťují snadnější údržbu, přidávání nových funkcí a údržbu jednotlivých nezávislých služeb, čímž předcházejí úplným výpadkům.

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

    Uber

    Zpočátku Uber spoléhal na monolitickou aplikaci, která byla adekvátní pro město, kde nabízel služby. Jak však společnost vstoupila na nové trhy a regiony, aplikace nemohla efektivně podporovat uživatele.

    Aby Uber zajistil spolehlivé služby, přešel na architekturu založenou na mikroslužbách pro určité funkce, jako je správa cestování, správa průchodů atd.

    Zdroj: uber.com

    Netflix

    Díky mikroslužbám se Netflixu podařilo překonat problémy se škálovatelností, kterým se potýkal s růstem zákaznické základny.

    Ke zpracování asi 2 miliard požadavků denně využívá více než 500 cloudových mikroslužeb. Kromě zlepšení spolehlivosti a dostupnosti snížila architektura mikroslužeb náklady na streamování.

    Závěrečná slova

    Architektura mikroslužeb poskytuje několik výhod ve srovnání s monolitickými systémy. Patří mezi ně rychlejší nasazení aplikací a funkcí, vysoká flexibilita a škálovatelnost, odolnost a další.

    Má však také některé 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 funkcemi aplikací je navíc obtížnější a nákladnější vytvářet, nasazovat a testovat podjednotky, zejména pokud jsou distribuovány v různých cloudech a síťových prostředích.

    Jako takové je nezbytné vyhodnotit a pochopit výhody a nevýhody architektury mikroslužeb před přijetím technologie.

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