Mikroszolgáltatások bemutatója: Mi az, Architecture és példa

⚡ Okos összefoglaló

A mikroszolgáltatások egy szolgáltatásorientált architektúraminta, amelyben egy alkalmazás kis, független szolgáltatásegységek gyűjteményeként épül fel. Ez az anyag ismerteti a monolitikus és a mikroszolgáltatás-architektúrát, azok különbségeit, kihívásait, a SOA összehasonlítását, a népszerű eszközöket és a legjobb gyakorlatokat.

  • 🧩 Alapkoncepció: A mikroszolgáltatások egy alkalmazást egyetlen funkcióval rendelkező, függetlenül telepíthető modulokra bontanak, amelyek mindegyikét egy 5-10 fejlesztőből álló kis csapat birtokolja.
  • 📦 Monolitikus kontraszt: Egy monolitikus alkalmazás az összes funkciót egyetlen csomagba foglalja egyetlen szerveren, így a skálázás több teljes példány futtatását jelenti.
  • 🏗️ Mikroszolgáltatás Architectúra: Minden szolgáltatás egy üzleti képességet kezel, saját példányon fut, és könnyű, állapot nélküli protokollokon keresztül kommunikál.
  • 🗄️ Összevont adatok: Minden mikroszolgáltatás saját adattárral rendelkezik, így az egyik szolgáltatás adatmodelljének módosítása nem befolyásolja a többi szolgáltatást.
  • 🇧🇷 Eszközök és gyakorlatok: Szerszámok, mint WireMockA , a Docker és a Hystrix támogatja a tesztelést, a telepítést és a hibatűrést; minden szolgáltatást állapotmentesen, saját builddel tart fenn.

Mikroszolgáltatások bemutatója

Mik azok a mikroszolgáltatások?

Mikro szolgáltatások egy szolgáltatás-orientált architektúra-minta, amelyben az alkalmazások különböző legkisebb független szolgáltatási egységek gyűjteményeként épülnek fel. Ez egy szoftverfejlesztés megközelítés, amely egy alkalmazás egyfunkciós modulokra bontására összpontosít, jól definiált interfésszel. Ezeket a modulokat önállóan telepíthetik és működtethetik a szolgáltatás teljes életciklusát birtokló kis csapatok.

A „mikro” kifejezés egy mikroszolgáltatás méretezésére utal, amelyet egyetlen fejlesztőcsapatnak (5-10 fejlesztő) kell kezelnie. Ebben a módszertanban a nagy alkalmazásokat a legkisebb független egységekre osztják.

Mi az a monolit Architectúra?

Közérthetően fogalmazva, a monolitikus architektúra olyan, mint egy nagy konténer, amelyben egy alkalmazás összes szoftverkomponense egyetlen csomagba van sűrítve. Nézzünk meg egy e-kereskedelmi áruház példáját a monolitikus architektúra kontextusában.

Monolitikus ArchiAz e-kereskedelmi alkalmazás felépítése

Monolitikus ArchiAz e-kereskedelmi alkalmazás felépítése

Bármely e-kereskedelmi alkalmazásban van néhány szabványos funkció, mint például a Keresés, RevMegtekintések és értékelések, valamint Fizetések. Ezek a funkciók böngészőjükön vagy alkalmazásaikon keresztül érhetők el az ügyfelek számára. Amikor az e-kereskedelmi webhely fejlesztője telepíti az alkalmazást, az egyetlen monolitikus egység. A különböző funkciók, például a Keresés kódja RevA View & Ratings, valamint a Payments ugyanazon a szerveren található. Az alkalmazás skálázásához több példányt (szervert) kell futtatni ezekből az alkalmazásokból.

Mi az a Microservice Architectúra?

Mikroszolgáltatás Architectúra egy olyan építészeti fejlesztési stílus, amely lehetővé teszi alkalmazások létrehozását kis önálló szolgáltatások gyűjteményeként, amelyeket üzleti tartományra fejlesztettek ki. Ez a szerkezeti stílusú architektúra egy változata, amely segít az alkalmazások lazán összekapcsolt szolgáltatásgyűjteményként való elrendezésében. A mikroszolgáltatás ArchiA tecture finomszemcsés szolgáltatásokat és könnyű protokollokat tartalmaz.

Vegyünk egy példát egy mikroszolgáltatás-architektúrával fejlesztett e-kereskedelmi alkalmazásra. Ebben a mikroszolgáltatás-architektúra példában minden mikroszolgáltatás egyetlen üzleti képességre összpontosít. Keresés, Értékelés és RevAz iew és a Payment mindegyikének megvan a saját példánya (szervere), és kommunikálnak egymással.

Mikro szolgáltatások Architectúra

Mikro szolgáltatások Architectúra

A monolitban Archistruktúrában az összes komponens egyetlen modulba egyesül. De a mikroszolgáltatásokban ArchiA struktúrában különálló modulokra (mikroszolgáltatásokra) vannak szétosztva, amelyek kommunikálnak egymással, ahogy az a fenti mikroszolgáltatási példában is látható.

