Mikroszolgáltatások megvalósítása éles környezetben

Utolsó frissítés: 22 április 2026
  • A mikroszolgáltatások a szolgáltatások, az adatok, a rugalmasság és a szerződések gondos megtervezését igénylik ahhoz, hogy éles környezetben is működőképesek legyenek.
  • A Kubernetes/OpenShift, a CI/CD és a GitOps lehetővé teszi a nagyméretű telepítések, skálázás és üzemeltetés automatizálását.
  • A platform pillérei a zéró bizalom biztonsága, a robusztus konfigurációkezelés és az OpenTelemetry általi megfigyelhetőség.
  • A termékfejlesztő csapat szervezése és az elosztott irányítás ugyanolyan fontos, mint a választott technológia.

Mikroszolgáltatás-architektúra éles környezetben

Egy mikroszolgáltatás-architektúra valós környezetben való alkalmazása nem csupán egy monolit kisebb darabokra osztásáról szól: magában foglalja újragondolni az infrastruktúrát, a berendezéseket, a folyamatokat, az adatokat, a biztonságot és a működéstAmikor a rendszer az elméleti környezetből az éles környezetbe lép, problémák merülnek fel a szolgáltatásfelderítéssel, a csapatok közötti szerződésekkel, a konfigurációs és fejlesztési (CI/CD), a megfigyelhetőséggel, a rugalmassággal és a skálázhatósággal kapcsolatban, amelyek – ha nem kezelik megfelelően – a mikroszolgáltatásokat elosztott káoszba taszítják.

A jó hír az, hogy ma már rengeteg felhalmozott tapasztalattal rendelkezünk olyan szervezetektől, mint a Netflix, az Amazon, a Google, vagy olyan nagyvállalatoktól, amelyek… Több száz mikroszolgáltatás éles környezetbenEzen tanulságok, valamint a Kubernetes és OpenShift vállalati környezetekben alkalmazott legjobb gyakorlatok alapján egy nagyon szilárd megközelítés dolgozható ki a mikroszolgáltatások nagy léptékű tervezésére, telepítésére és üzemeltetésére az irányítás elvesztése nélkül.

Miért érdemes mikroszolgáltatásokat üzembe helyezni éles környezetben (és mikor nem éri meg)

Egy jól megtervezett mikroszolgáltatás-architektúra lehetővé teszi a munkát kis, autonóm és multifunkcionális csapatok amelyek egy teljes körű szolgáltatásért felelnek. Minden csapat jól meghatározott kontextusban működik, gyakran telepíthet, és teljes felelősséget vállal a szolgáltatásáért, csökkentve a fejlesztési ciklusidőt és felgyorsítva az új funkciók szállítását.

Egy másik fontos előny a szolgáltatásonként független skálázásNem kell túlméretezni a teljes alkalmazást, ha csak a katalógus, a pénztár vagy a nyilvános API forgalmi csúcsokat tapasztal. Minden mikroszolgáltatást vízszintesen vagy függőlegesen skálázhat a terhelési mintája alapján, pontosan mérheti az egyes funkciók költségét, és fenntarthatja a rendelkezésre állást akkor is, ha egy adott területen megnő a fogyasztás.

Ezen szolgáltatások csomagolásának és telepítésének módja megkönnyíti a folyamatos megvalósítás alacsony kockázattalHa minden mikroszolgáltatást külön adnak ki, az új ötletek tesztelése és a problémás verziók visszaállítása sokkal egyszerűbb: a canary deployments, a blue/green deployments és az automatikus visszagörgetések csökkentik a hibák költségét, és teret engednek a kísérletezésnek.

Technológiai szempontból a mikroszolgáltatások elősegítik a a nyelvek, keretrendszerek és adatbázisok választásának szabadsága szolgáltatásonként. Nem minden igény fér bele ugyanabba a technológiai verembe: lehetnek üzleti szolgáltatásai .NET-ben vagy Java-ban, adatfeldolgozása Scala/Sparkban, specializált szolgáltatásai Pythonban vagy F#-ban, vagy AI mikroszolgáltatásai R-ben. Ez a szabályozott diverzitás lehetővé teszi, hogy minden esetben a megfelelő eszközt használja anélkül, hogy a teljes alkalmazást globális technológiai változásba kellene rángatni.

