شیما سیف الهی
شیما سیف الهی
خواندن ۱۱ دقیقه·۳ سال پیش

درگاه رابط برنامه‌نویسی برنامه (API Gateway)

دروازه API چیست؟

یک دروازه API یک الگوی نرم‌افزاری و ابزار مدیریت API است که بین یک client و مجموعه‌ای از سرویس‌های back end قرار می‌گیرد. به عنوان یک proxy معکوس عمل می‌کند تا همه فراخوانی‌های رابط‌ برنامه‌نویسی برنامه (API) را بپذیرد، سرویس‌های مورد نیاز برای انجام آن‌ها را جمع‌آوری کند و نتایج مناسب را برگرداند. با افزایش اهمیت یکپارچگی و اتصال به یکدیگر، اهمیت دروازه‌های API‌ هم بیشتر می‌شود. افزایش پیچیدگی APIها و افزایش رشد آن‌ها سبب افزایش اهمیت دروازه‌های API می‌گردد. دروازه API در مقابل رابط برنامه‌نویسی برنامه (API) یا گروهی از میکروسرویس‌ها قرار می‌گیرد تا تسهیل درخواست‌ها و تحلیل داده‌ها در سرویس‌ها را تسهیل کند.

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

API Gateway
API Gateway


نحوه انجام کار API Gateway

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

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

دلایل استفاده API Gateway

بیشتر APIهای سازمانی از طریق دروازه‌های API مستقر می‌شوند. در ابتدایی‌ترین حالت یک سرویس API یک درخواست از راه دور را می‌پذیرد و پاسخی را برمی‌گرداند. اما در واقعیت به این سادگی نیست و باید نگرانی‌های مختلف در هنگام host کردن APIهای بزرگ مقیاس در نظر گرفت. در ادامه تعدادی از دلایل استفاده از API Gateway معرفی می‌گردند.

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

نقش API Gateway در API Management

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


معماری API

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

معماری API Gateway
معماری API Gateway


کاربران API Gateway

مدیریت و نظارت توسط دروازه API‌ سبب می‌شود تا به جای تلاش برای ردیابی و مدیریت APIها به صورت مجزا در واقع کسب و کار بتواند دامنه وسیعی از APIها و ادغام‌ها را به صورت متمرکز ببیند و کنترل کند. کاربران و استفاده‌کنندگان از درگاه API عبارتند از:

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


چالش‌های API Gateway

دروازه API به عنوان درواز‌ه‌بانی بین مشتریان API و ارائه‌ دهندگان API است. این نقش گسترده دارای چالش‌های منحصر به فردی است که در ادامه بررسی می‌گردند.

قابلیت اطمینان و انعطاف‌پذیری: هر مانع یا اختلالی در عملکرد درگاه‌های API ممکن است باعث خرابی سرویس‌های مرتبط شود. سازمان‌ها باید در مورد اضافه کردن ویژگی‌هایی که بر روی عملکرد تاثیر می‌گذارند محتاط باشند. همچنین به ویژه API gateway یک مرحله فرایند اضافه بین مشتریان و برنامه‌ها یا داده را نمایش می‌دهند.

امنیت: API gateway یک منبع قابل اعتماد است که بسیاری از زوایای کسب و کار یک شرکت را حس در نظر می‌گیرد که اگر در معرض خطر قرار گیرد،‌یک مشکل امنیتی گسترده و جدی است. کسب و کارها باید به دقت رابط‌های خارجی را از APIها و سیستم‌های داخلی جدا کنند و پارامترهای احراز هویت و مجوز را تعریف کنند.

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


مزایای API Gateway

مزیت اصلی API Gateway این هست که سرویس‌ها را از طریق APIها یا میکروسرویس‌ها استاندارد و متمرکز می‌کند. همچنین به امنیت و سازماندهی یکپارچه‌سازی مبتنی بر APIها به روش‌های متعدد کمک می‌کند. در ادامه تعدادی از مزایای دروازه API معرفی می‌گردند.

ساده‌سازی ارائه خدمات: درگاه‌‌های API می‌توانند چندین API فراخوانی شده برای درخواست و بازیابی داده‌ها و سرویس‌ها ترکیب کنند که حجم درخواست‌ها و ترافیک را کاهش می‌دهد. فرایند API را ساده می‌کند و رابط کاربری را به ویژه برای موبایل و برنامه‌های کاربردی بهبود می‌دهد. همچنین client می‌تواند همه داده‌ها را یکباره دریافت کند و نتایج مورد نیاز و مناسب مشتری را ارائه می‌دهد.

