InterSystems API Menecerinin təqdimatı (+ vebinar)

Biz bu yaxınlarda InterSystems IRIS Data Platformasının yeni komponenti olan InterSystems API Manager-i (IAM) buraxdıq ki, bu da İT infrastrukturu üzrə veb API trafikinin görünməsini, nəzarətini və idarə olunmasını təmin edir.

Bu yazıda mən sizə IAM-ın necə qurulacağını göstərəcəyəm və IAM ilə sizin üçün mövcud olan bir çox imkanlardan bəzilərini nümayiş etdirəcəyəm. InterSystems API Meneceri sizə imkan verir:

  • API-yə nəzarət edin, API-dən kimin istifadə etdiyini, hansı API-lərin ən populyar olduğunu və hansının təkmilləşdirilməsini tələb etdiyini anlayın.
  • API-dən kimin istifadə etdiyinə nəzarət edin və sadə giriş məhdudiyyətlərindən sorğu-əsaslı məhdudiyyətlərə qədər API istifadəsini məhdudlaşdırın - sizin fərdi nəzarətiniz var və dəyişən API istehlak nümunələrinə tez cavab verə bilərsiniz.
  • OAuth2.0, LDAP və ya Açar Token Autentifikasiyası kimi mərkəzləşdirilmiş təhlükəsizlik mexanizmlərindən istifadə edərək təhlükəsiz API-ləri.
  • Xüsusi inkişaf etdirici portalı açmaqla üçüncü tərəf tərtibatçıları üçün işi asanlaşdırın və onlara üstün API təcrübəsi təqdim edin.
  • API-ni ölçün və minimum cavab gecikməsini təmin edin.

API idarəetməsi SOA və ya mikroservis arxitekturasına keçid üçün vacibdir, fərdi (mikro) xidmətlər arasında inteqrasiyanı sadələşdirir, onları bütün xarici və daxili istehlakçılar üçün əlçatan edir. Nəticədə, yeni API-lərin yaradılması, saxlanması və istehlakı asanlaşır.

Əgər siz artıq InterSystems IRIS-dən istifadə edirsinizsə, IAM seçimini lisenziyanıza əlavə edə bilərsiniz. IAM seçimi InterSystems IRIS müştəriləri üçün pulsuzdur, lakin siz IAM-dan istifadə etməyə başlamaq üçün InterSystems-dən yeni lisenziya açarı tələb etməlisiniz.

Əgər siz hələ InterSystems IRIS-dən istifadə etmirsinizsə və InterSystems API Menecerindən istifadə etməyi planlaşdırırsınızsa, InterSystems ilə əlaqə saxlayın.

Başlanğıc və Quraşdırma

InterSystems müştəriləri IAM paylamasını vebsaytdan endirə bilərlər WRC "Proqram təminatının paylanması" bölməsini seçin və Docker konteyneri kimi işləyin. Minimum sistem tələbləri:

Əvvəlcə Docker şəklini yükləməlisiniz (Vacib! WRC ilə arxiv Docker şəkli deyil, onu çıxartmalısınız, içərisində Docker şəkli var):

docker load -i iam_image.tar

Bu əmr IAM şəklini daha sonra serverinizdə istifadə etmək üçün əlçatan edəcək. IAM ayrıca konteyner kimi işləyir, ona görə də siz onu InterSystems IRIS-dən müstəqil olaraq miqyaslandıra bilərsiniz. IAM-ın işləməsi lisenziyanı endirmək üçün InterSystems IRIS-ə giriş tələb edir.

InterSystems IRIS-i qurun:

  • Veb tətbiqini aktivləşdirin /api/IAM
  • İstifadəçini aktivləşdirin IAM
  • İstifadəçi parolunu dəyişdirin IAM

İndi IAM konteynerinə başlayaq. Arxivdə skriptləri tapa bilərsiniz iam-setup Windows və Unix (və Mac) üçün. Bu skriptlər mühit dəyişənlərini düzgün təyin etməyə kömək edəcək və IAM konteynerinə InterSystems IRIS ilə əlaqə yaratmağa imkan verəcək. Mac-da işləyən skript nümunəsi:

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

Gördüyünüz kimi, tam şəkil adı, IP ünvanı, InterSystems IRIS portu və IAM istifadəçisi üçün parol sizə başlamaq üçün lazım olan hər şeydir.

Skript işlətmək əvəzinə, mühit dəyişənlərini əl ilə təyin edə bilərsiniz:

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

Başlanğıc

İndi əmri işlətməklə IAM-ı işə salaq:

docker-compose up -d

Bu əmr IAM konteynerlərini təşkil edir və hər şeyin düzgün işləməsini təmin edir. Konteynerlərin vəziyyəti əmrdən istifadə edərək yoxlanılır:

docker ps

Brauzerinizdə admin interfeysini açın localhost:8002.

InterSystems API Menecerinin təqdimatı (+ vebinar)

Hələlik boşdur, çünki tamamilə yeni bir qovşaqdır. Gəlin bunu dəyişək. IAM API-ləri modullara və/və ya əmrlərə bölmək üçün iş yerləri konsepsiyasını dəstəkləyir. Təcrübələrimiz üçün istifadə edəcəyimiz "defolt" iş sahəsinə keçin.

