Неодамна го објавивме InterSystems API Manager (IAM), нова компонента на платформата за податоци InterSystems IRIS која обезбедува видливост, контрола и управување со сообраќајот на веб API низ ИТ инфраструктурата.
Во оваа статија, ќе ви покажам како да поставите IAM и ќе покажам некои од многуте способности што ви се достапни со IAM. InterSystems API Manager ви овозможува:
- Следете го API, разберете кој го користи API, кои API се најпопуларни и кои бараат подобрување.
- Контролирајте кој го користи API и ограничете го користењето на API од едноставни ограничувања за пристап до ограничувања базирани на барања - имате приспособена контрола и можете брзо да одговорите на променливите шеми на потрошувачка на API.
- Обезбедете API-а користејќи централизирани безбедносни механизми како што се OAuth2.0, LDAP или автентикација на токени со клучеви.
- Олеснете им на програмерите од трети страни и обезбедете им супериорно API искуство со отворање на посебен портал за програмери.
- Зголемете го API-то и обезбедете минимална латентност на одговорот.
Управувањето со API е од суштинско значење за транзицијата кон SOA или микросервис архитектура, поедноставувајќи ја интеграцијата помеѓу индивидуалните (микро)услуги, правејќи ги достапни за сите надворешни и внатрешни потрошувачи. Како резултат на тоа, новите API стануваат полесни за креирање, одржување и консумирање.
Ако веќе користите InterSystems IRIS, можете да ја додадете опцијата IAM на вашата лиценца. Опцијата IAM е бесплатна за клиентите на InterSystems IRIS, но мора да побарате нов клуч за лиценца од InterSystems за да започнете да го користите IAM.
Ако сè уште не користите InterSystems IRIS и планирате да го пробате InterSystems API Manager, ве молиме контактирајте со InterSystems.
Започнување и инсталација
Клиентите на InterSystems можат да ја преземат дистрибуцијата на IAM од веб-страницата дел „Дистрибуција на софтвер“ и работи како Docker контејнер. Минимални системски барања:
- 17.04.0 +.
- 1.12.0 +.
- InterSystems IRIS 2019.1.1+.
Првично, треба да ја преземете сликата на Docker (Важно! Архивата со WRC не е слика на Docker, треба да ја отпакувате, внатре има слика на Docker):
docker load -i iam_image.tarОваа команда ќе ја направи сликата IAM достапна за подоцнежна употреба на вашиот сервер. IAM работи како посебен контејнер, така што можете да го скалирате независно од InterSystems IRIS. Извршувањето на IAM бара пристап до InterSystems IRIS за преземање лиценца.
Поставете InterSystems IRIS:
- Овозможете ја веб-апликацијата
/api/IAM - Овозможи корисник
IAM - Променете ја корисничката лозинка
IAM
Сега да го започнеме контејнерот IAM. Во архивата ќе најдете скрипти iam-setup за Windows и Unix (и Mac). Овие скрипти ќе ви помогнат правилно да ги поставите променливите на околината, дозволувајќи му на контејнерот IAM да воспостави врска со InterSystems IRIS. Еве пример за скрипта која работи на Mac:
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Како што можете да видите, целото име на сликата, IP адресата, портата InterSystems IRIS и лозинката за корисникот на IAM се сè што ви треба за да започнете.
Наместо да извршувате скрипта, можете рачно да поставите променливи на околината:
ISC_IAM_IMAGE=intersystems/iam:0.34-1-1
ISC_IRIS_URL=http://IAM:<PASS>@<IP>:<PORT>/api/iam/licenseСтартувај
Сега да го стартуваме IAM со извршување на командата:
docker-compose up -dОваа команда ги организира контејнерите на IAM и осигурува дека сè работи правилно. Статусот на контејнерите се проверува со помош на командата:
docker psОтворете го административниот интерфејс во вашиот прелистувач localhost:8002.