ایجاد انعطاف‌پذیری: درگاه‌های API بسیار قابل پیکربندی و قابل تنظیم هستند. توسعه‌ دهندگان می‌توانند ساختارهای داخلی برنامه را به روش‌های مختلف کپسوله کنند تا چندین سرویس back end را فراخوانی کنند و نتایج را جمع‌آوری کنند. بنابراین برای استفاده از پروتکل‌های کاملا مستقل انعطاف‌پذیری وجود دارد که در آن client و میکروسرویس می‌توانند با یکدیگر ارتباط برقرار کنند.

گسترش برنامه‌های قدیمی: سازمان‌هایی که به برنامه‌های قدیمی متکی هستند، می‌توانند از دروازه‌های API برای کار با این برنامه‌ها و گسترش عملکرد آن‌ها به عنوان یک جایگزین برای مهاجرت گسترده‌تر، پیچیده‌تر و گران‌تر استفاده کنند.

کمک به نظارت و قابلیت مشاهده: بیشتر سازمان‌ها به ابزارهای خاصی برای فعالیت نظارت از طریق APIها متکی هستند و یک فرایند API به این کارها کمک می‌کنند. API Gateway می‌تواند به مشخص کردن یک مشکل از طریق نظارت یک رویداد خرابی و خرابی‌های جزئی کمک کند.


معایب API Gateway

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


ابزارهای API Gateway

در این بخش سه مورد ابزارهای منبع باز مهم و کاربردی مورد استفاده برای مدیریت و ایجاد درگاه API معرفی و بررسی می‌گردند.

API Gateway
API Gateway


ابزار Kong Gateway

محبوب‌ترین ابزار منبع باز برای درگاه API و مبتنی بر ابر است و می‌توان آن را به عنوان یک راه حل ترکیبی در فضای ابری یا در محل خود مستقر کرد. که بر روی یک proxy سبک ‌وزن ساخته شده است و بارهای کاری بزرگ و متغیر را پشتیبانی می‌کند. این ابزار به زبان Lua نوشته شده است و به کمک Nginx اجرا می‌شود. یک موتور قالب است که سبب تسریع زمان رویداد می‌شود. عملکرد تاخیر غیر موازی مقیاس‌پذیری را برای همه برنامه‌های میکروسرویس را بدون در نظر گرفتن مکان اجرا تضمین می‌کند و ارائه می‌دهد. این ابزار دارای ویژگی‌هایی مانند احراز هویت، کنترل ترافیک، تجزیه و تحلیل، تغییرات و تبدیلات، ورود به سیستم، بدون سرور، قابل توسعه با استفاده از معماری پلاگین، قابلیت اجرا روی پلتفرم دلخواه و مناسب برای مستندسازی و یکپارچه‌سازی است. این ابزار برای برنامه‌های مهم سازمان‌ها راه حل ارائه می‌دهد و به گسترش APIها و میکروسرویس‌ها کمک می‌کند.

Kong Gateway
Kong Gateway


ابزار Tyk

یک درگاه API منبع باز آماده برای سازمان‌ها است و دارای دو گزینه hosted و managed است. این ابزار دارای ویژگی‌هایی مانند احراز هویت، محدودیت سهمیه و نرخ، کنترل نسخه، رویدادها و اعلان‌ها، نظارت و تحلیل جزئیات، commit کردن به منظور سازگاری عقبگرد، GraphQL خارج از جعبه و موجود بودن در بازار AWS است.

Tyk Gateway
Tyk Gateway


ابزار KrakenD

یک درگاه API منبع باز با عملکرد بالا است. عملکرد اصلی آن ایجاد یک API است که بسیاری از میکروسرویس‌ها را در یک نقطه پایانی واحد جمع می‌کند و کارهای سنگین و سخت مانند تجمیع، تبدیل، انتقال، فیلتر، رمزگشایی، جلو بردن، احراز هویت و ... را به صورت خودکار انجام می‌دهد. به خوبی ساختاریافته و لایه‌بندی شده است و برای گسترش عملکرد خود از میان‌افزار plug-and-play استفاده می‌کند. همچنین این ابزار نسبت به Try و Kong سرعت بیشتری دارد.

 KrakenD Gateway
KrakenD Gateway


شرکت‌های ایرانی فعال در حوزه API Gateway