InterSystems API Menecerinin təqdimatı (+ vebinar)

Bu iş sahəsi üçün sorğuların sayı hələ də sıfırdır, lakin siz soldakı menyuda əsas IAM anlayışları haqqında fikir əldə edəcəksiniz. İlk iki element: Xidmətlər və Marşrutlar ən vacibdir:

  • Xidmət istehlakçılara girişi təmin etmək istədiyimiz API-dir. Beləliklə, InterSystems IRIS-də REST API, məsələn, istifadə etmək istəyirsinizsə, Google API kimi bir Xidmətdir.
  • Marşrut hansı Xidmətə daxil olan sorğuların yönləndirilməsinə qərar verir. Hər Marşrutun müəyyən şərtlər toplusu var və onlar yerinə yetirildiyi təqdirdə sorğu müvafiq Xidmətə göndərilir. Məsələn, Marşrut IP, göndərən domen, HTTP metodları, URI hissələri və ya bu nümunələrin kombinasiyası ilə uyğunlaşa bilər.

Xidmət

Gəlin aşağıdakı dəyərlərlə InterSystems IRIS Xidmətini yaradaq:

Sahə
Dəyər
Təsvir

ad
süsən
Xidmət Adı

sahib
IP
InterSystems IRIS server host və ya ip

port
52773
InterSystems IRIS server veb portu

yol
/api/atelier
Kök yolu

protokol
http
Protokol

Qalan dəyərləri standart olaraq buraxın. düyməni basın Create və yaradılmış Xidmətin ID-sini yazın.

Route

İndi marşrut yaradaq:

Sahə
Dəyər
Təsvir

yol
/api/atelier
Kök yolu

protokol
http
Protokol

xidmət.id
3-dən bələdçi
Xidmət (əvvəlki addımdan ID)

Qalan dəyərləri standart olaraq buraxın. düyməni basın Create və yaradılmış Marşrutun ID-sini yazın. Defolt olaraq, IAM 8000 portunda daxil olan sorğuları dinləyir. İndi sorğular göndərilir http://localhost:8000 və ilə başlayır /api/atelier InterSystems IRIS-ə yönləndirilir.

Test

Gəlin REST müştərisində sorğu yaratmağa çalışaq (istifadə edirəm Poçtalyon).

InterSystems API Menecerinin təqdimatı (+ vebinar)

GET sorğusu göndərək http://localhost:8000/api/atelier/ (unutma / sonunda) və InterSystems IRIS-dən cavab alın. Hər sorğu metrikləri toplayan IAM-dan keçir:

  • HTTP status kodu.
  • Gecikmə.
  • Monitorinq (konfiqurasiya olunarsa).

Mən daha bir neçə sorğu etdim (o cümlədən /api/atelier/est/ kimi mövcud olmayan son nöqtələrə iki sorğu), nəticələr dərhal idarə panelində görünür:

InterSystems API Menecerinin təqdimatı (+ vebinar)

Pluginlərlə işləmək

İndi konfiqurasiya edilmiş Marşrutumuz var, biz API-mizi idarə edə bilərik. Xidmətimizi tamamlayacaq funksiyalar əlavə edə bilərik.

API-nin davranışını dəyişdirməyin ən ümumi yolu plagin əlavə etməkdir. Pluginlər fərdi funksionallığı təcrid edir və IAM-a qlobal miqyasda və ya yalnız İstifadəçi (istifadəçilər qrupu), Xidmət və ya Marşrut kimi fərdi qurumlara qoşula bilər. Marşruta Rate Limiting plaginini əlavə etməklə başlayacağıq. Plugin və marşrut arasında əlaqə yaratmaq üçün bizə marşrutun unikal identifikatoru (ID) lazımdır.

Müraciətlərin sayının məhdudlaşdırılması

Sol yan panel menyusunda Pluginləri klikləyin. Siz bu ekranda bütün aktiv plaginləri görə bilərsiniz, lakin bu IAM serveri yeni olduğundan, hələ aktiv plaginlər yoxdur. Beləliklə, "Yeni Plugin" düyməsini basaraq növbəti addıma keçin.

Bizə lazım olan plagin “Traffic Control” kateqoriyasındadır və “Rate Limiting” adlanır. Onu seçin. Burada təyin edə biləcəyiniz bir neçə parametr var, lakin biz yalnız iki sahəyə əhəmiyyət veririk:

Sahə
Dəyər
Təsvir

marşrut_id
ID
Marşrut ID

konfiqurasiya.dəqiqə
5
Bir dəqiqədə sorğuların sayı

Hamısı budur. Plugin konfiqurasiya olunub və aktivdir. Nəzərə alın ki, biz dəqiqə, saat və ya gün kimi müxtəlif vaxt intervallarını seçə bilərik. Parametrlər birləşdirilə bilər (məsələn, saatda 1000 sorğu və eyni zamanda dəqiqədə 100 sorğu). Mən dəqiqələri seçdim, çünki bu, plaqinin funksionallığını yoxlamağı asanlaşdırır.