A mikroszolgáltatások közötti kommunikáció állapot nélküli kommunikáció, ahol minden kérés és válasz pár független. Így a mikroszolgáltatások könnyedén tudnak kommunikálni. A Mikroszolgáltatásban ArchiA struktúrában az adatok összevont módon vannak jelen. Minden mikroszolgáltatásnak külön adattárolója van.

Mikroszolgáltatások kontra monolit Architectúra

Mikro szolgáltatásokMonolitikus Architectúra
A teljes alkalmazás minden egységének a legkisebbnek kell lennie, és képesnek kell lennie egy konkrét üzleti cél megvalósítására.Egyetlen kódbázis minden üzleti célhoz.
A szolgáltatás indítása viszonylag gyors.A szolgáltatás indítása több időt vesz igénybe.
A hibák elkülönítése egyszerű. Még ha egy szolgáltatás ki is áll, a többi továbbra is működhet.A hibák elkülönítése nehéz. Ha bármelyik funkció nem működik, a teljes rendszer leáll. A probléma kezeléséhez az alkalmazást újra kell építeni, újra tesztelni és újra telepíteni.
Minden mikroszolgáltatást lazán kell összekapcsolni, hogy az egyikben végrehajtott módosítások ne befolyásolják a másikat.A monolitikus architektúra szorosan összekapcsolt. Az egyik kódmodulban végrehajtott változtatások hatással vannak a másikra.
A vállalkozások több erőforrást fordíthatnak olyan szolgáltatásokra, amelyek magasabb megtérülést generálnak.Mivel a szolgáltatások nem elszigeteltek, az egyedi erőforrás-elosztás nem lehetséges.
Több hardver erőforrást lehetne allokálni a gyakran használt szolgáltatáshoz. A fenti e-kereskedelmi példában több felhasználó ellenőrzi a terméklistát és keres, mint fizetés, így több erőforrást lehetne allokálni a keresési és terméklistázási mikroszolgáltatáshoz.Az alkalmazások méretezése kihívást jelent, és pazarló is.
A mikroszolgáltatások mindig konzisztensek és folyamatosan elérhetőek maradnak.A fejlesztőeszközök túlterhelődnek, mivel a folyamatot a nulláról kell kezdeni.
Az adatok összevont módon működnek. Ez lehetővé teszi az egyes mikroszolgáltatások számára, hogy az igényeiknek leginkább megfelelő adatmodellt alkalmazzák.Az adatok központosítva vannak.
Kis, fókuszált csapatok. Párhuzamos és gyorsabb fejlesztés.Nagy csapatra és jelentős csapatvezetési erőfeszítésre van szükség.
Az egyik Mikroszolgáltatás adatmodelljének változása nem érinti a többi Mikroszolgáltatást.Az adatmodell változása a teljes adatbázist érinti.
Jól definiált interfészek használatával kommunikál más mikroszolgáltatásokkal.Nem alkalmazható.
A mikroszolgáltatások azon az elven működnek, hogy a termékekre, nem pedig a projektekre összpontosítanak.A hangsúlyt a teljes projektre helyezi.
Nincsenek keresztfüggőségek a kódalapok között. A különböző mikroszolgáltatásokhoz különböző technológiákat használhat.Egy funkció vagy program másoktól függ.

Mikroszolgáltatási kihívások

  • A mikroszolgáltatások egymásra támaszkodnak, és kommunikálniuk kell egymással.
  • A monolitikus rendszerekhez képest több olyan szolgáltatást kell felügyelni, amelyeket különböző módon fejlesztettek ki programozási nyelvek.
  • Mivel elosztott rendszerről van szó, eleve összetett modellről van szó.
  • A különböző szolgáltatásoknak külön mechanizmusuk lesz, ami nagy mennyiségű memóriát eredményez a strukturálatlan adatok számára.
  • Hatékony irányításra és csapatmunkára van szükség a problémák odáig fajulásának megelőzéséhez.
  • Egy probléma reprodukálása nehéz feladat lesz, ha az egyik verzióban már nem létezik, majd a legújabb verzióban újra megjelenik.
  • A független telepítés bonyolult a mikroszolgáltatások esetében.
  • A mikroszolgáltatási architektúra rengeteg műveletet jelent.
  • Nehéz kezelni az alkalmazást, amikor új szolgáltatásokat adnak hozzá a rendszerhez.
  • A heterogén módon elosztott mikroszolgáltatások támogatásához széles körű, képzett szakemberekre van szükség.
  • A mikroszolgáltatás költséges, mivel a különböző üzleti feladatokhoz különböző szerverterületet kell fenntartani.

SOA kontra mikroszolgáltatások

A SOA szolgáltatásokat a szervezetben egy nyilvántartás tartja karban, amely címtárlistaként működik. Az alkalmazásoknak meg kell keresniük a szolgáltatásokat a nyilvántartásban, és meg kell hívniuk azokat. Más szóval, SOA olyan, mint egy zenekar, ahol minden művész a saját hangszerével lép fel, miközben a zeneigazgató utasításokat ad mindenkinek.

