Megosztás a következőn keresztül:


Oldalkocsi minta

Alkalmazásösszetevők üzembe helyezése a fő alkalmazástól eltérő folyamatba vagy tárolóba az elkülönítés és a beágyazás biztosítása érdekében. Ez a minta lehetővé teszi, hogy különböző összetevőkből és technológiákból hozzon létre alkalmazásokat.

A motorkerékpár oldalkocsihoz hasonlóan ezek az összetevők egy szülőalkalmazáshoz csatlakoznak, és megosztják életciklusukat, így együtt hozhatja létre és távolíthatja el őket. Ezt a mintát Sidekick-mintázatnak is nevezik , és támogatja az alkalmazások felbontását.

Környezet és probléma

Az alkalmazások és szolgáltatások gyakran igényelnek kapcsolódó funkciókat, például monitorozást, naplózást, konfigurációt és hálózati szolgáltatásokat. Ezeket a perifériafeladatokat különálló összetevőkként vagy szolgáltatásokként implementálhatja.

A szorosan integrált összetevők ugyanabban a folyamatban futnak, és hatékonyan használják a megosztott erőforrásokat, de nincs elkülönítésük. Az egyik összetevő kimaradása hatással lehet a teljes alkalmazásra. A szülőalkalmazás nyelvének implementálását is igénylik, ami kölcsönös függőséget teremt.

Ha az alkalmazást szolgáltatásokra bontja, az egyes szolgáltatásokat különböző nyelvek és technológiák használatával hozhatja létre. Ez a megközelítés nagyobb rugalmasságot biztosít. Azonban minden összetevő saját függőségekkel rendelkezik, és nyelvspecifikus kódtárakat igényel a platformhoz és a megosztott erőforrásokhoz való hozzáféréshez. Ha külön szolgáltatásként telepíti ezeket a funkciókat, késést ad meg. A nyelvspecifikus kód és függőségek az üzemeltetés és az üzembe helyezés összetettségét is növelik.

Megoldás

Helyezzen üzembe egy összetartó feladatkészletet az elsődleges alkalmazás mellett egy külön folyamatban vagy tárolóban. Ez a megközelítés egységes felületet biztosít a különböző nyelveken elérhető platformszolgáltatásokhoz.

A Sidecar-mintát ábrázoló diagram.

A sidecar-szolgáltatás anélkül csatlakozik az alkalmazáshoz, hogy annak része lenne, és mellette kerül üzembe helyezésre. Minden alkalmazáspéldány saját sidecar példányt kap, amely megosztja annak életciklusát.

A Sidecar minta a következő előnyöket biztosítja:

  • Nyelvfüggés: A sidecar az elsődleges alkalmazás futtatókörnyezetétől és programozási nyelvétől függetlenül fut. Egy oldalkocsis implementációt használhat különböző nyelveken írt alkalmazásokban.

  • Megosztott erőforrás-hozzáférés: Az oldalkocsi ugyanazokat az erőforrásokat érheti el, mint az elsődleges alkalmazás. Az oldalkocsi például figyelheti a mindkét összetevő által használt rendszererőforrásokat.

  • Kis késés: Az oldalkocsi elsődleges alkalmazáshoz való közelsége minimálisra csökkenti a kommunikációs késést.

  • Fokozott bővíthetőség: A natív bővíthetőségi mechanizmusokat nem tartalmazó alkalmazásokat úgy terjesztheti ki, hogy egy oldalkocsit külön folyamatként csatol ugyanazon a gazdagépen vagy alkontaineren.

Ennek a mintának a leggyakoribb implementációja tárolókat használ, amelyeket oldalkocsis tárolóknak vagy segéd tárolóknak is neveznek.

Problémák és szempontok

A minta megvalósításakor vegye figyelembe a következő szempontokat:

  • Fontolja meg az üzembe helyezési és csomagolási formátumot a szolgáltatások, folyamatok vagy tárolók üzembe helyezéséhez. A konténerek jól működnek a Sidecar mintához.

  • Oldalkocsis szolgáltatás tervezésekor gondosan válassza ki a folyamatközi kommunikációs mechanizmust. Használjon nyelvi vagy keretrendszer-agnosztikus technológiákat, hacsak a teljesítménykövetelmények nem teszik praktikussá ezt a megközelítést.

  • Mielőtt funkciókat ad egy oldalkocsihoz, értékelje ki, hogy jobban működik-e különálló szolgáltatásként vagy hagyományos démonként.

  • Fontolja meg, hogy a funkciót kódtárként vagy hagyományos kiterjesztési mechanizmussal valósítja-e meg. A nyelvspecifikus kódtárak mélyebb integrációt és kevesebb hálózati többletterhelést biztosítanak.

Mikor érdemes használni ezt a mintát?

Használja ezt a mintát, ha:

  • Az elsődleges alkalmazás különböző nyelveket és keretrendszereket használ. Az oldalkocsik egységes felületet biztosítanak, amelyet a különböző alkalmazások a nyelvüktől vagy keretrendszerüktől függetlenül használhatnak.

  • Egy külön csapat vagy külső partner rendelkezik egy összetevővel.

  • Egy összetevőt vagy szolgáltatást az alkalmazással megegyező gazdagépen kell üzembe helyeznie.

  • Olyan szolgáltatásra van szüksége, amely megosztja a fő alkalmazás teljes életciklusát, de függetlenül frissíthet.

  • Egy adott erőforrás vagy összetevő erőforráskorlátainak részletes szabályozására van szükség. Üzembe helyezhet például egy összetevőt oldalkocsiként, hogy a fő alkalmazástól függetlenül korlátozza és kezelje a memóriahasználatot.

