Představujeme InterSystems API Manager (+ webinář)

Nedávno jsme vydali InterSystems API Manager (IAM), novou součást datové platformy InterSystems IRIS, která poskytuje viditelnost, řízení a správu provozu webového rozhraní API v rámci IT infrastruktury.

V tomto článku vám ukážu, jak nastavit IAM, a předvedu některé z mnoha možností, které máte s IAM k dispozici. InterSystems API Manager vám umožňuje:

  • Sledujte rozhraní API, zjistěte, kdo rozhraní API používá, která rozhraní API jsou nejoblíbenější a která vyžadují vylepšení.
  • Kontrolujte, kdo používá rozhraní API, a omezte používání rozhraní API od jednoduchých omezení přístupu až po omezení založená na požadavcích – máte vlastní kontrolu a můžete rychle reagovat na měnící se vzorce spotřeby rozhraní API.
  • Zabezpečte rozhraní API pomocí centralizovaných bezpečnostních mechanismů, jako je OAuth2.0, LDAP nebo autentizace pomocí klíče.
  • Usnadněte to vývojářům třetích stran a poskytněte jim vynikající rozhraní API otevřením specializovaného portálu pro vývojáře.
  • Škálujte rozhraní API a zajistěte minimální latenci odezvy.

Správa API je nezbytná pro přechod na architekturu SOA nebo mikroslužeb, zjednodušuje integraci mezi jednotlivými (mikro)službami a zpřístupňuje je všem externím i interním spotřebitelům. V důsledku toho se nová rozhraní API snadněji vytvářejí, udržují a používají.

Pokud již používáte InterSystems IRIS, můžete do své licence přidat možnost IAM. Možnost IAM je pro zákazníky InterSystems IRIS zdarma, ale abyste mohli začít používat IAM, musíte si od společnosti InterSystems vyžádat nový licenční klíč.

Pokud ještě nepoužíváte InterSystems IRIS a plánujete vyzkoušet InterSystems API Manager, kontaktujte prosím InterSystems.

Začínáme a instalace

Zákazníci InterSystems si mohou distribuci IAM stáhnout z webových stránek WRC sekci „Distribuce softwaru“ a spusťte jej jako kontejner Docker. Minimální systémové požadavky:

Nejprve si musíte stáhnout obrázek Dockeru (Důležité! Archiv s WRC není obrázek Dockeru, musíte ho rozbalit, uvnitř je obrázek Dockeru):

docker load -i iam_image.tar

Tento příkaz zpřístupní obraz IAM pro pozdější použití na vašem serveru. IAM běží jako samostatný kontejner, takže jej můžete škálovat nezávisle na InterSystems IRIS. Spuštění IAM vyžaduje přístup k InterSystems IRIS ke stažení licence.

Nastavte InterSystems IRIS:

  • Povolte webovou aplikaci /api/IAM
  • Povolit uživatele IAM
  • Změňte uživatelské heslo IAM

Nyní spustíme kontejner IAM. V archivu najdete skripty iam-setup pro Windows a Unix (a Mac). Tyto skripty vám pomohou správně nastavit proměnné prostředí a umožní kontejneru IAM navázat spojení s InterSystems IRIS. Zde je příklad skriptu spuštěného na Macu:

source ./iam-setup.sh 
Welcome to the InterSystems IRIS and InterSystems API Manager (IAM) setup script.
This script sets the ISC_IRIS_URL environment variable that is used by the IAM container to get the IAM license key from InterSystems IRIS.
Enter the full image repository, name and tag for your IAM docker image: intersystems/iam:0.34-1-1
Enter the IP address for your InterSystems IRIS instance. The IP address has to be accessible from within the IAM container, therefore, do not use "localhost" or "127.0.0.1" if IRIS is running on your local machine. Instead use the public IP address of your local machine. If IRIS is running in a container, use the public IP address of the host environment, not the IP address of the IRIS container. xxx.xxx.xxx.xxx               
Enter the web server port for your InterSystems IRIS instance: 52773
Enter the password for the IAM user for your InterSystems IRIS instance: 
Re-enter your password: 
Your inputs are:
Full image repository, name and tag for your IAM docker image: intersystems/iam:0.34-1-1
IP address for your InterSystems IRIS instance: xxx.xxx.xxx.xxx
Web server port for your InterSystems IRIS instance: 52773
Would you like to continue with these inputs (y/n)? y
Getting IAM license using your inputs...
Successfully got IAM license!
The ISC_IRIS_URL environment variable was set to: http://IAM:****************@xxx.xxx.xxx.xxx:52773/api/iam/license
WARNING: The environment variable is set for this shell only!
To start the services, run the following command in the top level directory: docker-compose up -d
To stop the services, run the following command in the top level directory: docker-compose down
URL for the IAM Manager portal: http://localhost:8002

