API-átjárók használata mikroszolgáltatásokban

Azure Application Gateway
Azure API Management

Egy mikroszolgáltatás-architektúrában az ügyfél több előtérbeli szolgáltatással is kommunikálhat. Ebből a tényből adódóan hogyan tudja egy ügyfél, hogy milyen végpontokat kell meghívni? Mi történik az új szolgáltatások bevezetésekor, vagy a meglévő szolgáltatások újrabontásakor? Hogyan kezelik a szolgáltatások az SSL-lezárásokat, a hitelesítést és más problémákat? Az API-átjárók segíthetnek ezeknek a kihívásoknak a megoldásában.

Diagram of an API gateway

Töltse le az architektúra Visio-fájlját.

Mi az az API-átjáró?

Az API-átjáró az ügyfelek és a szolgáltatások között helyezkedik el. Fordított proxyként működik, az ügyfelektől a szolgáltatások felé irányuló kérések átirányítása. Emellett különböző horizontális feladatokat is elvégezhet, például hitelesítést, SSL-lezárást és sebességkorlátozást. Ha nem helyez üzembe átjárót, az ügyfeleknek közvetlenül az előtérbeli szolgáltatásoknak kell küldenie a kéréseket. Vannak azonban problémák a szolgáltatások ügyfeleknek való közvetlen kiszolgáltatásával kapcsolatban:

  • Ez összetett ügyfélkódot eredményezhet. Az ügyfélnek több végpontot kell nyomon követnie, és rugalmasan kell kezelnie a hibákat.
  • Kapcsolatot hoz létre az ügyfél és a háttérrendszer között. Az ügyfélnek tudnia kell, hogyan bontja le az egyes szolgáltatásokat. Ez megnehezíti az ügyfél karbantartását és a szolgáltatások újrabontását.
  • Egyetlen művelethez több szolgáltatás hívása is szükséges lehet. Ez az ügyfél és a kiszolgáló közötti több hálózati utazást eredményezhet, ami jelentős késést eredményez.
  • Minden nyilvános szolgáltatásnak kezelnie kell az olyan problémákat, mint a hitelesítés, az SSL és az ügyfélsebesség-korlátozás.
  • A szolgáltatásoknak olyan ügyfélbarát protokollt kell elérhetővé tennie, mint a HTTP vagy a WebSocket. Ez korlátozza a kommunikációs protokollok kiválasztását.
  • A nyilvános végpontokkal rendelkező szolgáltatások potenciális támadási felületet jelentenek, és meg kell edzeni.

Az átjárók az ügyfelek szolgáltatásoktól való leválasztásával segítenek a problémák megoldásában. Az átjárók számos különböző funkciót képesek végrehajtani, és előfordulhat, hogy nem mindegyikre van szükség. A függvények a következő tervezési mintákba csoportosíthatók:

Átjáró-útválasztás. Az átjáróval fordított proxyként irányíthatja a kéréseket egy vagy több háttérszolgáltatáshoz a 7. rétegbeli útválasztás használatával. Az átjáró egyetlen végpontot biztosít az ügyfelek számára, és segít leválasztani az ügyfeleket a szolgáltatásokról.

Átjáró-összesítés. Az átjáróval több egyedi kérést összesíthet egyetlen kérelemben. Ez a minta akkor érvényes, ha egyetlen művelethez több háttérszolgáltatás hívására van szükség. Az ügyfél egyetlen kérést küld az átjárónak. Az átjáró elküldi a kéréseket a különböző háttérszolgáltatásoknak, majd összesíti az eredményeket, és visszaküldi őket az ügyfélnek. Ez segít csökkenteni az ügyfél és a háttérrendszer közötti csevegést.

Átjáró kiszervezése. Az átjáróval ki lehet kapcsolni a funkciókat az egyes szolgáltatásokból az átjáróra, különösen a horizontális szempontokat. Hasznos lehet ezeket a függvényeket egy helyre összesíteni, ahelyett, hogy minden szolgáltatást felelőssé kellene tenni a megvalósításukért. Ez különösen igaz azokra a funkciókra, amelyek speciális készségeket igényelnek a helyes implementáláshoz, például a hitelesítéshez és az engedélyezéshez.

Íme néhány példa olyan funkciókra, amelyeket ki lehet tölteni egy átjáróba:

  • SSL leállítása
  • Authentication
  • IP-engedélyezési lista vagy tiltólista
  • Ügyfélsebesség-korlátozás (szabályozás)
  • Naplózás és figyelés
  • Válasz gyorsítótárazása
  • Web application firewall (Webalkalmazási tűzfal)
  • GZIP-tömörítés
  • Statikus tartalom karbantartása

Átjárótechnológia kiválasztása