Másrészt a mikroszolgáltatások egy szolgáltatásorientált architektúra, amelyben az alkalmazások különböző kisebb szolgáltatások gyűjteményeként épülnek fel egyetlen szoftver vagy alkalmazás helyett. A mikroszolgáltatások olyanok, mint egy társulat, ahol minden táncos független és tudja, mit kell tennie. Tehát, ha kihagynak néhány lépést, tudják, hogyan térjenek vissza a helyes sorrendhez. Íme egy részletes összehasonlítás a SOA és a mikroszolgáltatások között.

Vizsgált paraméter SOAMikro szolgáltatások
Tervezési típusA SOA-ban a szoftverösszetevők ki vannak téve a külvilágnak, hogy szolgáltatás formájában használják őket.A Micro Service a SOA része. Ez a SOA megvalósítása.
FüggőségAz üzleti egységek függőek.Függetlenek egymástól.
A szoftver méreteA szoftver mérete nagyobb, mint bármely hagyományos szoftveré.A szoftver mérete mindig kicsi a mikroszolgáltatásokban.
Technológiai veremA technológiai stack alacsonyabb a Microservice-hez képest.A mikroszolgáltatási technológiai halom nagyon nagy lehet.
Az alkalmazás jellegeMonolitikus jellegű.Teljes verem a természetben.
Független és fókuszA SOA-alkalmazások több üzleti feladat elvégzésére készültek.Egyetlen üzleti feladat elvégzésére készültek.
bevetésA telepítési folyamat időigényes.A telepítés egyszerű és kevésbé időigényes.
Költséghatékonyság Költséghatékonyabb.Less költséghatékony.
BővíthetőségLess a Mikroszolgáltatásokhoz képest.Nagyon skálázható.
Üzleti logikaAz üzleti logikai komponensek egyetlen szolgáltatástartományon belül tárolódnak, egyszerű vezetékprotokollokkal (HTTP XML-lel vagy JSON-nal) és SDK-kkal/kliensekkel vezérelt API-kkal.Az üzleti logika több tartományon átívelően is működhet, a szolgáltatások között vállalati Service Bus-szerű rétegekkel (Middleware).

Mikroszolgáltatások Eszközök

1) Wiremock: Mikroszolgáltatások tesztelése

WireMock egy rugalmas függvénykönyvtár webszolgáltatások csonkolásához és mockolásához. Beállíthatja a HTTP API által visszaadott választ, amikor egy adott kérést kap. Mikroszolgáltatások tesztelésére is használják.

Download link: http://wiremock.org/

2) Docker

A Docker egy nyílt forráskódú projekt, amely lehetővé teszi alkalmazások létrehozását, telepítését és futtatását konténerek segítségével. Ezen konténerek használatával a fejlesztők egyetlen csomagként futtathatják az alkalmazásokat. Lehetővé teszi a könyvtárak és más függőségek egyetlen csomagban történő szállítását.

Download link: https://www.docker.com/

3) Hystrix

A Hystrix egy hibatűrő Java könyvtár. Ez az eszköz a távoli szolgáltatások, rendszerek és harmadik féltől származó könyvtárak hozzáférési pontjainak elkülönítésére szolgál egy elosztott környezetben, például a Microservices-ben. Javítja az általános rendszert azáltal, hogy elkülöníti a hibás szolgáltatásokat és megakadályozza a hibák kaszkádszerű hatását.

Letöltés Link: https://github.com/Netflix/Hystrix

A mikroszolgáltatások legjobb gyakorlatai Architectúra

  • Külön adattároló minden mikroszolgáltatáshoz.
  • Tartsd a kódot hasonló érettségi szinten.
  • Külön build minden egyes mikroszolgáltatáshoz.
  • Mindig kezelje az egyes szervereket állapot nélküliként.

GYIK

A mesterséges intelligencia képességeit gyakran különálló mikroszolgáltatásokként csomagolják, így az alkalmazások API-n keresztül hívhatnak meg egy modellt anélkül, hogy beágyaznák azt. A mesterséges intelligencia intelligens útválasztást, automatikus skálázást és anomáliadetektálást is biztosít számos szolgáltatásban.

Igen. A mesterséges intelligencia által vezérelt megfigyelhetőségi eszközök korrelálják a naplókat, a metrikák és a tracszolgáltatások közötti megoldásokat a hibák észlelésére, a szűk keresztmetszetek előrejelzésére és a kiváltó ok gyorsabb megtalálására, mint egy nagyméretű, elosztott rendszerben a manuális elemzés.

A mikroszolgáltatásokat általában állapot nélküli és állapotalapú mikroszolgáltatásokra osztják. Az állapot nélküli mikroszolgáltatások nem őrzik meg az adatokat a kérések között, míg az állapotalapú mikroszolgáltatások az adatokat vagy a munkamenet állapotát tárolják, gyakran saját dedikált adattárolójuk segítségével.

Nagy technológiai cégek, mint például Netflix, Amazon, az Uber és Spotify Mikroszolgáltatások használata a független skálázáshoz és a gyakori telepítéshez. Ez a megközelítés nagy forgalmú, felhőalapú alkalmazásokhoz illik, amelyek gyors, elszigetelt kiadásokat igényelnek.

Foglald össze ezt a bejegyzést a következőképpen: