یک دروازه API یک الگوی نرمافزاری و ابزار مدیریت API است که بین یک client و مجموعهای از سرویسهای back end قرار میگیرد. به عنوان یک proxy معکوس عمل میکند تا همه فراخوانیهای رابط برنامهنویسی برنامه (API) را بپذیرد، سرویسهای مورد نیاز برای انجام آنها را جمعآوری کند و نتایج مناسب را برگرداند. با افزایش اهمیت یکپارچگی و اتصال به یکدیگر، اهمیت دروازههای API هم بیشتر میشود. افزایش پیچیدگی APIها و افزایش رشد آنها سبب افزایش اهمیت دروازههای API میگردد. دروازه API در مقابل رابط برنامهنویسی برنامه (API) یا گروهی از میکروسرویسها قرار میگیرد تا تسهیل درخواستها و تحلیل دادهها در سرویسها را تسهیل کند.
یک دروازه API از DevOps و محیطهای بدون سرور پشتیبانی میکند. در سازمانهایی که از رویکرد DevOps استفاده میکنند، توسعه دهندگان از میکروسرویسها برای ایجاد و استقرار برنامهها به صورت سریع و تکراری استفاده میکنند. همچنین توسعه ابر مدرن از جمله مدلهای بدون سرور به APIها برای تامین زیرساخت بستگی دارد. بنابراین میتوان توابع بدون سرور را مستقر کرد و با استفاده از یک درگاه API آن را مدیریت کرد.
سبب میشود تا برنامههای مجزا با یکدیگر ارتباط برقرار کنند و دادهها را در بیرون و داخل یک کسب و کار منتقل میکنند. همچنین یک نقطه کانونی و رابط استاندارد برای انجام این فعالیتها، پیامرسانی API، سازماندهی و تسهیل فرایند API فراهم میکند. درخواستها را از منابع داخلی و خارجی دریافت میکند که فراخوانیهای API نام دارند و چندین درخواست را بستهبندی میکند و آنها را به API یا APIهای مناسب هدایت میکند و پاسخها را به کاربر یا دستگاهی که درخواست را ارسال کرده بود، تحویل میدهد.
دروازه API سایر عملکردهای مرتبط با APIها و میکروسرویسها شامل تفسیر پروتکل، کشف سرویس، منطق پایه کسب و کار، احراز هویت و اجرای سیاست های امنیتی، نرخ محدودیت، مسیریابی، آمارها، تثبیت و تعادل بار، مدیریت cache، صدور صورت حساب، نظارت، تجزیه و تحلیل، هشدارها و ثبت و تحلیل رخدادها برای تجزیه و تحلیل فراخوانیها و پاسخها برای اطمینان از امنیت و ارزیابی خطاها را مدیریت میکند. همچنین API Gateway کلیدی برای معماری مبتنی بر میکروسرویس است که در آن درخواستهای داده در واقع برنامه و سرویسهای متعددی را که در چند API مجزا مورد استفاده قرار میگیرند، فراخوانی میکنند.
بیشتر APIهای سازمانی از طریق دروازههای API مستقر میشوند. در ابتداییترین حالت یک سرویس API یک درخواست از راه دور را میپذیرد و پاسخی را برمیگرداند. اما در واقعیت به این سادگی نیست و باید نگرانیهای مختلف در هنگام host کردن APIهای بزرگ مقیاس در نظر گرفت. در ادامه تعدادی از دلایل استفاده از API Gateway معرفی میگردند.
یک دروازه API بخشی از سیستم مدیریت API است. یک دروازه API تمام درخواستهای دریافتی را جدا و رهگیری میکند و آنها را از طریق سیستم مدیریت API ارسال میکند که انواع توابع ضروری را مدیریت میکند. کاری که API gateway انجام میدهد، از یک اجرا به اجرای و از یک پیادهسازی به پیادهسازی دیگر متفاوت است. نقش اصلی آن این هست که به عنوان یک نقطه ورودی و فرایند استاندار شده برای تراکنشها بین برنامههای یک سازمان، دادهها و سرویسها، میکروسرویسها و اعمال سیاستها برای تشخیص دسترسپذیری و رفتار آنها و مشتریان داخلی و خارجی عمل میکند. API gateway میتواند عملکردهای مختلفی را برای پشتیبانی و مدیریت استفاده از APIها انجام دهد.
شبیه به طراحی API است که روی نحوه ایجاد API، نتیجه و نحوه اجرای آن تمرکز دارد. معماری API کل فرایند و متدلوژی برای اجرا و افشای APIها را تعریف میکند. این معماری شامل دروازه API که خود دارای نحوه امنیت API، حافظه نهان و تنظیمات مربوط به کار هست، توسعه یک پورتال API برای تحلیل API، مستند API، APIهای بازاریابی، ایجاد اطمینان از کار با برنامههای موبایل و وب و تعریف نحوه قرار گرفتن آنها در معرض توسعه دهندگان داخلی، شریک و سوم شخص است. دروازه API میتواند سربار احراز هویت یک فراخوانی API را از خارج مدیریت کند. سپس تمام فراخوانیهای داخلی سبب حذف چکهای امنیتی را حذف میکنند. اگر درخواست از داخل VPC بیاید، میتواند بررسی امنیت را حذف کند، تاخیر شبکه را کمی کاهش میدهد و سبب میشود که توسعه دهندگان بیشتر روی منطق کسب و کار نسبت به نگرانیهای امنیتی تمرکز کنند.
مدیریت و نظارت توسط دروازه API سبب میشود تا به جای تلاش برای ردیابی و مدیریت APIها به صورت مجزا در واقع کسب و کار بتواند دامنه وسیعی از APIها و ادغامها را به صورت متمرکز ببیند و کنترل کند. کاربران و استفادهکنندگان از درگاه API عبارتند از:
دروازه API به عنوان دروازهبانی بین مشتریان API و ارائه دهندگان API است. این نقش گسترده دارای چالشهای منحصر به فردی است که در ادامه بررسی میگردند.
قابلیت اطمینان و انعطافپذیری: هر مانع یا اختلالی در عملکرد درگاههای API ممکن است باعث خرابی سرویسهای مرتبط شود. سازمانها باید در مورد اضافه کردن ویژگیهایی که بر روی عملکرد تاثیر میگذارند محتاط باشند. همچنین به ویژه API gateway یک مرحله فرایند اضافه بین مشتریان و برنامهها یا داده را نمایش میدهند.
امنیت: API gateway یک منبع قابل اعتماد است که بسیاری از زوایای کسب و کار یک شرکت را حس در نظر میگیرد که اگر در معرض خطر قرار گیرد،یک مشکل امنیتی گسترده و جدی است. کسب و کارها باید به دقت رابطهای خارجی را از APIها و سیستمهای داخلی جدا کنند و پارامترهای احراز هویت و مجوز را تعریف کنند.
پیچیدگی و وابستگیها: هر زمانی که یک API یا میکرو سرویس اضافه یا حذف میشود یا تغییر میکند، توسعه دهندگان باید درگاه API را بروزرسانی کنند که در مدلی چالش برانگیز هست که تعدادی برنامه به دهها یا صدها میکروسرویس تبدیل میشوند. ایجاد و پیروی از قوانین طراحی API و میکروسرویسها به کاهش این مشکلات کمک میکنند.
مزیت اصلی API Gateway این هست که سرویسها را از طریق APIها یا میکروسرویسها استاندارد و متمرکز میکند. همچنین به امنیت و سازماندهی یکپارچهسازی مبتنی بر APIها به روشهای متعدد کمک میکند. در ادامه تعدادی از مزایای دروازه API معرفی میگردند.
سادهسازی ارائه خدمات: درگاههای API میتوانند چندین API فراخوانی شده برای درخواست و بازیابی دادهها و سرویسها ترکیب کنند که حجم درخواستها و ترافیک را کاهش میدهد. فرایند API را ساده میکند و رابط کاربری را به ویژه برای موبایل و برنامههای کاربردی بهبود میدهد. همچنین client میتواند همه دادهها را یکباره دریافت کند و نتایج مورد نیاز و مناسب مشتری را ارائه میدهد.
ایجاد انعطافپذیری: درگاههای API بسیار قابل پیکربندی و قابل تنظیم هستند. توسعه دهندگان میتوانند ساختارهای داخلی برنامه را به روشهای مختلف کپسوله کنند تا چندین سرویس back end را فراخوانی کنند و نتایج را جمعآوری کنند. بنابراین برای استفاده از پروتکلهای کاملا مستقل انعطافپذیری وجود دارد که در آن client و میکروسرویس میتوانند با یکدیگر ارتباط برقرار کنند.
گسترش برنامههای قدیمی: سازمانهایی که به برنامههای قدیمی متکی هستند، میتوانند از دروازههای API برای کار با این برنامهها و گسترش عملکرد آنها به عنوان یک جایگزین برای مهاجرت گستردهتر، پیچیدهتر و گرانتر استفاده کنند.
کمک به نظارت و قابلیت مشاهده: بیشتر سازمانها به ابزارهای خاصی برای فعالیت نظارت از طریق APIها متکی هستند و یک فرایند API به این کارها کمک میکنند. API Gateway میتواند به مشخص کردن یک مشکل از طریق نظارت یک رویداد خرابی و خرابیهای جزئی کمک کند.
در این بخش سه مورد ابزارهای منبع باز مهم و کاربردی مورد استفاده برای مدیریت و ایجاد درگاه API معرفی و بررسی میگردند.
محبوبترین ابزار منبع باز برای درگاه API و مبتنی بر ابر است و میتوان آن را به عنوان یک راه حل ترکیبی در فضای ابری یا در محل خود مستقر کرد. که بر روی یک proxy سبک وزن ساخته شده است و بارهای کاری بزرگ و متغیر را پشتیبانی میکند. این ابزار به زبان Lua نوشته شده است و به کمک Nginx اجرا میشود. یک موتور قالب است که سبب تسریع زمان رویداد میشود. عملکرد تاخیر غیر موازی مقیاسپذیری را برای همه برنامههای میکروسرویس را بدون در نظر گرفتن مکان اجرا تضمین میکند و ارائه میدهد. این ابزار دارای ویژگیهایی مانند احراز هویت، کنترل ترافیک، تجزیه و تحلیل، تغییرات و تبدیلات، ورود به سیستم، بدون سرور، قابل توسعه با استفاده از معماری پلاگین، قابلیت اجرا روی پلتفرم دلخواه و مناسب برای مستندسازی و یکپارچهسازی است. این ابزار برای برنامههای مهم سازمانها راه حل ارائه میدهد و به گسترش APIها و میکروسرویسها کمک میکند.
یک درگاه API منبع باز آماده برای سازمانها است و دارای دو گزینه hosted و managed است. این ابزار دارای ویژگیهایی مانند احراز هویت، محدودیت سهمیه و نرخ، کنترل نسخه، رویدادها و اعلانها، نظارت و تحلیل جزئیات، commit کردن به منظور سازگاری عقبگرد، GraphQL خارج از جعبه و موجود بودن در بازار AWS است.
یک درگاه API منبع باز با عملکرد بالا است. عملکرد اصلی آن ایجاد یک API است که بسیاری از میکروسرویسها را در یک نقطه پایانی واحد جمع میکند و کارهای سنگین و سخت مانند تجمیع، تبدیل، انتقال، فیلتر، رمزگشایی، جلو بردن، احراز هویت و ... را به صورت خودکار انجام میدهد. به خوبی ساختاریافته و لایهبندی شده است و برای گسترش عملکرد خود از میانافزار plug-and-play استفاده میکند. همچنین این ابزار نسبت به Try و Kong سرعت بیشتری دارد.
در این بخش دو مورد از شرکتهای فعال در حوزه API Gateway و محصولات آنها معرفی میگردند.
شرکت دانش بنیان پلتکو
این شرکت برای حل مشکل متمرکز نبودن وظایفی مانند فعال بودن مداوم، امنیت، سهولت دسترسی ، نرخ دسترسی و اطلاع دائم و آنلاین از مسائل دیگر وب سرویسها در یک سازمان پلتفرمی یکپارچه برای مدیریت زیر ساخت وب سرویسها ارائه داده است تا بتوان کل چرخه زندگی وب سرویسهای سازمان را از ابتدای بوجود آمدن تا زمان قطع سرویس مدیریت کرد. شرکت پلتکو از طریق API Manager چالشهای سازمانها حل کرده است. سازمانها از طریق API Manager به راحتی میتوانند زیر ساخت کل سرویسهای خود را یکپارچه کنند و با ابزارهای مدیریت بر تمام رخدادهای وب سرویسها نظارت آنلاین داشته باشند این پلتفرم 98 درصد از قطع سیستم، 45 درصد از اتلاف زمان و 50 درصد از اتلاف هزینه جلوگیری میکند. ویژگیهای این محصول و پلتفرم عبارتند از:
شرکت ابر درسا
یک سرویس API Gateway ابری ارائه میدهد که یک سرویس میزبانی API است. این مجموعه وسیعی از توابع مدیریت چرخه زندگی را برای کمک به ایجاد معماری سیستم API محور ارائه میدهد. توابع مدیریت چرخه زندگی شامل طراحی API، توسعه، آزمایش، انتشار، فروش، O&M و نظارت، کنترل امنیت و عدم انتشار است. سرویس API Gateway ابری با استفاده از قابلیتهای سازگاری و یکپارچگی قدرتمند خود،API های سیستمهای تجاری مختلف را مدیریت میکند و API ها را به صورت متمرکز فراخوانی می کند. از جمله قابلیتهای این محصول عبارتند از:
در این مقاله ابتدا در بخش اول به معرفی و بررسی درگاه رابط برنامهنویسی (API Gateway) در حوزه معماری نرمافزار و بهبود زیرساخت توسعه نرمافزار پرداخته شد و سپس در بخش دوم دو مورد از ابزارهای مورد نیاز برای ایجاد درگاه رابط برنامهنویسی (API Gateway)، توسعه و بهبود زیرساخت و رفع مشکلات موجود معرفی شدند و در پایان نیز دو مورد از شرکتهای ایرانی فعال در حوزه ارائه خدمات مربوط به درگاه رابط برنامهنویسی (API Gateway) به همراه محصولاتی که ارائه میدهند معرفی و بیان گردید.
«این مطلب، بخشی از تمرینهای درس معماری نرمافزار در دانشگاه شهیدبهشتی است»