Íme néhány lehetőség az API-átjáró alkalmazásbeli implementálására.

  • Fordított proxykiszolgáló. Az Nginx és a HAProxy népszerű fordított proxykiszolgálók, amelyek olyan funkciókat támogatnak, mint a terheléselosztás, az SSL és a 7. rétegbeli útválasztás. Mindkettő ingyenes, nyílt forráskódú termék, fizetős kiadásokkal, amelyek további funkciókat és támogatási lehetőségeket biztosítanak. Az Nginx és a HAProxy egyaránt kiforrott termék, gazdag funkciókészletekkel és nagy teljesítménnyel. Kiterjesztheti őket külső modulokkal, vagy egyéni szkriptek írásával a Lua-ban. Az Nginx támogatja az NGINX JavaScript néven ismert JavaScript-alapú szkriptelési modult is. Ezt a modult hivatalosan nginScriptnek nevezték el.

  • Service Mesh bejövőforgalom-vezérlő. Ha olyan szolgáltatáshálót használ, mint a Linkerd vagy az Istio, vegye figyelembe az adott szolgáltatásháló bejövőforgalom-vezérlője által biztosított funkciókat. Az Istio bejövőforgalom-vezérlő például támogatja a 7. rétegbeli útválasztást, a HTTP-átirányításokat, az újrapróbálkozásokat és más funkciókat.

  • Azure-alkalmazás átjáró. Az Application Gateway egy felügyelt terheléselosztási szolgáltatás, amely képes 7. rétegbeli útválasztást és SSL-leállítást végezni. Emellett webalkalmazási tűzfalat (WAF) is biztosít.

  • Az Azure Front Door a Microsoft modern felhőalapú Tartalomkézbesítési hálózata (CDN), amely gyors, megbízható és biztonságos hozzáférést biztosít a felhasználók és az alkalmazások statikus és dinamikus webes tartalmai között világszerte. Az Azure Front Door a Microsoft globális peremhálózatán keresztül biztosítja a tartalmakat több száz globális és helyi jelenléti ponttal (PoP-kkal) a világ minden táján, közel a vállalati és a fogyasztói végfelhasználókhoz.

  • Azure API Management. Az API Management kulcsrakész megoldás az API-k külső és belső ügyfelek számára történő közzétételéhez. Olyan funkciókat biztosít, amelyek hasznosak a nyilvános API-k kezeléséhez, beleértve a sebességkorlátozást, az IP-korlátozásokat és a Microsoft Entra ID vagy más identitásszolgáltatók használatával történő hitelesítést. Az API Management nem végez terheléselosztást, ezért olyan terheléselosztóval együtt kell használni, mint az Application Gateway vagy a fordított proxy. Az API Management és az Application Gateway használatával kapcsolatos információkért lásd : API Management integrálása belső virtuális hálózaton az Application Gatewayrel.

Átjárótechnológia kiválasztásakor vegye figyelembe a következőket:

Funkciók. A fent felsorolt lehetőségek támogatják a 7. rétegbeli útválasztást, de más funkciók támogatása eltérő lesz. A szükséges funkcióktól függően több átjárót is üzembe helyezhet.

Üzembe helyezés. Azure-alkalmazás Gateway és API Management felügyelt szolgáltatások. Az Nginx és a HAProxy általában a fürtön belüli tárolókban fut, de a fürtön kívüli dedikált virtuális gépeken is üzembe helyezhető. Ez elkülöníti az átjárót a számítási feladat többi részétől, de magasabb felügyeleti többletterheléssel jár.

Felügyelet. A szolgáltatások frissítésekor vagy új szolgáltatások hozzáadásakor előfordulhat, hogy az átjáró útválasztási szabályait frissíteni kell. Fontolja meg a folyamat kezelését. Hasonló szempontok vonatkoznak az SSL-tanúsítványok, AZ IP-engedélyezési listák és a konfiguráció egyéb szempontjainak kezelésére is.

Nginx vagy HAProxy üzembe helyezése a Kubernetesben

Az Nginx vagy a HAProxy üzembe helyezhető a Kubernetesben replikakészletként vagy DaemonSetként, amely megadja az Nginx- vagy HAProxy-tárolórendszerképet. A ConfigMap használatával tárolja a proxy konfigurációs fájlját, és kötetként csatlakoztassa a ConfigMap-ot. Hozzon létre egy LoadBalancer típusú szolgáltatást, amely az átjárót egy Azure Load Balanceren keresztül teszi elérhetővé.

Másik lehetőségként hozzon létre egy bejövőforgalom-vezérlőt. A bejövőforgalom-vezérlő egy Kubernetes-erőforrás, amely terheléselosztót vagy fordított proxykiszolgálót helyez üzembe. Számos implementáció létezik, köztük az Nginx és a HAProxy. Egy külön, bejövő forgalomnak nevezett erőforrás határozza meg a bejövőforgalom-vezérlő beállításait, például az útválasztási szabályokat és a TLS-tanúsítványokat. Így nem kell olyan összetett konfigurációs fájlokat kezelnie, amelyek egy adott proxykiszolgáló-technológiára vonatkoznak.

Az átjáró egy lehetséges szűk keresztmetszet vagy egy meghibásodási pont a rendszerben, ezért mindig telepítsen legalább két replikát a magas rendelkezésre állás érdekében. Előfordulhat, hogy a terheléstől függően tovább kell skáláznia a replikákat.

Érdemes lehet az átjárót egy dedikált csomópontkészleten futtatni a fürtben. Ennek a megközelítésnek az előnyei a következők:

  • Elkülönítés. Minden bejövő forgalom rögzített csomópontkészletre kerül, amely elkülöníthető a háttérszolgáltatásoktól.

  • Stabil konfiguráció. Ha az átjáró helytelenül van konfigurálva, előfordulhat, hogy a teljes alkalmazás elérhetetlenné válik.

  • Teljesítmény. Teljesítménybeli okokból érdemes lehet egy adott virtuálisgép-konfigurációt használni az átjáróhoz.

Következő lépések

Az előző cikkek megvizsgálták a mikroszolgáltatások, illetve a mikroszolgáltatások és az ügyfélalkalmazások közötti interfészeket. Ezek a felületek a tervezés során átlátszatlan dobozként kezelik az egyes szolgáltatásokat. A mikroszolgáltatásoknak soha nem szabad felfedniük az adatok kezelésével kapcsolatos megvalósítási részleteket. Ez hatással van az adatintegritásra és az adatkonzisztenciára, amelyet a következő cikkben ismerhet meg.