Továbbá, ha apró, jól definiált részekre bontjuk, az megkönnyíti funkciók építőelemekként való újrafelhasználásaEgy eredetileg egy funkció részeként létrehozott mikroszolgáltatás később újra felhasználható a rendszer más részeinek függőségeként a logika átírása nélkül. És mivel a szolgáltatások elszigeteltek, az egyikük meghibásodása általában részleges rendszerromlást eredményez, nem pedig teljes rendszerleállást, feltéve, hogy a rugalmasságot a kezdetektől fogva tervezték.

Építészeti és szolgáltatástervezés

Mikroszolgáltatás-tervezés éles környezetben

Ahhoz, hogy a mikroszolgáltatások jól működjenek éles környezetben, egy a szolgáltatási határok és felelősségi körök gondos megtervezéseGyakorlati szempontból általában a meglévő monoliton belüli durva szemcséjű szolgáltatások azonosításával kezdődik: ezek nagy funkcionális területek vagy üzleti tartományok (pl. megrendelések, katalógus, felhasználók, számlázás), amelyek már rendelkeznek valamilyen logikai elkülönítéssel.

Azokból a nagy blokkokból kiindulva kell finomítani, amíg el nem éred a finomszemcsés mikroszolgáltatások, amelyek egy koherens adathalmazon dolgoznakSaját modellel kell rendelkezniük, és pontosan tudniuk kell, hogy mit kell olvasniuk vagy írniuk más szolgáltatásoknak. Ezt a folyamatot általában tartományvezérelt tervezési (DDD) koncepciók és korlátozott kontextusok támogatják, megakadályozva, hogy egy mikroszolgáltatás „mini monolittá” váljon.

Azoknak az API-knak, amelyek ezeket a szolgáltatásokat elérhetővé teszik, rendelkezniük kell jól meghatározott és stabil szerződésekEz szigorú dokumentációt (REST OpenAPI-val, gRPC .proto fájlokkal stb.), explicit verziókezelést, a visszafelé kompatibilitás lehetőség szerinti fenntartását, valamint a szerződések validálásának automatizálását foglalja magában a hibás változtatások éles környezetben való észlelése érdekében.

Több tucat vagy több száz szolgáltatást kínáló környezetekben kulcsfontosságú a rugalmassági minták beépítése a tervezési szakasztól kezdve, hogy a rendszer készülj fel a részleges kudarcokraAz olyan minták, mint az áramkör-megszakítók, a visszatartással történő újrapróbálkozások, a jól meghatározott időtúllépések, a válaszfalak és az ellennyomás segítenek megakadályozni, hogy egy szolgáltatás kiesése befolyásolja a többit. A Chaos mérnöki eszközei, mint például a Chaos Monkey vagy a Gremlin, a platform szimulált kiesések esetén való viselkedésének gyakorlati tesztelésére szolgálnak.

Sok összetett rendszerben viszonylag egyszerű CRUD szolgáltatások léteznek együtt kifinomultabbakkal, amelyek a változó üzleti szabályokra koncentrálnak. Nem minden mikroszolgáltatásnak van szüksége komplex belső architektúráraNéhányuk egyszerű HTTP-vezérlő lehet alapvető adathozzáféréssel, míg mások, például a rendelési vagy számlázási szolgáltatás, fejlettebb mintákat (DDD, CQRS, domain események stb.) használhatnak ki.

Éles infrastruktúra: felhő, konténerek és Kubernetes/OpenShift

A valós tapasztalatok azt mutatják, hogy a mikroszolgáltatások sokkal jobban illeszkednek, ha telepítve vannak felhőinfrastruktúra konténerekkel és vezényléssel mint az elszigetelt virtuális gépeken. Az olyan platformok, mint a Kubernetes és az OpenShift, biztosítják a szükséges primitíveket a szolgáltatások konténerként történő csomagolásához, skálázásához, frissítéséhez, terheléselosztásához és a magas rendelkezésre állás kezeléséhez.

  Docker Compose vs. Kubernetes: Mikor használjuk őket, különbségek és migráció

Általában minden mikroszolgáltatás csomagolás konténerképben, vállalati alapkép alapján (például OpenJDK 21 Java szolgáltatásokhoz) az infrastruktúra csapat által felügyelt. Ezt az alapképet naprakészen tartják a biztonsági javításokkal, és amikor új verzió jelenik meg, a fejlesztőcsapatok felelősek a szolgáltatásaik újbóli felépítéséért és újbóli telepítéséért a megfelelő környezetekben.