Jak můžete vidět, úplný název obrázku, IP adresa, port InterSystems IRIS a heslo pro uživatele IAM jsou vše, co potřebujete, abyste mohli začít.

Místo spouštění skriptu můžete nastavit proměnné prostředí ručně:

ISC_IAM_IMAGE=intersystems/iam:0.34-1-1
ISC_IRIS_URL=http://IAM:<PASS>@<IP>:<PORT>/api/iam/license

Spusťte

Nyní spustíme IAM spuštěním příkazu:

docker-compose up -d

Tento příkaz organizuje kontejnery IAM a zajišťuje, že vše běží správně. Stav kontejnerů se kontroluje pomocí příkazu:

docker ps

Otevřete administrátorské rozhraní ve svém prohlížeči localhost:8002.

Představujeme InterSystems API Manager (+ webinář)

Zatím je prázdný, protože je to úplně nový uzel. Pojďme to změnit. IAM podporuje koncept pracovních prostorů pro rozdělení API do modulů a/nebo příkazů. Přejděte na "výchozí" pracovní plochu, kterou budeme používat pro naše experimenty.

Představujeme InterSystems API Manager (+ webinář)

Počet požadavků na tento pracovní prostor je stále nulový, ale představu o základních konceptech IAM získáte v nabídce vlevo. První dva prvky: Služby a trasy jsou nejdůležitější:

  • Služba je API, ke kterému chceme spotřebitelům poskytovat přístup. REST API v InterSystems IRIS je tedy službou, stejně jako například Google API, pokud jej chcete používat.
  • Trasa rozhoduje, na kterou službu mají být příchozí požadavky předány. Každá trasa má specifickou sadu podmínek, a pokud jsou splněny, je žádost odeslána příslušné Službě. Trasa může například odpovídat IP, doméně odesílatele, metodám HTTP, částem URI nebo kombinaci těchto příkladů.

Služba

Vytvořme InterSystems IRIS Service s následujícími hodnotami:

Pole
Hodnota
popis

název
kosatec
Název služby

hostitel
IP
Hostitel nebo IP serveru InterSystems IRIS

přístav
52773
Webový port serveru InterSystems IRIS

cesta
/api/atelier
Kořenová cesta

protokol
http
Protokol

Zbývající hodnoty ponechte jako výchozí. Klepněte na tlačítko Create a zapište si ID vytvořené služby.

Trasa

Nyní vytvoříme trasu:

Pole
Hodnota
popis

cesta
/api/atelier
Kořenová cesta

protokol
http
Protokol

service.id
průvodce od 3
Služba (ID z předchozího kroku)

Zbývající hodnoty ponechte jako výchozí. Klepněte na tlačítko Create a zapište si ID vytvořené trasy. Ve výchozím nastavení IAM naslouchá příchozím požadavkům na portu 8000. Nyní jsou požadavky odeslány na http://localhost:8000 a počínaje /api/atelier jsou přesměrovány na InterSystems IRIS.

Testování

Zkusme vytvořit požadavek v klientovi REST (používám Listonoš).

Představujeme InterSystems API Manager (+ webinář)

Odešleme žádost GET na http://localhost:8000/api/atelier/ (nezapomeň / na konci) a obdržíte odpověď od InterSystems IRIS. Každý požadavek prochází IAM, který shromažďuje metriky:

  • Stavový kód HTTP.
  • Zpoždění.
  • Monitorování (je-li nakonfigurováno).

Udělal jsem několik dalších požadavků (včetně dvou požadavků na neexistující koncové body, jako je /api/atelier/est/), výsledky jsou okamžitě viditelné na řídicím panelu:

Představujeme InterSystems API Manager (+ webinář)

Práce s pluginy

Nyní, když máme nakonfigurovanou trasu, můžeme spravovat naše API. Můžeme přidat funkce, které naši službu doplní.

Nejběžnějším způsobem, jak změnit chování API, je přidat plugin. Pluginy izolují jednotlivé funkce a mohou být připojeny k IAM buď globálně, nebo pouze k jednotlivým entitám, jako je uživatel (skupina uživatelů), služba nebo trasa. Začneme přidáním pluginu Rate Limiting do Route. K navázání spojení mezi pluginem a trasou potřebujeme jedinečný identifikátor (ID) trasy.

Omezení počtu žádostí

Klikněte na Pluginy v nabídce na levém postranním panelu. Na této obrazovce můžete vidět všechny aktivní pluginy, ale protože je tento IAM server nový, nejsou zde ještě žádné aktivní pluginy. Pokračujte tedy k dalšímu kroku kliknutím na „Nový plugin“.

