معرفی InterSystems API Manager (+ وبینار)

ما اخیراً InterSystems API Manager (IAM) را منتشر کرده‌ایم، مؤلفه جدیدی از InterSystems IRIS Data Platform که قابلیت مشاهده، کنترل و مدیریت ترافیک API وب را در زیرساخت فناوری اطلاعات فراهم می‌کند.

در این مقاله، نحوه راه‌اندازی IAM را به شما نشان می‌دهم و برخی از قابلیت‌های بسیاری را که با IAM در دسترس شما هستند نشان می‌دهم. InterSystems API Manager به شما اجازه می دهد:

  • API را زیر نظر بگیرید، بدانید چه کسی از API استفاده می کند، کدام API محبوب ترین است و کدام یک نیاز به بهبود دارند.
  • کنترل کنید چه کسی از API استفاده می کند و استفاده از API را از محدودیت های دسترسی ساده تا محدودیت های مبتنی بر درخواست محدود کنید - شما کنترل سفارشی دارید و می توانید به سرعت به تغییر الگوهای مصرف API پاسخ دهید.
  • API ها را با استفاده از مکانیسم های امنیتی متمرکز مانند OAuth2.0، LDAP یا Key Token Authentication ایمن کنید.
  • با باز کردن یک پورتال توسعه دهنده اختصاصی، کار را برای توسعه دهندگان شخص ثالث آسان کنید و تجربه API برتر را برای آنها فراهم کنید.
  • API را مقیاس کنید و از حداقل تأخیر پاسخ اطمینان حاصل کنید.

مدیریت API برای انتقال به معماری SOA یا میکروسرویس ضروری است، یکپارچگی بین سرویس‌های فردی (خرید) را ساده می‌کند و آنها را برای همه مصرف‌کنندگان خارجی و داخلی در دسترس قرار می‌دهد. در نتیجه، ایجاد، نگهداری و مصرف API های جدید آسان تر می شود.

اگر قبلاً از InterSystems IRIS استفاده می کنید، می توانید گزینه IAM را به مجوز خود اضافه کنید. گزینه IAM برای مشتریان InterSystems IRIS رایگان است، اما برای شروع استفاده از IAM باید یک کلید مجوز جدید از InterSystems درخواست کنید.

اگر هنوز از InterSystems IRIS استفاده نمی کنید و قصد دارید InterSystems API Manager را امتحان کنید، لطفاً با InterSystems تماس بگیرید.

شروع و نصب

مشتریان InterSystems می توانند توزیع IAM را از وب سایت دانلود کنند WRC بخش "توزیع نرم افزار" و اجرا به عنوان یک ظرف Docker. کمترین سیستم مورد نیاز:

در ابتدا، باید تصویر 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 برای ویندوز و یونیکس (و مک). این اسکریپت ها به شما کمک می کنند تا متغیرهای محیط را به درستی تنظیم کنید و به کانتینر IAM اجازه می دهد تا با InterSystems IRIS ارتباط برقرار کند. در اینجا نمونه ای از اسکریپت در حال اجرا در مک آمده است:

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.

معرفی InterSystems API Manager (+ وبینار)

فعلاً خالی است زیرا یک گره کاملاً جدید است. بیایید آن را تغییر دهیم. IAM از مفهوم فضاهای کاری برای تقسیم APIها به ماژول ها و/یا دستورات پشتیبانی می کند. به فضای کاری «پیش‌فرض» بروید که برای آزمایش‌های خود از آن استفاده خواهیم کرد.

معرفی InterSystems API Manager (+ وبینار)

تعداد درخواست‌ها برای این فضای کاری هنوز صفر است، اما در منوی سمت چپ ایده‌ای از مفاهیم اولیه IAM دریافت خواهید کرد. دو عنصر اول: خدمات و مسیرها مهمترین آنها هستند:

  • سرویس API است که ما می‌خواهیم دسترسی به آن را برای مصرف‌کنندگان فراهم کنیم. بنابراین، REST API در InterSystems IRIS یک سرویس است، به عنوان مثال، اگر می‌خواهید از آن استفاده کنید، Google API.
  • Route تصمیم می گیرد که درخواست های دریافتی به کدام سرویس ارسال شود. هر مسیر دارای مجموعه ای از شرایط خاص است و در صورت تحقق آنها، درخواست به سرویس مربوطه ارسال می شود. برای مثال، یک مسیر می‌تواند با IP، دامنه فرستنده، روش‌های HTTP، بخش‌هایی از یک URI یا ترکیبی از این مثال‌ها مطابقت داشته باشد.

سرویس