A Kubernetes/OpenShiftben az alapvető telepítési egység a pod, amely egy vagy több tartályt foglal magábanEgy mikroszolgáltatás jellemzően egy pod típusnak felel meg, és olyan erőforrások használatával telepíthető, mint a Deployments (állapot nélküli szolgáltatások esetén) vagy a StatefulSets (ha van társított állapot). Kezdettől fogva meghatároznak egy minimális replikaszámot környezetenként, hogy a tesztelési, az üzem előtti és az éles környezetek a kritikusságuknak megfelelő rendelkezésre állási szinttel rendelkezzenek.

Az automatikus skálázás a következővel valósult meg: Horizontal Pod Autoscaler (HPA)Ez a replikák számát olyan mérőszámok alapján módosítja, mint a CPU, a memória vagy más egyéni mérőszámok. A platformnak a pod anti-affinitási szabályait is konfigurálnia kell úgy, hogy ugyanazon szolgáltatás replikái különböző csomópontok között legyenek elosztva, megakadályozva, hogy egy csomópont meghibásodása leállítsa az összes példányt.

A függőleges méretezést illetően játszik a következőkkel: erőforrások.kérések és erőforrások.korlátok A pod által felhasználható CPU- és memóriatartomány meghatározása. Például legalább 100 MB CPU és 256 MB memória lefoglalása, és legfeljebb 500 MB, illetve 2 Gi engedélyezése egy Java szolgáltatásban, a JVM (Xms, Xmx, Xss) beállításával a konténer erőforrásainak optimális kihasználása érdekében.

Állapotkezelés: állapot nélküli és állapotalapú mikroszolgáltatások

A legtöbb üzleti mikroszolgáltatás úgy van kialakítva, hogy állapot nélküli szolgáltatásokEz azt jelenti, hogy a pod nem tárol olyan információkat, amelyeknek túl kell élniük az újraindítást; az állapot külső adatbázisokban, üzenetsorokban vagy más tárolókban marad. Ez a megközelítés lehetővé teszi a dinamikus horizontális skálázást és a súrlódásmentes telepítéseket, mivel bármelyik replika képes kezelni bármilyen kérést.

Vannak azonban olyan helyzetek, amikor nincs más választás, mint perzisztens kötetek által támogatott állapotalapú mikroszolgáltatásokEz a helyzet áll fenn egyes adatbázisok, elosztott fájlrendszerek vagy olyan összetevők esetében, amelyek helyi adatok karbantartását igénylik. Ezeket a podokat jellemzően StatefulSets-ekkel telepítik, PersistentVolumeClaims használatával kapcsolják a PersistentVolumes-hez, és függőlegesen, nem pedig vízszintesen skálázódnak.

Amikor egy mikroszolgáltatásnak állandó tárolásra van szüksége, egy PersistentVolumeClaim (PVC) mérettel, hozzáférési móddal és tervezett felhasználássalAz operatív csapat felelős a platformszabályzatoknak megfelelő kiépítéséért. Erre a PVC-re a telepítési jegyzékfájl hivatkozik, és a podra van csatolva, hogy a szolgáltatás állandóan képes legyen az adatok olvasására és írására.

Bár bizonyos esetekben szükség lehet állapotalapú modellre, az általános ajánlás az, hogy megpróbáljuk a a lehető legtöbb szolgáltatás állapot nélküli maradjonEz leegyszerűsíti a telepítést, a skálázást, a rugalmasságot és a katasztrófa utáni helyreállítást, valamint csökkenti a működési bonyolultságot a sok mikroszolgáltatást tartalmazó környezetekben.

Adatdecentralizáció és szolgáltatásszuverenitás

A hagyományos infrastruktúrákban gyakori, hogy a hatékonyság maximalizálása érdekében központosítják az adatbázisokat és a tárolóeszközöket. A mikroszolgáltatások esetében ez a megközelítés más. Ez ütközik a csapat autonómiájával és a szétválasztással.Ha sok szolgáltatás ugyanazt a relációs sémát használja, bármilyen strukturális változás blokkolhatja több csapat működését, és akaratlanul is megzavarhatja a kompatibilitást.