Eyni sorğunu Postman-da yenidən göndərsəniz, cavabın 2 əlavə başlıq ilə qaytarıldığını görəcəksiniz:

  • XRateLimit-Limit-dəqiqə: 5
  • XRateLimit-Qalan dəqiqə: 4

Bu, müştəriyə dəqiqədə 5 sorğu verə biləcəyini və cari vaxt intervalında daha 4 sorğu verə biləcəyini bildirir.

InterSystems API Menecerinin təqdimatı (+ vebinar)

Eyni sorğunu təkrar-təkrar etsəniz, nəticədə mövcud kvota bitəcək və bunun əvəzinə aşağıdakı cavab orqanı ilə 429 HTTP status kodu alacaqsınız:

InterSystems API Menecerinin təqdimatı (+ vebinar)

Bir dəqiqə gözləyin və yenidən sorğu göndərə biləcəksiniz.

Bu sizə imkan verən rahat mexanizmdir:

  • Arxa ucunu yük dalğalarından qoruyun.
  • Müştərilərə nə qədər sorğu verə biləcəklərini söyləyin.
  • API-dən pul qazanın.

Siz müxtəlif vaxt intervalları üçün dəyərlər təyin edə və beləliklə müəyyən bir müddət ərzində API trafikini hamarlaya bilərsiniz. Tutaq ki, müəyyən Marşrutda saatda 600 sorğuya icazə verirsiniz. Orta hesabla dəqiqədə 10 sorğu olur. Amma heç nə müştəriyə saatın ilk dəqiqəsində bütün 600 sorğunu yerinə yetirməyə mane olmur. Bəlkə də sizə lazım olan budur. Bir saat ərzində daha bərabər yükə nail olmaq istəyə bilərsiniz. Sahənin dəyərini təyin etməklə config.minute 20 dəyəri istifadəçilərinizin dəqiqədə 20 sorğudan və saatda 600 sorğudan çox olmamasını təmin edir. Bu, dəqiqədə 10 sorğudan ibarət tam orta axınla müqayisədə bir dəqiqəlik intervalda kiçik sıçrayışlara imkan verir, lakin istifadəçilər bir dəqiqə ərzində saatlıq kvotadan istifadə edə bilmirlər. İndi onlara bütün sorğularından istifadə etmək üçün ən azı 30 dəqiqə vaxt lazım olacaq. Müştərilər hər bir müəyyən vaxt intervalı üçün əlavə başlıqlar alacaqlar, məsələn:

HTTP başlığı
Dəyər

X-RateLimit-Limit-saat
600

X-RateLimit-Qalan-saat
595

X-RateLimit-Limit-dəqiqə
20

X-RateLimit-Qalan dəqiqə
16

Əlbəttə ki, əldə etmək istədiyinizdən asılı olaraq sorğu limitlərini konfiqurasiya etməyin müxtəlif yolları var.

Tapıntılar

Mən burada bitirəcəyəm, düşünürəm ki, InterSystems API Manager haqqında ilk məqalə üçün kifayət qədər material var. 40-dan çox plagindən yalnız birini istifadə etdik. IAM ilə edə biləcəyiniz daha çox maraqlı şeylər var:

  • Bütün API-ləriniz üçün mərkəzi autentifikasiya mexanizmi əlavə edin.
  • Birdən çox Xidmət üzrə yük balanslaşdırıcısından istifadə edərək yükü miqyaslayın.
  • Tam yeniləmədən əvvəl test auditoriyasına yeni funksionallıq və səhv düzəlişləri əlavə edin.
  • Daxili və xarici tərtibatçıları bütün API-ləri sənədləşdirən xüsusi veb portalla təmin edin.
  • Cavab vaxtını azaltmaq və sistemin arxa ucundakı yükü azaltmaq üçün keş sorğuları.

References

Webinar

Sizi noyabrın 21-də Moskva vaxtı ilə saat 10:00-da (GMT+3) keçiriləcək “İnterSystems API Management ilə API İdarəetmə” vebinarına dəvət edirik.
InterSystems API Manager (IAM) InterSystems IRIS Data Platformasının yeni komponentidir və İT infrastrukturu daxilində veb API-lərə daxil olan/dan gələn trafikin monitorinqini, nəzarətini və idarə olunmasını təmin edir. Vebinarda biz InterSystems API Management-in əsas imkanlarını nümayiş etdirəcəyik:

  • API trafik monitorinq alətləri.
  • API trafikinə nəzarət, o cümlədən bant genişliyinə nəzarət, API zənglərinin sayını məhdudlaşdırmaq, IP ünvanlarının icazə verilən və rədd edilmiş siyahılarının siyahılarını saxlamaq və s.
  • API təhlükəsizlik konfiqurasiya alətləri.
  • İnteraktiv API sənədlərini dərc etmək üçün tərtibatçı portalı.
  • API-yə tək giriş nöqtəsi.

Vebinar memarlar, tərtibatçılar və sistem administratorları üçün nəzərdə tutulub.

Qeydiyyat tələb olunur!

Mənbə: www.habr.com

Добавить комментарий