در این بخش دو مورد از شرکت‌های فعال در حوزه API Gateway و محصولات آن‌ها معرفی می‌گردند.


شرکت دانش بنیان پلتکو

این شرکت برای حل مشکل متمرکز نبودن وظایفی مانند فعال بودن مداوم، امنیت، سهولت دسترسی ، نرخ دسترسی و اطلاع دائم و آنلاین از مسائل دیگر وب سرویس‌ها در یک سازمان پلتفرمی یکپارچه برای مدیریت زیر ساخت وب سرویس‌ها ارائه داده است تا بتوان کل چرخه زندگی وب سرویس‌های سازمان را از ابتدای بوجود آمدن تا زمان قطع سرویس مدیریت کرد. شرکت پلتکو از طریق API Manager چالش‌های سازمان‌ها حل کرده‌ است. سازمان‌ها از طریق API Manager به راحتی می‌توانند زیر ساخت کل سرویس‌های خود را یکپارچه کنند و با ابزارهای مدیریت بر تمام رخدادهای وب سرویس‌ها نظارت آنلاین داشته باشند این پلتفرم 98 درصد از قطع سیستم، 45 درصد از اتلاف زمان و 50 درصد از اتلاف هزینه جلوگیری می‌کند. ویژگی‌های این محصول و پلتفرم عبارتند از:

  • ایجاد درگاه امن برای وب سرویس‌ها
  • امکان سفارشی‌سازی API Manager
  • پشتیبانی از RAML ، OAS ، SOAP
  • مدیریت دسترسی یکپارچه
  • امکان تعیین خط مشی وب سرویس‌ها
  • مدیریت وب سرویس‌ها از طریق فضای ابری
  • محافظت از منابع خود
  • تسریع در ارائه خروجی وب سرویس‌ها
  • بهبود قابلیت معرفی وب‌ سرویس به سرویس‌گیرندگان
پلتفرم پلتکو
پلتفرم پلتکو


شرکت ابر درسا

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

  • از محیط های ناهمگن شبکه پشتیبانی می کند: سرویسApi Gateway ابری می‌تواندAPI های سیستم‌های تجاری کاربران را مدیریت کند، صرف نظر از اینکه سیستم های تجاری کاربران در ابر درسا ، مراکز داده محلی یا ابرهای شخص ثالث مستقر شده اند یا خیر.
  • ساخت انواع معماری فنی: معماری بدون سرور ترکیبی از Function Compute و API Gateway است که به توسعه‌دهندگان امکان می دهد تا کد را کشف کرده و به سرعت خدمات کم هزینه، بسیار در دسترس و مقیاس‌پذیر در زمان واقعی را ایجاد کنند. این معماری توسعه مشاغل مرتبط با دستگاه های تلفن همراه، برنامه های وب و اینترنت اشیا (IoT) بازار ابر را تسهیل می کند. این معماری امکانات توسعه تجارت و مرزهای تجاری را گسترش می دهد. انعطاف پذیری ترکیبات محصول بهبود یافته است.
  • معماری میکروسرویس: سرویس Api Gatewayابری به عنوان یک سرویس ابری بالغ عمل می‌کند که اجازه دسترسی به خوشه های برنامه Kubernetesرا می‌دهد. این به طور قابل توجهی قابلیت‌های سرویس خوشه‌های برنامه Kubernetesرا بهبود می‌بخشد. این معماری به عنوان معماری استاندارد برای برنامه های کاربردی اینترنت در مقیاس بزرگ عمل می‌کند.


جمع‌بندی

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


«این مطلب، بخشی از تمرینهای درس معماری نرم‌افزار در دانشگاه شهیدبهشتی است»

منابع و مراجع:

https://www.redhat.com/en/topics/api/what-does-an-api-gateway-do
https://www.nginx.com/learn/api-gateway/
https://www.axway.com/en/products/api-management/gateway
https://hub.packtpub.com/api-gateway-and-its-need/
https://virgool.io/d/mrzrc3gjfif5/WhatisanAPIgatewayandwhyisitimportant?(techtarget.com)
https://www.softwaretestinghelp.com/api-management-tools/
https://geekflare.com/api-gateway/#anchor-tyk
https://platco.ir/services/integration-web-services/api-management/
https://dorsacloud.com/













معماری_نرم_افزار_بهشتیapi gatewayمعماری نرم افزاردانشگاه شهید بهشتیدرگاه رابط برنامه نویسی برنامه
شاید از این پست‌ها خوشتان بیاید