Ezért az ajánlott gyakorlat az, hogy minden mikroszolgáltatás legyen saját adatmodelljük és saját adatbázisuk tulajdonosaBár fejlesztői környezetben ez az adatbázis konténerként futhat a fürtön belül az üzembe helyezés egyszerűsítése érdekében, éles környezetben jellemzően felhőalapú példányokat vagy más nagy rendelkezésre állású adatbázis-kiszolgálókat használnak, mindig egyértelmű tulajdonjogi határok fenntartásával.

Ez nem azt jelenti, hogy nincs integráció az adatok között: azt jelenti, hogy a A szolgáltatások közötti konzisztenciát eseményekkel és aszinkron üzenetküldéssel kezelik.A végső konzisztencia elfogadása, amikor az ésszerű. Gyakori, hogy eseménybuszokat (RabbitMQ, Azure Service Bus, Kafka stb.) használnak az állapotváltozások mikroszolgáltatások közötti terjesztésére, csökkentve az egyetlen adatbázistól való erős függőségeket.

A felhőplatform megkönnyíti a csapatok számára a választást az optimális adatbázistípus minden szolgáltatáshoz (relációs, dokumentumalapú, kulcs-érték, idősoros stb.), anélkül, hogy egyetlen technológiát erőltetnénk rá. A lényeg az, hogy a tervezés figyelembe vegye a sémák és struktúrák migrálásának lehetőségét más szolgáltatásokkal kötött szerződések felbontása nélkül, és hogy az adatdöntések az egyes mikroszolgáltatások tartományhatáraival összhangban szülessenek.

Megosztott irányítás, csapatok és szervezet

A szervezet megváltoztatása nélküli mikroszolgáltatásokra való áttérés problémákat okoz. A klasszikus megoldások helyett Funkcionális silók hálózatok, rendszerek, adatbázisok, fejlesztés és üzemeltetés számáraÖsztönözzük a termékcsapatokon alapuló struktúra kialakítását, amely összefogja a fejlesztői, minőségbiztosítási, DevOps profilokat és adott esetben az üzleti vagy adatelemzőket.

Minden csapat felelős egy vagy több mikroszolgáltatásért ugyanazon a funkcionális tartományon belül, és feltételezi, hogy mindkettő a következőket tartalmazza: fejlesztés, mint művelet (felépíted, működteted)Ez azt jelenti, hogy a csapat kezeli a CI/CD folyamatait, együttműködik az infrastruktúrával az adott igények kielégítése érdekében, és részt vesz az incidensek monitorozásában és kezelésében. Az infrastruktúra és a felhőplatform területek a közös és szabványosított szolgáltatások nyújtására összpontosítanak.

  Google I/O 2025: Dátumok, hírek és minden, ami várható

Annak érdekében, hogy ez a megosztott kormányzás ne vezessen anarchiához, kulcsfontosságú meghatározni könnyűsúlyú szabványok és megosztott katalógusokJóváhagyott alapképek, telepítési minták, névterek és szolgáltatások elnevezési konvenciói, API-irányelvek, Dockerfile és Kustomize sablonok stb. Ezek az irányelvek „védőkorlátként” szolgálnak, amelyek a csapatokat irányítják anélkül, hogy akadályoznák a döntéshozatalban.

Sok üzleti környezet használja névterek projekt vagy domain szerint elválasztvakörnyezetenként (fejlesztési, előkészítési, éles) legalább eggyel. Egy nagy projekt a mikroszolgáltatásait több névtér között is eloszthatja, feltéve, hogy a belső kommunikáció megfelelően van konfigurálva és a biztonsági szabályokat tiszteletben tartják.

CI/CD, automatizálás és a GitOps modell

Amikor egy architektúra több tucat vagy több száz mikroszolgáltatást tartalmaz, a működőképességük fenntartásának egyetlen módja az, ha jelentős összegeket fektetünk be. végponttól végpontig automatizálásEz magában foglalja a konzisztens CI/CD folyamatokat, a deklaratív telepítési definíciót, az automatizált tesztelést és az automatikus visszagörgetési mechanizmusokat.