Ez a minta nem feltétlenül megfelelő, ha:

  • Optimalizálnia kell a folyamatközi kommunikációt. Az oldalkocsik többletterhelést, különösen késést okoznak, ami miatt nem alkalmasak az összetevők közötti gyakori kommunikációval rendelkező alkalmazásokra.

  • Az alkalmazás kicsi. Az egyes példányokhoz társított oldalkocsi üzembe helyezésének erőforrásköltsége meghaladhatja az elkülönítés nyújtotta előnyöket.

  • Az összetevőt önállóan kell méreteznie. Ha az összetevőt a fő alkalmazástól eltérően kell skáláznia, helyezze üzembe külön szolgáltatásként.

  • A platform egyenértékű funkciókat biztosít. Ha az alkalmazásplatform natív módon biztosítja a szükséges képességeket, az oldalkocsik szükségtelen összetettséget biztosítanak.

Munkaterhelés tervezés

Értékelje ki, hogyan használhatja a Sidecar-mintát a számítási feladatok tervezésében az Azure Well-Architected-keretrendszer pilléreiben foglalt célok és alapelvek kezelésére. Az alábbi táblázat útmutatást nyújt arról, hogy ez a minta hogyan támogatja az egyes pillérek céljait.

Pillér Hogyan támogatja ez a minta a pillércélokat?
A biztonsági tervezési döntések segítenek biztosítani a számítási feladatok adatainak és rendszereinek titkosságát, integritását és rendelkezésre állását. Ha ezeket a feladatokat külön folyamatokban helyezi üzembe, a támadási felületet csak a szükséges kódra csökkenti. Az oldalkocsikkal többirányú biztonsági vezérlőket is hozzáadhat olyan alkalmazás-összetevőkhöz, amelyek nem támogatják natívan ezeket a funkciókat.

- SE:04 Szegmentálás
- SE:07 Titkosítás
Az operatív kiválóságszabványosított folyamatok és a csapat kohéziója révén segít a számítási feladatok minőségének biztosításában. Ez a minta lehetővé teszi a megfigyelhető eszközök rugalmas integrálását anélkül, hogy függőségeket ad az alkalmazás kódjához. Az oldalkocsit az alkalmazástól függetlenül frissítheti és karbantarthatja.

- OE:04 Eszközök és folyamatok
- OE:07 Monitorozási rendszer
A teljesítményhatékonyság a skálázás, az adatok és a kód optimalizálásával segíti a számítási feladatok hatékony kielégítését . Ezzel a mintával központosíthatja a több alkalmazáspéldányra skálázható oldalkocsikon végzett keresztmetszeti feladatokat. Nem kell duplikált funkciókat üzembe helyeznie az egyes alkalmazáspéldányokhoz.

- PE:07 Kód és infrastruktúra

Ha ez a minta kompromisszumokat vezet be egy pilléren belül, vegye figyelembe őket a többi pillér céljaival szemben.

Example

A Sidecar-mintát számos forgatókönyvre alkalmazhatja. Vegye figyelembe a következő példákat:

  • Függőség absztrakciója: Helyezzen üzembe egy egyéni szolgáltatást az egyes alkalmazások mellett, hogy egy konzisztens API-val hozzáférést biztosítson a megosztott függőségi képességekhez. Ez a megközelítés a nyelvspecifikus ügyfélkódtárakat egy oldalkocsira cseréli, amely kezeli az olyan problémákat, mint a naplózás, a konfiguráció, a szolgáltatásfelderítés, az állapotkezelés és az állapotellenőrzés.

    Az Elosztott alkalmazás futtatókörnyezet (Dapr) oldalkocsija példázza ezt a használati esetet.

  • Szolgáltatásháló adatsíkja: Helyezzen üzembe egy oldalkocsi-proxyt az egyes szolgáltatáspéldányok mellett, hogy kezelje az olyan horizontális hálózatkezelési problémákat, mint a forgalomirányítás, az újrapróbálkozás, a kölcsönös átviteli rétegbiztonság (mTLS), a szabályzatkényszerítés és a telemetria.

    Az Istio-hoz hasonló szolgáltatáshálók oldalkocsi-proxyk használatával implementálják ezeket a képességeket anélkül, hogy módosítani kellene az alkalmazás kódját.

  • Ambassador sidecar: Az Ambassador szolgáltatás oldalkocsiként történő üzembe helyezése. Az alkalmazás a hívásokat a nagyköveten keresztül irányítja át, amely kezeli a kérések naplózását, az útválasztást, a kapcsolatcsoport megszakadását és egyéb csatlakozási funkciókat.

  • Protokolladapterek: Helyezzen üzembe egy oldalkocsit a nem kompatibilis protokollok vagy adatformátumok közötti fordításhoz vagy az üzenetkezelési rendszerek áthidalásához. Ez a megközelítés lehetővé teszi, hogy az alkalmazás egyszerűbb vagy örökölt interfészeket használjon.

  • Telemetriai bővítés: Helyezzen üzembe egy oldalkocsit a telemetriai adatok (például metrikák, naplók és nyomkövetések) előfeldolgozásához vagy bővítéséhez, mielőtt az adatokat külső figyelési rendszerekre továbbítja. Az olyan összetevők, mint az OpenTelemetry Collector , futtathatók oldalkocsiként, hogy az alkalmazástól elkülönítve normalizálják, bővítsék vagy irányítják a telemetriát.

Következő lépések