Засега е празен бидејќи е сосема нов јазол. Да го смениме тоа. IAM го поддржува концептот на работни простори за поделба на API на модули и/или команди. Одете во „стандардниот“ работен простор што ќе го користиме за нашите експерименти.

Бројот на барања за овој работен простор е сè уште нула, но ќе добиете идеја за основните концепти на IAM во менито лево. Првите два елементи: услугите и рутите се најважни:
- Услугата е API до кој сакаме да обезбедиме пристап до потрошувачите. Така, REST API во InterSystems IRIS е услуга, како што е, на пример, Google API ако сакате да го користите.
- Рутата одлучува до која услуга треба да се препратат дојдовните барања. Секоја рута има специфичен сет на услови и доколку се исполнети, барањето се испраќа до соодветната служба. На пример, рутата може да одговара на IP, домен на испраќач, HTTP методи, делови од URI или комбинација од овие примери.
Услуги
Ајде да создадеме услуга InterSystems IRIS, со следните вредности:
столб
Вредност
Опис
името
ирис
Име на услугата
домаќин
IP
Домаќин или IP на серверот InterSystems IRIS
пристаниште
52773
Веб-порта на серверот InterSystems IRIS
пат
/api/ателје
Корен патека
протокол
http
Протокол
Оставете ги преостанатите вредности како стандардни. Кликнете на копчето Create и запишете го ID на креираната услуга.
Пат
Сега ајде да создадеме рута:
столб
Вредност
Опис
пат
/api/ателје
Корен патека
протокол
http
Протокол
услуга.ид
водич од 3
Услуга (ID од претходниот чекор)
Оставете ги преостанатите вредности како стандардни. Кликнете на копчето Create и запишете го ID на креираната рута. Стандардно, IAM ги слуша дојдовните барања на портата 8000. Сега барањата се испраќаат до http://localhost:8000 и почнувајќи со /api/atelier се пренасочени на InterSystems IRIS.
Тестирање
Ајде да се обидеме да создадеме барање во клиент REST (јас користам ).

Ајде да испратиме барање GET до http://localhost:8000/api/atelier/ (не заборавај / на крајот) и добијте одговор од InterSystems IRIS. Секое барање оди преку IAM кој собира метрика:
- HTTP статусен код.
- Одложување.
- Мониторинг (ако е конфигуриран).
Направив уште неколку барања (вклучувајќи две барања до непостоечки крајни точки како што е /api/atelier/est/), резултатите се веднаш видливи на контролната табла:

Работа со приклучоци
Сега кога имаме конфигурирана рута, можеме да управуваме со нашето API. Можеме да додадеме функции што ќе ја надополнат нашата услуга.
Најчестиот начин за промена на однесувањето на API е да додадете додаток. Приклучоците изолираат поединечна функционалност и може да се поврзат со IAM или глобално или само со поединечни ентитети, како што се корисник (група корисници), услуга или рута. Ќе започнеме со додавање на додатокот Rate Limiting во Route. За да воспоставиме врска помеѓу приклучокот и рутата, потребен ни е единствен идентификатор (ID) на маршрутата.
Ограничување на бројот на барања
Кликнете на Приклучоци во менито на левата странична лента. Можете да ги видите сите активни приклучоци на овој екран, но бидејќи овој IAM сервер е нов, сè уште нема активни приклучоци. Затоа, продолжете на следниот чекор со кликнување на „Нов приклучок“.
Приклучокот што ни треба е во категоријата „Контрола на сообраќајот“ и се нарекува „Ограничување на стапката“. Изберете го. Има неколку поставки што можете да ги поставите овде, но ние се грижиме само за две полиња:
столб
Вредност
Опис
route_id
ID
ИД на маршрута
конфиг.минута
5
Број на барања во минута
Тоа е се. Приклучокот е конфигуриран и активен. Забележете дека можеме да избереме различни временски интервали, како минута, час или ден. Поставките може да се комбинираат (на пример, 1000 барања на час и во исто време 100 барања во минута). Избрав минути бидејќи го олеснува проверувањето на функционалноста на приклучокот.
Ако повторно го испратите истото барање во Поштар, ќе видите дека одговорот се враќа со 2 дополнителни заглавија:
- XRateLimit-Limit-минута: 5
- XRateLimit-Преостаната минута: 4
Ова му кажува на клиентот дека може да поднесе до 5 барања во минута и може да направи уште 4 барања во тековниот временски простор.