Egy tipikus folyamatos integrációs és folyamatos szállítási folyamat kezeli kód fordítása, tesztek futtatása, minőségelemzés olyan eszközökkel, mint a SonarQubeHozd létre a konténerképet a vállalati Dockerfile-ból, és frissítsd a telepítési manifeszteket. Innen egy rendszer, mint például az ArgoCD vagy hasonló, GitOps megközelítést követve alkalmazza a módosításokat a klaszterre.

Minden mikroszolgáltatás-tárház jellemzően tartalmaz egy szabványosított Dockerfile, a folyamat konfigurációs fájlja (pl. ci.json)Minőségelemzési tulajdonságok és egy telepítési könyvtár Kubernetes definíciókkal (Kustomize vagy Helm), környezet szerint elkülönítve. A repository webhookjai olyan események esetén indítják el a folyamatot, mint a címkeküldések vagy az egyesítési kérelmek.

A GitOps minta kimondja, hogy a Az infrastruktúra és a telepítés igazságforrása a Git repository.A Deployments, Services, ConfigMap, PVC, SealedSecrets és egyéb erőforrások manifesztjei itt vannak verziózva, és speciális eszközök kezelik a klaszter állapotának szinkronizálását a Gitben definiáltakkal. Ez nyomon követhetőséget, pull request felülvizsgálatokat és egyszerű visszagörgetési lehetőségeket biztosít.

Beállítások, titkok és biztonság

Egy kiforrott mikroszolgáltatás-platformban a konfigurációkezelés a következőkre támaszkodik: ConfigMaps a nem bizalmas paraméterekhez és Secrets a bizalmas információkhozMinden mikroszolgáltatás általában rendelkezik saját ConfigMap-pel környezetenként, amely olyan tulajdonságokat tárol, mint a függő szolgáltatások URL-címei, a funkcionalitásjelzők vagy a hangolási paraméterek.

A titkos adatokat (hitelesítő adatokat, kulcsokat, tokeneket, tanúsítványokat) a következővel kezelik: szigorú biztonsági irányelvekKevésbé kritikus környezetekben elfogadható lehet, ha a fejlesztőcsapat által kezelt egyszerű szöveges formátumban tároljuk őket, de az előkészítés és az éles környezetben ajánlott titkosítani őket olyan eszközökkel, mint a Sealed Secrets vagy speciális külső felhőkezelők.