بیایید یک InterSystems IRIS Service با مقادیر زیر ایجاد کنیم:

رشته
ارزش
شرح

نام
جنس زنبق و سوسن
نام سرویس

میزبان
IP
میزبان یا آی پی سرور IRIS InterSystems

بندر
52773
پورت وب سرور InterSystems IRIS

مسیر
/api/atelier
مسیر ریشه

پروتکل
HTTP
پروتکل

مقادیر باقیمانده را به عنوان پیش فرض بگذارید. روی دکمه کلیک کنید Create و شناسه سرویس ایجاد شده را یادداشت کنید.

مسیر

حالا بیایید یک مسیر ایجاد کنیم:

رشته
ارزش
شرح

مسیر
/api/atelier
مسیر ریشه

پروتکل
HTTP
پروتکل

service.id
راهنمای از 3
خدمات (شناسه از مرحله قبل)

مقادیر باقیمانده را به عنوان پیش فرض بگذارید. روی دکمه کلیک کنید Create و شناسه مسیر ایجاد شده را یادداشت کنید. به طور پیش‌فرض، IAM به درخواست‌های ورودی در پورت 8000 گوش می‌دهد. اکنون درخواست‌ها به آن ارسال می‌شوند http://localhost:8000 و با شروع /api/atelier به InterSystems IRIS هدایت می شوند.

آزمایش

بیایید سعی کنیم یک درخواست در یک مشتری REST ایجاد کنیم (من از آن استفاده می کنم پستچی).

معرفی InterSystems API Manager (+ وبینار)

بیایید یک درخواست GET به http://localhost:8000/api/atelier/ (فراموش نکن / در پایان) و پاسخی را از InterSystems IRIS دریافت کنید. هر درخواست از طریق IAM انجام می شود که معیارها را جمع آوری می کند:

  • کد وضعیت HTTP
  • تاخیر انداختن.
  • نظارت (در صورت پیکربندی).

من چند درخواست دیگر کردم (از جمله دو درخواست به نقاط پایانی غیر موجود مانند /api/atelier/est/)، نتایج بلافاصله در داشبورد قابل مشاهده است:

معرفی InterSystems API Manager (+ وبینار)

کار با پلاگین ها

اکنون که یک Route پیکربندی شده است، می توانیم API خود را مدیریت کنیم. ما می توانیم ویژگی هایی اضافه کنیم که خدمات ما را تکمیل می کند.

رایج ترین راه برای تغییر رفتار API اضافه کردن یک افزونه است. پلاگین ها عملکردهای فردی را ایزوله می کنند و می توانند به IAM به صورت سراسری یا فقط به نهادهای جداگانه مانند یک کاربر (گروه کاربران)، سرویس یا مسیر متصل شوند. ما با افزودن پلاگین Rate Limiting به Route شروع می کنیم. برای برقراری ارتباط بین افزونه و مسیر، به یک شناسه (ID) منحصر به فرد مسیر نیاز داریم.

محدود کردن تعداد درخواست ها

در منوی نوار کناری سمت چپ روی Plugins کلیک کنید. شما می توانید تمام پلاگین های فعال را در این صفحه مشاهده کنید، اما از آنجایی که این سرور IAM جدید است، هنوز هیچ پلاگین فعالی وجود ندارد. بنابراین با کلیک بر روی "پلاگین جدید" به مرحله بعدی بروید.

افزونه مورد نیاز ما در دسته «کنترل ترافیک» است و «محدودیت نرخ» نام دارد. آن را انتخاب کنید. تنظیمات زیادی وجود دارد که می توانید در اینجا تنظیم کنید، اما ما فقط به دو قسمت اهمیت می دهیم:

رشته
ارزش
شرح

route_id
ID
شناسه مسیر

config.minute
5
تعداد درخواست در دقیقه

همین. افزونه پیکربندی و فعال است. توجه داشته باشید که می توانیم بازه های زمانی مختلفی مانند یک دقیقه، یک ساعت یا یک روز را انتخاب کنیم. تنظیمات را می توان ترکیب کرد (مثلاً 1000 درخواست در ساعت و در همان زمان 100 درخواست در دقیقه). من دقیقه را انتخاب کردم زیرا بررسی عملکرد افزونه را آسان می کند.

اگر دوباره همان درخواست را در Postman ارسال کنید، خواهید دید که پاسخ با 2 سرصفحه اضافی برگردانده می شود:

  • XRateLimit-Limit-minute: 5
  • XRateLimit-Remaining-دقیقه: 4

این به مشتری می گوید که می تواند تا 5 درخواست در دقیقه ارسال کند و می تواند 4 درخواست دیگر را در بازه زمانی فعلی ارسال کند.