Ако постојано го поднесувате истото барање, на крајот ќе ја снемате достапната квота и наместо тоа ќе добиете статусен код на HTTP од 429 со следното тело за одговор:

Почекајте малку и ќе можете повторно да поднесувате барања.
Ова е удобен механизам кој ви овозможува:
- Заштитете го задниот дел од пренапони на оптоварување.
- Кажете им на клиентите колку барања можат да поднесат.
- Монетизирајте го API-то.
Можете да поставите вредности за различни временски интервали и на тој начин да го израмните сообраќајот на API во одреден временски период. Да речеме дека дозволувате 600 барања на час на одредена рута. Во просек има 10 барања во минута. Но, ништо не го спречува клиентот да ги исполни сите 600 барања во првата минута од часот. Можеби ова е она што ви треба. Можеби ќе сакате да постигнете порамномерно оптоварување во текот на еден час. Со поставување на вредноста на полето config.minute Вредноста од 20 гарантира дека вашите корисници не прават повеќе од 20 барања во минута и 600 барања на час. Ова овозможува мали скокови на интервал од една минута во споредба со целосно просечниот проток од 10 барања во минута, но корисниците не можат да ја користат часовната квота за една минута. Сега ќе им требаат најмалку 30 минути за да ги искористат сите нивни барања. Клиентите ќе добијат дополнителни заглавија за секој наведен временски интервал, на пример:
Заглавие на HTTP
Вредност
X-RateLimit-Limit-час
600
X-RateLimit-Преостанат час
595
X-RateLimit-Limit-минута
20
X-RateLimit-Преостаната минута
16
Се разбира, постојат многу различни начини за конфигурирање на ограничувањата за пребарување во зависност од тоа што сакате да постигнете.
Наоди
Ќе завршам овде, мислам дека има доволно материјал за првата статија за InterSystems API Manager. Користивме само еден од над 40 приклучоци. Има многу повеќе интересни работи што можете да ги направите со IAM:
- Додајте централен механизам за автентикација за сите ваши API.
- Зголемете го оптоварувањето користејќи балансирач на оптоварување низ повеќе услуги.
- Додајте нова функционалност и поправени грешки на тест публиката пред целосно ажурирање.
- Обезбедете им на внатрешните и надворешните програмери посветен веб-портал кој ги документира сите API.
- Барањата за кеширање за да се намали времето на одговор и да се намали оптоварувањето на задниот дел на системот.
референци
Webinar
Ве покануваме на вебинарот „API Management with InterSystems API Management“, кој ќе се одржи на 21 ноември во 10:00 часот по московско време (GMT+3).
InterSystems API Manager (IAM) е нова компонента на InterSystems IRIS податочната платформа која обезбедува следење, контрола и управување со сообраќајот до/од веб API во рамките на ИТ инфраструктурата. На вебинарот ќе ги демонстрираме клучните способности на InterSystems API Management:
- Алатки за следење на сообраќајот API.
- Контроли на сообраќајот на API, вклучително и контрола на пропусниот опсег, ограничување на бројот на повици на API, одржување списоци со дозволени и одбиени списоци на IP адреси итн.
- Алатки за конфигурација на безбедност на API.
- Програмерски портал за објавување интерактивна API документација.
- Единствена точка на пристап до API.
Вебинарот е наменет за архитекти, програмери и системски администратори.
!
Извор: www.habr.com