Amikor egy titkos kódot több szolgáltatás között kell megosztani (például a OTEL Collector hitelesítő adatok vagy közös kulcstárEz névtérenként egy konfigurációs adattárban központosítható. Az ezt a névteret megosztó projektek koordinálják a frissítést, amikor szükséges, így fenntartják az irányítást afelett, hogy ki olvashatja vagy módosíthatja ezeket az erőforrásokat.

A kommunikációs biztonság területén a domináns minta a Nulla bizalomSemmi sem magától értetődő csak azért, mert a forgalom „belső”. A szolgáltatások közötti összes hívást, legyen az belső vagy külső, hitelesíteni és engedélyezni kell, ideális esetben mTLS, JWT tokenekkel vagy más egyenértékű mechanizmusokkal. A mikroszolgáltatások nem delegálják vakon a biztonságot az API-kezelőnek vagy a hálózatnak; ők is elvégzik a saját ellenőrzéseiket.

Kommunikáció a mikroszolgáltatások, API-k és üzenetküldés között

Egy kiforrott mikroszolgáltatás-architektúrában a kommunikációs réteg több esetre oszlik. Az ügyfelektől (böngészők, mobilalkalmazások, harmadik felek) a háttérrendszer felé irányuló forgalomhoz a következőket használják: API-kezelőn keresztül közzétett és kezelt API-kEzek az API-k általában REST alapúak (gyakran OpenAPI-t használnak), vagy bizonyos esetekben gRPC alapúak, egy átjárón keresztül elérhetőek.

Az azonos névtérben, vagy akár ugyanazon projekt több névterében található mikroszolgáltatások közötti hívásokat általában a Belső Kubernetes szolgáltatások belső DNS-selNem mennek át a nyilvános API-kezelőn, de továbbra is követik a biztonsági, hitelesítési és engedélyezési szabályzatokat. Ezekben az esetekben használható egy szolgáltatásháló vagy belső átjárók, amelyek betartatják a közös szabályzatokat.

Amikor a mikroszolgáltatások tartoznak különböző funkcionális tartományok vagy különböző projektekA kommunikáció szervezeti szinten „nyilvánosnak” tekinthető. Ilyen esetekben normális, hogy egy API-kezelőn vagy egy interoperabilitási buszon keresztül történik, ahol a szerződések, kvóták, biztonság, verziókövetés és auditálás szabályozott, elkerülve a független klaszterek vagy névterek közötti közvetlen csatolást.

A régi vagy külső rendszerekkel való integráció tekintetében, amelyek nem mindig tudják elérhetővé tenni a modern API-kat, gyakori, hogy a következőkre támaszkodnak: specifikus csatlakozók egy interoperabilitási buszonIly módon a mikroszolgáltatások közös nyelvet beszélnek (például események vagy belső REST API-k), és a csatlakozó felelős a régi rendszerre és onnan történő fordításért, mindig megerősített biztonsággal.

A szinkron kommunikáció mellett a Az aszinkron üzenetküldés kulcsszerepet játszikA folyamatokat szétválasztja, elnyeli a csúcsokat, továbbítja az üzleti eseményeket a szolgáltatások között, és javítja a rugalmasságot. Minden eseményhez jellemzően egy jól definiált és verziózott sémához tartozik, nyomkövetési mechanizmusokkal, amelyek megakadályozzák a termelők és a fogyasztók közötti összeomlásokat a fejlődésük során.

Megfigyelhetőség, OTEL gyűjtő és működés

Egy számos mikroszolgáltatásból álló rendszerben szinte lehetetlen diagnosztizálni egy problémát jó megfigyelhetőség nélkül. Ezért integrálják ezeket a tervezési szakasztól kezdve. metrikák, központosított naplózás és elosztott nyomkövetések, amelyek lehetővé teszik számunkra, hogy megértsük, mi történik a szolgáltatás és a platform szintjén.

  Hibrid virtualizáció: hogyan lehet egyesíteni az adatközpontot, a felhőt és a konténereket?

Ennek a rendszernek egy központi eleme a OpenTelemetry Collector (OTEL Collector)Ez a névtérben vagy központilag telepítve van, hogy metrikák, naplók és nyomkövetések gyűjtsenek az összes komponensről. A mikroszolgáltatásoknak csak azt kell tudniuk, hogy el kell küldeniük a telemetriájukat a gyűjtőnek; a gyűjtő ezután továbbítja azt a megfigyelhetőségi rendszereknek (Prometheus, Grafana, Jaeger, Elastic stb.) anélkül, hogy a szolgáltatásnak ismernie kellene a részleteket.

Az infrastruktúra-tervhez a következőket használják csomópont szintű gyűjtők és exportálók Ezek a rendszerek CPU-, memória-, lemez-, hálózati és naplómetrikákat gyűjtenek a podokból, majd elküldik azokat a Prometheusnak, illetve az Elasticsearchnek. Az olyan eszközök, mint a Grafana és a Kibana, vizualizálják ezeket az információkat, irányítópultokat hoznak létre, valamint riasztásokat definiálnak intelligens küszöbértékekkel és a hozzájuk tartozó runbookokkal.

Amikor egy projektnek nagyon specifikus metrikáinak vagy nyomkövetéseinek feldolgozására van szüksége, telepítheti az OTEL Collector saját példányát a névterében, feltéve, hogy rendelkezik működési jóváhagyással és az éles karbantartási modell egyértelmű.

Tesztelési stratégia, szerződések és helyi fejlesztési tapasztalatok

Egy elosztott mikroszolgáltatás-architektúra tesztelése megköveteli a következőket: kidolgozottabb tesztelési stratégia mint egy monolitban. Az egységtesztek továbbra is alapvetőek, de a szerződéses tesztek (API-khoz és eseményekhez), a szolgáltatások közötti integrációs tesztek és a teljes folyamatokat bejáró végponttól végpontig tartó tesztek egyre nagyobb jelentőséget kapnak.

A kompatibilitást sértő változtatások elkerülése érdekében olyan technikákat alkalmaznak, mint például fogyasztóorientált szerződéstesztelésahol az ügyfelek API-elvárásokat határoznak meg, a szolgáltatók pedig teljesítik azokat. Minden szerződésmódosítás automatizált teszteken megy keresztül, amelyek CI-folyamatokban futnak, megakadályozva az ismert fogyasztókat sértő telepítéseket.

Amikor a szolgáltatások száma meghaladja a százat, a teljes rendszer helyi replikálása gyakorlatilag kivitelezhetetlenné válik. Ezért a fejlesztési tapasztalat a következőkre támaszkodik: függő szolgáltatások szimulációi vagy távoli környezetekbe való alagútépítésA fejlesztők jellemzően csak a mikroszolgáltatások egy részhalmazát telepítik, a többit pedig utánzatokkal, hamisítványokkal vagy szimulátorokkal borítják be, vagy bizonyos hívásokat átirányítanak egy megosztott integrációs környezetbe.

A teljes körű tesztelés egyre inkább a következőkre támaszkodik: rövid életű környezetek vagy a jellemzőágakból létrehozott „előnézetek”Ezek az eszközök egy elszigetelt környezetet hoznak létre az adott funkcióhoz kapcsolódó szolgáltatásokkal. Ez minimalizálja a csapatok közötti súrlódást, csökkenti az „én gépemen működik” hatást, és még azelőtt észleli az integrációs problémákat, mielőtt azok elérnék a drágább környezeteket, például az előkészítést.

Mikroszolgáltatások telepítési mintái éles környezetben

A Kubernetes-en túl számos olyan mikroszolgáltatás-telepítési minta létezik éles környezetben, amelyeket érdemes ismerni, mivel ezek a következőket célozzák: az elszigeteltség, a költségek és az érettség különböző forgatókönyveiAz egyik legrégebbi minta a több szolgáltatáspéldány hosztonkénti alkalmazása, ahol ugyanaz a fizikai vagy virtuális hoszt több különböző szolgáltatáspéldányt futtat, általában egy megosztott alkalmazáskiszolgálón.

A mintázat szerint szolgáltatáspéldány virtuális gépenkéntMinden szolgáltatás virtuálisgép-rendszerképként van csomagolva (pl. egy EC2 AMI), és saját példányban fut. Ez erős elszigeteltséget biztosít magasabb erőforrás-fogyasztás és lassabb indítási idők árán. Az olyan eszközök, mint a Packer vagy a felhőszolgáltató-specifikus megoldások megkönnyítik az éles üzemre kész virtuálisgép-rendszerképek létrehozását.

A ma legelterjedtebb minta az, hogy szolgáltatáspéldány konténerenkéntahol minden mikroszolgáltatás konténerképként épül fel, és egy orchestratoron (Kubernetes, OpenShift stb.) van telepítve. A konténerek könnyebbek, mint a virtuális gépek, nagyon gyorsan elindulnak, és lehetővé teszik, hogy mindent becsomagoljunk, ami a szolgáltatáshoz szükséges, leegyszerűsítve a telepítéseket és az automatikus skálázást.

Végül a módszerek népszerűvé váltak szerver nélküli, mint az AWS LambdaEz a minta olyan csomagfüggvényeket foglal magában, amelyek HTTP-kérésekre vagy más szolgáltatások (S3, DynamoDB, várólisták stb.) eseményeire válaszolnak, és a felhasználók csak azért fizetnek, amit használnak. Különösen jól alkalmazható nagyon kis mikroszolgáltatásokhoz vagy rövid életű eseményvezérelt feladatokhoz, bár további szempontokat vezet be a megfigyelhetőséggel, a hidegindítással és a végrehajtási korlátokkal kapcsolatban.

A gyakorlatban sok szervezet hibrid ökoszisztémával rendelkezik: a rendszer magja konténereken és orkestrátorokon fut, míg bizonyos kiegészítő komponensek szerver nélküli függvényekként vagy specializált virtuális gépekként vannak megvalósítva, mindig a következőkkel: egyértelmű interfészek és jól definiált protokollok hogy integrálják őket az egészbe.

Amikor mindezt éles rendszerbe kell ültetni, nem csak a választott technológia jelenti a különbséget, hanem az is, hogy olyan architektúrát építettek fel, amely... Hibatűrő, szükség szerint skálázható, automatikusan telepíthető és megfigyelhető.A termékhez igazított csapatoknak, a jól kezelt szerződéseknek, a decentralizált adatoknak és a robusztus felhőplatformnak köszönhetően a mikroszolgáltatások az ígéretből az összetett alkalmazások évekig tartó hatékony és fenntartható fejlesztési módjává válnak.