معرفی InterSystems API Manager (+ وبینار)

اگر یک درخواست را بارها و بارها انجام دهید، در نهایت سهمیه موجود را تمام می‌کنید و در عوض کد وضعیت HTTP 429 را با بدنه پاسخ زیر دریافت می‌کنید:

معرفی InterSystems API Manager (+ وبینار)

یک دقیقه صبر کنید و دوباره می توانید درخواست ها را ارسال کنید.

این یک مکانیسم مناسب است که به شما امکان می دهد:

  • پشتیبان را در برابر افزایش بار محافظت کنید.
  • به مشتریان بگویید که چه تعداد درخواست می توانند داشته باشند.
  • کسب درآمد از API

شما می توانید مقادیر را برای بازه های زمانی مختلف تنظیم کنید و بنابراین ترافیک API را در یک بازه زمانی مشخص صاف کنید. فرض کنید شما اجازه 600 درخواست در ساعت را در یک مسیر خاص می دهید. به طور متوسط ​​10 درخواست در دقیقه وجود دارد. اما هیچ چیز مانع از تکمیل 600 درخواست مشتری در اولین دقیقه از ساعت نمی شود. شاید این چیزی است که شما نیاز دارید. ممکن است بخواهید در طول یک ساعت به بار یکنواخت تری برسید. با تنظیم مقدار فیلد config.minute مقدار 20 تضمین می کند که کاربران شما بیش از 20 درخواست در دقیقه و 600 درخواست در ساعت ندارند. این اجازه می دهد تا برای یک بازه زمانی یک دقیقه ای در مقایسه با یک جریان کاملاً متوسط ​​10 درخواست در دقیقه، جهش های کوچک ایجاد شود، اما کاربران نمی توانند از سهمیه ساعتی برای یک دقیقه استفاده کنند. اکنون حداقل 30 دقیقه زمان نیاز دارند تا از تمام درخواست های خود استفاده کنند. مشتریان برای هر بازه زمانی مشخص هدرهای اضافی دریافت خواهند کرد، به عنوان مثال:

سربرگ HTTP
ارزش

X-RateLimit-Limit-hour
600

X-RateLimit-Remaining-hour
595

X-RateLimit-Limit-minute
20

X-RateLimit-Remaining-minute
16

البته، بسته به چیزی که می خواهید به آن برسید، راه های مختلفی برای پیکربندی محدودیت های پرس و جو وجود دارد.

یافته ها

من اینجا را تمام می کنم، فکر می کنم مطالب کافی برای اولین مقاله در مورد InterSystems API Manager وجود دارد. ما فقط از یکی از بیش از 40 افزونه استفاده کردیم. بسیاری از کارهای جالب دیگر وجود دارد که می توانید با IAM انجام دهید:

  • یک مکانیسم احراز هویت مرکزی برای همه API های خود اضافه کنید.
  • با استفاده از یک متعادل کننده بار در چندین سرویس، بار را مقیاس کنید.
  • قبل از به‌روزرسانی کامل، عملکردهای جدید و رفع اشکال را به مخاطبان آزمایشی اضافه کنید.
  • به توسعه دهندگان داخلی و خارجی یک پورتال اختصاصی وب ارائه دهید که همه API ها را مستند می کند.
  • درخواست‌های کش برای کاهش زمان پاسخ و کاهش بار روی باطن سیستم.

مراجع

کنفرانس آن لاین

ما شما را به وبینار "مدیریت API با مدیریت API InterSystems" دعوت می کنیم که در 21 نوامبر ساعت 10:00 به وقت مسکو (GMT+3) برگزار می شود.
InterSystems API Manager (IAM) یک جزء جدید از InterSystems IRIS Data Platform است که نظارت، کنترل و مدیریت ترافیک به و از APIهای وب را در زیرساخت فناوری اطلاعات فراهم می کند. در وبینار ما قابلیت های کلیدی InterSystems API Management را نشان خواهیم داد:

  • ابزارهای نظارت بر ترافیک API
  • کنترل‌های ترافیک API، از جمله کنترل پهنای باند، محدود کردن تعداد تماس‌های API، حفظ فهرست‌های مجاز و رد شده از آدرس‌های IP و غیره.
  • ابزارهای پیکربندی امنیتی API.
  • پورتال توسعه دهنده برای انتشار اسناد تعاملی API.
  • تنها نقطه دسترسی به API.

وبینار برای معماران، توسعه دهندگان و مدیران سیستم در نظر گرفته شده است.

ثبت نام الزامی است!

منبع: www.habr.com

اضافه کردن نظر