Plugin, který potřebujeme, je v kategorii „Traffic Control“ a nazývá se „Rate Limiting“. Vyberte to. Zde můžete nastavit poměrně málo nastavení, ale nás zajímají pouze dvě pole:

Pole
Hodnota
popis

route_id
ID
ID trasy

config.minute
5
Počet požadavků za minutu

To je vše. Plugin je nakonfigurován a aktivní. Všimněte si, že můžeme zvolit různé časové intervaly, například minutu, hodinu nebo den. Nastavení lze kombinovat (např. 1000 požadavků za hodinu a zároveň 100 požadavků za minutu). Vybral jsem minuty, protože to usnadňuje kontrolu funkčnosti pluginu.

Pokud stejnou žádost odešlete znovu v Postman, uvidíte, že odpověď je vrácena se 2 dalšími záhlavími:

  • XRateLimit-Limit-minute: 5
  • XRateLimit-Remaining-minute: 4

To klientovi sděluje, že může provést až 5 požadavků za minutu a může provést 4 další požadavky v aktuálním časovém úseku.

Představujeme InterSystems API Manager (+ webinář)

Pokud budete opakovat stejný požadavek, nakonec vám dojde dostupná kvóta a místo toho obdržíte stavový kód HTTP 429 s následujícím tělem odpovědi:

Představujeme InterSystems API Manager (+ webinář)

Počkejte chvíli a budete moci znovu odesílat žádosti.

Jedná se o pohodlný mechanismus, který vám umožňuje:

  • Chraňte backend před přepětím.
  • Řekněte klientům, kolik požadavků mohou vznést.
  • Monetizujte API.

Můžete nastavit hodnoty pro různé časové intervaly a tím vyhladit provoz API po určitou dobu. Řekněme, že povolíte 600 požadavků za hodinu na konkrétní trase. V průměru je 10 požadavků za minutu. Klientovi ale nic nebrání splnit všech 600 požadavků v první minutě hodiny. Možná je to to, co potřebujete. Možná budete chtít dosáhnout rovnoměrnějšího zatížení v průběhu hodiny. Nastavením hodnoty pole config.minute Hodnota 20 zajišťuje, že vaši uživatelé neprovedou více než 20 požadavků za minutu a 600 požadavků za hodinu. To umožňuje malé skoky v jednominutovém intervalu ve srovnání s plně zprůměrovaným tokem 10 požadavků za minutu, ale uživatelé nemohou hodinovou kvótu využít po dobu jedné minuty. Nyní budou potřebovat alespoň 30 minut na využití všech svých požadavků. Klienti obdrží další hlavičky pro každý zadaný časový interval, například:

HTTP hlavička
Hodnota

X-RateLimit-Limit-hour
600

X-RateLimit-Remaining-hour
595

X-RateLimit-Limit-minute
20

X-RateLimit-Remaining-minute
16

Samozřejmě existuje mnoho různých způsobů, jak nakonfigurovat limity dotazů v závislosti na tom, čeho chcete dosáhnout.

Závěry

Zde skončím, myslím, že materiálu pro první článek o InterSystems API Manager je dost. Použili jsme pouze jeden z více než 40 pluginů. S IAM můžete dělat mnoho dalších zajímavých věcí:

  • Přidejte centrální mechanismus ověřování pro všechna vaše rozhraní API.
  • Škálujte zatížení pomocí nástroje pro vyrovnávání zatížení napříč více službami.
  • Přidejte nové funkce a opravy chyb testovacímu publiku před úplnou aktualizací.
  • Poskytněte interním a externím vývojářům vyhrazený webový portál dokumentující všechna rozhraní API.
  • Požadavky ukládat do mezipaměti, aby se zkrátila doba odezvy a snížilo zatížení backendu systému.

reference

Webináře

Zveme vás na webinář „API Management with InterSystems API Management“, který se bude konat 21. listopadu v 10:00 moskevského času (GMT+3).
InterSystems API Manager (IAM) je nová součást datové platformy InterSystems IRIS, která poskytuje monitorování, řízení a řízení provozu do/z webových API v rámci IT infrastruktury. Na webináři předvedeme klíčové schopnosti InterSystems API Management:

  • API nástroje pro sledování provozu.
  • Řízení provozu API, včetně řízení šířky pásma, omezení počtu volání API, udržování seznamů povolených a zakázaných seznamů IP adres atd.
  • Nástroje pro konfiguraci zabezpečení API.
  • Vývojářský portál pro publikování interaktivní dokumentace API.
  • Jediný přístupový bod k API.

Webinář je určen pro architekty, vývojáře a systémové administrátory.

Je nutná registrace!

Zdroj: www.habr.com

Přidat komentář