Použití služby Azure API Management ve víceklientských řešeních
Azure API Management je komplexní brána rozhraní API a reverzní proxy server pro rozhraní API. Poskytuje mnoho funkcí, včetně ukládání do mezipaměti, napodobování odpovědí a portálu pro vývojáře, které jsou užitečné pro aplikace zaměřené na rozhraní API. Tento článek shrnuje některé klíčové funkce služby API Management, které jsou užitečné pro víceklientské řešení.
Poznámka:
Tento článek se zaměřuje na to, jak můžete používat službu API Management, když máte vlastní víceklientské aplikace, které hostují rozhraní API pro interní nebo externí použití.
Další formou víceklientské architektury je poskytnout bránu služby API Management jiným týmům. Organizace může mít například sdílenou instanci služby API Management, do které se nasadí a použije několik aplikačních týmů. Tento článek se nezabírá touto formou víceklientské architektury. Zvažte použití pracovních prostorů, které vám pomůžou sdílet instanci služby API Management napříč několika týmy, které můžou mít různé úrovně přístupu.
Modely izolace
SLUŽBA API Management se obvykle nasazuje jako sdílená komponenta s jednou instancí, která obsluhuje požadavky pro více tenantů. Na základě modelu tenantů ale existuje mnoho způsobů, jak můžete službu API Management nasadit. Tento článek předpokládá, že řešení nasadíte pomocí razítek nasazení.
Způsob použití služby API Management je obvykle podobný bez ohledu na model izolace. Tato část se zaměřuje na rozdíly v nákladech a složitosti mezi modely izolace a o tom, jak jednotlivé přístupy směrují požadavky na aplikace back-endového rozhraní API.
Situace | Sdílená instance s back-endy s jedním tenantem | Sdílená instance se sdíleným back-endem s více tenanty | Instance pro každého tenanta |
---|---|---|---|
Počet podporovaných tenantů | Mnoho | Téměř nevázané | Jedna pro každou instanci |
Náklady | Lower | Lower | Vyšší |
Složitost nasazení | Nízká: Jedna instance pro správu jednotlivých kolek | Nízká: Jedna instance pro správu jednotlivých kolek | Vysoká: Správa více instancí |
Složitost konfigurace směrování | Vyšší | Lower | Lower |
Citlivost na problémy s hlučným sousedem | Ano | Ano | No |
Izolace sítě na úrovni tenanta | No | No | Ano |
Ukázkový scénář | Názvy vlastních domén pro každého tenanta | Velké víceklientové řešení se sdílenou aplikační vrstvou | Razítka nasazení specifická pro tenanta |
Modely izolace sdílených instancí
Je běžné sdílet instanci služby API Management mezi několika tenanty, což pomáhá snížit náklady a složitost nasazení a správy. Podrobnosti o tom, jak můžete sdílet instanci služby API Management, závisí na tom, jak přiřadíte tenanty k back-endovým aplikacím API.
Back-endová aplikace s jedním tenantem
Pokud pro každého tenanta nasadíte jedinečné back-endové aplikace, můžete pro každý požadavek nasadit jednu instanci služby API Management a směrovat provoz do správného back-endu tenanta. Tento přístup vyžaduje, abyste službu API Management nakonfigurovali pomocí back-endových názvů hostitelů pro každého tenanta nebo aby měli jiný způsob, jak namapovat příchozí požadavek na správný back-end tenanta.
Vzhledem k tomu, že vyžaduje další vyhledávání, nemusí se tento přístup škálovat na velký počet tenantů, kteří sdílejí jednu instanci služby API Management. Při vyhledávání back-endu tenanta může dojít také k určitým režijním nákladům na výkon. Velikost této režie na výkon ale závisí na způsobu návrhu takového vyhledávání.
Sdílená back-endová aplikace s více tenanty
Ve scénářích, ve kterých tenanti sdílejí společnou back-endovou aplikaci, je proces směrování služby API Management zjednodušený, protože všechny požadavky můžete směrovat do jednoho back-endu. Pokud používáte domény se zástupnými znaménami nebo doménami vystavenými poskytovatelem, můžete tímto přístupem dosáhnout téměř nevázaného škálování. Vzhledem k tomu, že požadavky není potřeba mapovat na back-end tenanta, nemá žádný vliv na výkon z přizpůsobených rozhodnutí o směrování.
Instance pro každého tenanta
V některých situacích můžete pro každého tenanta nasadit instanci služby API Management. Tento přístup doporučujeme jenom v případě, že máte malý počet tenantů nebo pokud máte přísné požadavky na dodržování předpisů, které omezují sdílení jakékoli infrastruktury mezi tenanty. Pokud například pro každého tenanta nasadíte vyhrazenou virtuální síť, budete pravděpodobně také muset pro každého tenanta nasadit vyhrazenou instanci služby API Management.
Tip
Pokud je jediným důvodem nasazení více instancí podpora uživatelů v různých geografických oblastech, můžete zvážit, jestli funkce nasazení ve službě API Management s více oblastmi splňuje vaše požadavky.
Když nasadíte instanci služby API Management, musíte zvážit omezení služeb, včetně všech omezení, která se můžou vztahovat na počet instancí služby API Management v rámci předplatného nebo oblasti Azure.
Instance s jedním tenantem mají obvykle minimální konfiguraci směrování, protože všechny požadavky můžete směrovat do jednoho back-endu. Tento scénář nevyžaduje vlastní rozhodnutí o směrování, takže neexistuje žádný další dopad na výkon. Obvykle se ale účtují vyšší náklady na prostředky, než když nasadíte sdílenou instanci. Pokud potřebujete nasadit instance s jedním tenantem, zvažte, jestli brány v místním prostředí umožňují opakovaně používat výpočetní prostředky specifické pro tenanty , které už nasazujete.
Funkce služby API Management, které podporují víceklientské prostředí
Služba API Management využívá zásady k zajištění flexibility. Způsob ověřování, směrování a zpracování požadavků při použití zásad můžete přizpůsobit. A když navrhujete víceklientské řešení pomocí služby API Management, použijete zásady k implementaci mnoha jeho funkcí.
Identifikace tenantů při příchozích požadavcích
Zvažte, jak můžete identifikovat příslušného tenanta v rámci jednotlivých příchozích požadavků. Ve víceklientských řešeních je důležité jasně pochopit, kdo každý požadavek provádí, abyste vrátili data pro konkrétního tenanta a nikoho jiného.
Api Management poskytuje předplatná , která můžete použít k ověřování požadavků. Tato předplatná používají jedinečný klíč předplatného, který pomáhá identifikovat odběratele, který žádost provádí. Pokud se rozhodnete používat předplatná, zvažte, jak můžete namapovat předplatná služby API Management na vlastní identifikátory tenanta nebo zákazníka. Předplatná jsou úzce integrovaná na portálu pro vývojáře. U většiny řešení je vhodné používat předplatná k identifikaci tenantů.
Případně můžete tenanta identifikovat pomocí jiných metod. Tady je několik příkladů přístupů, které se spouštějí v rámci vlastních zásad, které definujete:
Použijte vlastní komponentu adresy URL, například subdoménu, cestu nebo řetězec dotazu. Například v adrese URL
https://api.contoso.com/tenant1/products
můžete extrahovat první část cestytenant1
a považovat ji za identifikátor tenanta. Podobně, vzhledem k příchozí adrese URLhttps://tenant1.contoso.com/products
, můžete extrahovat subdoménu,tenant1
. Pokud chcete tento přístup použít, zvažte analýzu cesty nebo řetězce dotazu zContext.Request.Url
vlastnosti.Použijte hlavičku požadavku. Klientské aplikace můžou například do požadavků přidat vlastní
TenantID
hlavičku. Pokud chcete tento přístup použít, zvažte čtení zContext.Request.Headers
kolekce.Extrahujte deklarace identity z webového tokenu JSON (JWT). Můžete mít například vlastní
tenantId
deklaraci identity v JWT vydané vaším zprostředkovatelem identity. Pokud chcete tento přístup použít, použijte zásadu validate-jwt a nastavteoutput-token-variable-name
vlastnost tak, aby definice zásady mohl číst hodnoty z tokenu.Dynamické vyhledávání identifikátorů tenanta Během zpracování požadavku můžete komunikovat s externí databází nebo službou. Pomocí tohoto přístupu můžete vytvořit vlastní logiku mapování tenanta pro mapování logického identifikátoru tenanta na konkrétní adresu URL nebo získat další informace o tenantovi. Pokud chcete tento přístup použít, použijte zásadu pro odeslání požadavku .
Tento přístup pravděpodobně zvýší latenci vašich požadavků. Pokud chcete tento účinek zmírnit, je vhodné použít ukládání do mezipaměti, abyste snížili počet volání do externího rozhraní API. K implementaci přístupu k ukládání do mezipaměti můžete použít zásady ukládání do mezipaměti a vyhledávací hodnoty mezipaměti. Nezapomeňte zrušit platnost mezipaměti s každým přidaným, odebraným nebo přesunutým tenantem, který má vliv na back-endové vyhledávání.
Pojmenované hodnoty
API Management podporuje pojmenované hodnoty, což jsou vlastní nastavení konfigurace, která můžete použít v rámci zásad. Můžete například použít pojmenovanou hodnotu k uložení back-endové adresy URL tenanta a potom tuto stejnou hodnotu znovu použít na několika místech v rámci zásad. Pokud potřebujete aktualizovat adresu URL, můžete ji aktualizovat na jednom místě.
Upozorňující
Ve víceklientském řešení je důležité při nastavování názvů pojmenovaných hodnot dávat pozor. Pokud se nastavení mezi tenanty liší, nezapomeňte do názvu zahrnout identifikátor tenanta. Můžete například použít vzor tenantId-key:value
jako po potvrzení, že tenantId
je vhodný pro požadavek.
Při zpracování žádosti o jiného tenanta zahrňte identifikátor, abyste snížili pravděpodobnost náhodného odkazování na hodnotu jiného tenanta nebo s nimi manipulovali.
Ověřování příchozích požadavků
Požadavky rozhraní API provedené v bráně služby API Management je obvykle potřeba ověřit. API Management poskytuje několik metod ověřování příchozích požadavků na bránu, včetně OAuth 2.0 a klientských certifikátů. Zvažte typy přihlašovacích údajů, které byste měli podporovat a kde se mají ověřit. Zvažte například, jestli se má ověřování provést ve službě API Management, v back-endových aplikacích nebo na obou místech.
Další informace najdete v tématu Ověřování a autorizace pro rozhraní API ve službě Azure API Management.
Poznámka:
Pokud používáte klíč předplatného nebo klíč rozhraní API, je vhodné také použít jinou metodu ověřování.
Samotný klíč předplatného není silnou formou ověřování, ale je užitečný pro jiné scénáře, jako je sledování využití rozhraní API jednotlivých tenantů.
Směrování na back-endy specifické pro tenanty
Pokud jako sdílenou komponentu používáte api Management, možná budete muset směrovat příchozí požadavky rozhraní API na různé back-endy specifické pro tenanty. Tyto back-endy můžou být v různých razítkech nasazení nebo můžou být různé aplikace v rámci jednoho razítka. Pokud chcete upravit směrování v definici zásady, použijte zásadu set-back-end-service . Musíte zadat novou základní adresu URL, na kterou by se měl požadavek přesměrovat.
Ukládání odpovědí do mezipaměti nebo jiných dat
API Management má výkonnou funkci mezipaměti, kterou můžete použít k ukládání celých odpovědí HTTP nebo jiných dat do mezipaměti. Mezipaměť můžete například použít pro mapování tenantů, pokud používáte vlastní logiku nebo hledáte mapování z externí služby.
K implementaci přístupu k ukládání do mezipaměti použijte zásady ukládání do mezipaměti a vyhledávací hodnoty mezipaměti.
Upozorňující
U víceklientských řešení je důležité při nastavování klíčů mezipaměti dávat pozor. Pokud se data uložená v mezipaměti můžou mezi tenanty lišit, ujistěte se, že do klíče mezipaměti zahrnete identifikátor tenanta.
Při zpracování žádosti o jiného tenanta zahrňte identifikátor, který snižuje pravděpodobnost náhodného odkazování na manipulaci s hodnotou jiného tenanta.
Vlastní domény
Pomocí služby API Management můžete nakonfigurovat vlastní domény pro bránu rozhraní API a portál pro vývojáře. V některých úrovních můžete nakonfigurovat zástupné domény nebo více plně kvalifikovaných názvů domén (FQDN).
Službu API Management můžete také používat společně se službou, jako je Azure Front Door. V tomto druhu konfigurace služba Azure Front Door často zpracovává vlastní domény a certifikáty TLS (Transport Layer Security) a komunikuje se službou API Management pomocí jednoho názvu domény. Pokud původní adresa URL klienta obsahuje informace o tenantovi, které potřebujete odeslat do instance služby API Management pro pozdější zpracování, zvažte použití hlavičky X-Forwarded-Host
požadavku nebo použití pravidel služby Azure Front Door k předání informací jako hlavičky HTTP.
Omezení přenosové rychlosti
U víceklientských řešení je běžné použít kvóty nebo omezení četnosti. Omezení rychlosti vám můžou pomoct zmírnit problém hlučného souseda. Omezení četnosti můžete použít také k vynucení kvality služby a k rozlišení různých cenových úrovní.
Pomocí služby API Management vynucujte limity rychlosti specifické pro tenanta. Pokud používáte předplatná specifická pro tenanta, zvažte použití zásad kvóty k vynucení kvóty pro každé předplatné. Případně zvažte použití zásad kvóty podle klíče k vynucení kvót pomocí jakéhokoli jiného klíče omezení rychlosti, například identifikátor tenanta, který jste získali z adresy URL požadavku nebo JWT.
Finanční zhodnocení
Dokumentace ke službě API Management poskytuje rozsáhlé pokyny ke zpeněžení rozhraní API, včetně ukázkové implementace. Přístupy zpeněžení kombinují mnoho funkcí služby API Management, aby vývojáři mohli publikovat rozhraní API, spravovat předplatná a účtovat poplatky na základě různých modelů využití.
Správa kapacity
Instance služby API Management podporuje určitou kapacitu, která představuje prostředky dostupné ke zpracování vašich požadavků. Když do instance použijete složité zásady nebo nasadíte více rozhraní API, spotřebujete větší kapacitu. Kapacitu instance můžete spravovat několika způsoby, například nákupem dalších jednotek. Kapacitu instance můžete také dynamicky škálovat.
Některé instance s více tenanty můžou spotřebovávat větší kapacitu než instance s jedním tenantem, například pokud pro směrování požadavků na různé back-endy tenanta používáte mnoho zásad. Pečlivě zvažte plánování kapacity a pokud zjistíte zvýšení využití, naplánujte škálování kapacity vaší instance. Měli byste také otestovat výkon vašeho řešení, abyste předem porozuměli potřebám vaší kapacity.
Další informace o škálování služby API Management najdete v tématu Upgrade a škálování instance služby Azure API Management.
Nasazení ve více oblastech
Služba API Management podporuje nasazení ve více oblastech, což znamená, že můžete nasadit jeden logický prostředek služby API Management napříč několika oblastmi Azure, aniž byste museli replikovat konfiguraci do samostatných prostředků. Tato funkce je obzvláště užitečná, když distribuujete nebo replikujete řešení globálně. Můžete efektivně nasadit řadu instancí služby API Management napříč několika oblastmi, což umožňuje zpracování požadavků s nízkou latencí a spravovat je jako jednu logickou instanci.
Pokud ale potřebujete plně izolované instance služby API Management, můžete se také rozhodnout nasadit nezávislé prostředky služby API Management do různých oblastí. Tento přístup odděluje rovinu správy pro každou instanci služby API Management.
Přispěvatelé
Tento článek spravuje Microsoft. Původně byla napsána následujícími přispěvateli.
Hlavní autoři:
- John Downs | Hlavní softwarový inženýr
- Daniel Scott-Raynsford | Partner Technology Strategist, globální partnerová řešení
Další přispěvatel:
- Vladimirskij Vladimirskij | Hlavní zákaznický inženýr
Pokud chcete zobrazit neveřejné profily LinkedIn, přihlaste se na LinkedIn.
Další kroky
Projděte si přístupy k architektuře integrace ve víceklientských řešeních.