در این پست قصد داریم که مفهوم API Gateway، مزایا و معایب آن، معرفی یک الگو، ابزار های موجود در این زمینه و شرکتهایی که در ایران این خدمات را محیا میکنند را معرفی کنیم.
طبق تعریف گارتنر: ”میکروسرویس یک مؤلفه کاربردی، محصور سازی شده، با حداقل وابستگی(Coupling) که قابل استقرار و مقیاس پذیر مستقل است.“ هدف میکرو سرویسها تجزیه برنامه به میکروسرویسها/ماژولهای با حداقل وابستگی به یکدیگر است. برخلاف برنامههای کاربردی یکپارچه که در آن ماژولها بهشدت به یکدیگر وابسته شدهاند و به عنوان یک تکه ماژول بزرگ و منفرد مستقر میشوند. میکروسرویسها به دلایل زیر مفید خواهند بود:
· هر میکروسرویس را می توان مستقل از خدمات دیگر میکروسرویسها در برنامه مستقر، ارتقا، مقیاس، نگهداری و راهاندازی مجدد کرد.
· توسعه چابک و استقرار چابک با یک تیم متقابل عملکردی مستقل.
· انعطاف پذیری در استفاده از فناوری ها و مقیاس پذیری.
· سرویسهای مختلف با پیوند آزاد بر اساس نیازهای خاص خود مستقر میشوند که در آن هر سرویس دارای مدلAPI دقیق خود برای ارائه خدمات به مشتریان مختلف (وب، موبایل وAPIهای دیگر) است.
بیایید با یک مثال ارزش API Gateway را مشخص کنیم.
بیایید تصور کنیم که در حال ساخت یک فروشگاه آنلاین هستید که از الگوی معماری Microservice استفاده می کند و صفحه جزئیات محصول را پیاده سازی می کنید. شما باید چندین نسخه از رابط کاربری جزئیات محصول را توسعه دهید:
از آنجایی که فروشگاه آنلاین از الگوی معماری Microservice استفاده می کند، داده های جزئیات محصول در چندین سرویس پخش می شود. مثلا،
در نتیجه، کدی که جزئیات محصول را نمایش میدهد باید اطلاعاتی را از همه این خدمات دریافت کند.
در اینجا یک سوال به وجود میآید:
چگونه مشتریان یک برنامه مبتنی بر میکروسرویس به خدمات فردی دسترسی دارند؟
در حالی که فکر می کنیم مشتری مستقیماً با هر یک از میکروسرویس های مستقر شده ارتباط برقرار می کند، چالش های زیر باید در نظر گرفته شود:
1- در مواردی که میکروسرویس APIهای ریز دانه را در معرض دید مشتری قرار می دهد، مشتری باید از هر میکروسرویس درخواست کند. در یک صفحه معمولی، ممکن است برای انجام درخواست، چندین سفر رفت و برگشت سرور مورد نیاز باشد. به عنوان مثال، همانطور که در بالا توضیح داده شد، مشتری که به جزئیات یک محصول نیاز دارد، باید دادهها را از خدمات متعدد واکشی کند.
2- پروتکل ارتباطی متنوع (مانند gRpc، thrift، REST، AMQP و غیره) موجود در میکروسرویسها، پذیرش همه آن پروتکلها را برای مشتری چالش برانگیز و حجیم میکند.
3- عملکردهای دروازه مشترک (مانند احراز هویت، مجوز، ورود به سیستم) باید در هر میکروسرویس پیاده سازی شود.
4- ایجاد تغییرات در میکروسرویس ها بدون ایجاد اختلال در اتصال مشتری مشکل خواهد بود. به عنوان مثال هنگام ادغام یا تقسیم سرویسهای ریز، ممکن است نیاز به کدگذاری مجدد بخش مشتری باشد.
5- عملکرد شبکه برای انواع مختلف مشتریان متفاوت است. به عنوان مثال، یک شبکه تلفن همراه به طور معمول بسیار کندتر است و تاخیر بسیار بالاتری نسبت به یک شبکه غیر همراه دارد. و البته، هر WAN بسیار کندتر از یک LANاست. این بدان معناست که یک کلاینت تلفن همراه بومی از شبکه ای استفاده می کند که ویژگی های عملکردی بسیار متفاوتی نسبت به LANمورد استفاده توسط یک برنامه وب سمت سرور دارد. برنامه وب سمت سرور میتواند چندین درخواست برای سرویسهای پشتیبان ارائه دهد بدون اینکه تأثیری بر تجربه کاربر داشته باشد، در حالی که به عنوان یک مشتری تلفن همراه فقط میتواند تعداد کمی را انجام دهد.
6- تعداد نمونه های سرویس و مکان آنها (میزبان + پورت) به صورت پویا تغییر می کند.
7- پارتیشن بندی به خدمات می تواند در طول زمان تغییر کند و باید از مشتریان پنهان شود.
راه حل چالشهای مطرح شده توسط API Gateway برطرف میشود.
یک API Gateway لایهایی است که در مقابل یک API(رابط برنامهنویسی کاربردی) قرار میگیرد و یک نقطه ورودی برای APIهای Back-end و میکروسرویسهای تعریف شده (که میتوانند داخلی و خارجی باشند) است.
API مخفف Application Program Interface است. مجموعه ای از دستورالعمل ها، پروتکل ها و ابزارها برای ساخت برنامه های نرم افزاری است و نحوه تعامل اجزای نرم افزار را مشخص می کند.
در جلوی API ها، دروازه به عنوان محافظ عمل می کند، امنیت را اعمال می کند و مقیاس پذیری و در دسترس بودن بالا را تضمین می کند. به بیان ساده، API Gateway تمام درخواستهای API را از مشتری دریافت میکند، تعیین میکند که کدام سرویسها مورد نیاز هستند، و آنها را در یک تجربه یکپارچه و یکپارچه برای کاربر ترکیب میکند.
API Gateway همچنین مسئول مسیریابی درخواست، ترکیب و ترجمه پروتکل است. تمام درخواست های ارسال شده توسط مشتری از طریق دروازهAPI انجام می شود. پس از آن، API Gateway درخواست ها را به میکروسرویس مناسب هدایت می کند. API Gateway درخواست را به یکی از دو روش زیر رسیدگی می کند:
1- درخواست ها را به سرویس مربوطه روت یا پروکسی کرد.
2-گسترش(Fan out) یک درخواست به چندین سرویس.
یک API Gatewayمی تواند برای هر مشتری یک API سفارشی ارائه کند. همچنین بین دو پروتکل مانند HTTP، WebSockets و پروتکل های Web-Unfriendly که به صورت داخلی استفاده می شوند، ترجمه می شود.
به عنوان مثال نمونه محبوب API Gateway Netflix API Gatewayاست. خدمات پخش Netflixدر صدها نوع مختلف دستگاه مانند تلویزیون، ست تاپ باکس، گوشی های هوشمند، تبلت ها و غیره در دسترس است. این سرویس تلاش می کند یک API یک اندازه برای سرویس پخش خود ارائه دهد.
همانطور که گفته شد، برای رسیدگی به چالش های ذکر شده در بالا، یک لایه اضافی (API Gateway) معرفی شده است که بین مشتری و سرور قرار می گیرد و به عنوان یک درخواست مسیریابی پروکسی معکوس از مشتری به سرور عمل می کند.
به طور خلاصه، دقیقاً به عنوان مدیریت API عمل می کند، اما مهم است که مدیریت API را با API Gateway اشتباه نگیرید.
گیتوی با احاطه کردن سیستم زیربنایی و جدا شدن از مشتریان، یک نقطه ورودی واحد را برای مشتری فراهم میکند تا با سیستم میکروسرویس ارتباط برقرار کند.
چگونه یک دروازه APIاز DevOps و محیط های بدون سرور پشتیبانی می کند
در سازمانهایی که از رویکرد DevOps پیروی میکنند، توسعهدهندگان از میکروسرویسها برای ساخت و استقرار برنامهها به روشی سریع و تکراری استفاده میکنند. API ها یکی از رایج ترین راه های ارتباط میکروسرویس ها هستند.
علاوه بر این، توسعه ابر، از جمله مدل بدون سرور، به APIها برای تامین زیرساخت بستگی دارد. شما می توانید توابع بدون سرور را مستقر کرده و با استفاده از یک API Gateway مدیریت کنید. به طور کلی، همانطور که یکپارچگی و اتصال به یکدیگر مهم تر می شوند، APIها نیز اهمیت بیشتری پیدا می کنند. و با افزایش پیچیدگی APIو افزایش استفاده، ارزش دروازه API نیز افزایش می یابد.
این یک تغییر از الگوی API Gatewayاست. به جای یک نقطه ورودی واحد برای مشتریان، چندین دروازه را بر اساس مشتری ارائه می دهد. هدف این است که APIهای متناسب با نیازهای مشتری را ارائه دهیم و بسیاری از نفخ های ناشی از ساخت APIهای عمومی برای همه مشتریان را از بین ببریم.
اما سوال اصلی اینجاست که به چند BFFنیاز داریم؟
مفهوم اصلی BFF توسعه پشتیبانهای خاص برای هر تجربه کاربری است. دستورالعمل فیل کالکادو «یک تجربه، یک BFF» است. اگر الزامات در بین کلاینتها (کلاینت IOS، کلاینت اندروید، مرورگر وب و غیره) به طور قابل توجهی متفاوت باشد و زمان بازاریابی یک پروکسی یا API مشکل ساز شود، BFFها راه حل خوبی هستند. همچنین باید توجه داشت که طراحی پیچیده تر نیاز به یک راه اندازی پیچیده دارد.
ابزار Apigee یکی از ابزارهای مدیریت API برتر است که برای هر برنامه کاربردی، سیستم ضبط و اینترنت اشیا قابل استفاده است. این راه حل نرم افزاری به شما امکان طراحی، ایمن سازی، تجزیه و تحلیل و مقیاس بندی API ها را میدهد. برای گفتن بیشتر، Apigee شما را قادر می سازد API های خود را به طور کامل کنترل کنید و نحوه عملکرد سیستم را نظارت کنید.
از جمله ویژگی های Apigee:
در Apigee چهار طرح قیمت گذاری را ارائه می دهد - Evaluation، Standard، Enterprise و Enterprise Plus. طرح ارزیابی بدون هزینه است.
ابزار MuleSoft یکی دیگر از ابزارهای درجه یک مدیریت API برای یکپارچه سازی برنامه ها است. همچنین مدیریت و ساخت APIهای عالی را ارائه می دهد. به علاوه، از همان ابتدا راه حل هایی را برای ایجاد یک شبکه برنامه پیشنهاد می کند.
چنین راهکارهایی به شما در مدیریت کاربران و تحلیل ترافیک دریافتی کمک می کند. آنها همچنین شامل سیاست هایی هستند که امنیت API را ارتقا می دهد و سیستم شما را از حملات سایبری جلوگیری می کند.
برخی از ویژگی های اساسی آن عبارتند از:
ابزار MuleSoft یک گزینه آزمایشی رایگان را پیشنهاد می کند تا بتوانید ابزارها را کاوش کرده و آنها را در محل کار مشاهده کنید. در میان قیمت گذاری پیشنهادی، طرح طلا، پلاتین و تیتانیوم وجود دارد.
ابزار Kong از راهحلهای سراسری برای شرکتهایی که بر حل مشکلات برنامه کاربردی تمرکز دارند، پشتیبانی میکند. ابزار Kong Gateway و Kong Enterpriseمی توانند به شما در کنترل و مدیریت API ها کمک کنند. آخرین مورد نیز یک ابزار منبع باز است.
برخی از ویژگی های Kong عبارتند از:
می توانید Kong Gateway را به صورت رایگان دانلود کنید. برای نسخه Enterprise، می توانید یک نسخه آزمایشی نرم افزار رایگان درخواست کنید.
پلتفرم مدیریت API سورنا توسعهدهندگان را قادر میسازد تا برنامههایی مرتبط با سامانههای داخلی سازمان/سرویسدهنده طراحی و پیادهسازی نمایند. همچنین APIها در تکنولوژیهای مختلف نظیر اینترنت اشیا، رایانش ابری و دادههای حجیم نقشی کلیدی را ایفا مینماید. پلتفرم مدیریت API سورنا پایداری، امنیت و پشتیبانی ویژهای ارائه میکند تا شرکتهای طرف ثالث، همکاران، شرکا و حتی توسعهدهندگان آزاد بتوانند با آسودگی خیال و اطمینان از آنها استفاده نمایند.
این شرکت نیز یکی از شرکتهایی است که سرویس API Gateway ابری را ارائه میدهد.
یک API بی فایده است مگر اینکه با کیفیت ثابت ارائه شود. یک Gateway برای کمک به اطمینان از عملکرد عالی، در دسترس بودن بالا و مقیاس پذیری الاستیک API ها از طریق امکان دادن به شرکت ها برای شروع تحویل با خدمات پشتیبانی یکسان، از جمله مدیریت ترافیک، تحول و یکپارچه سازی سیستم، حیاتی است.
«این مطلب، بخشی از تمرینهای درس معماری نرمافزار در دانشگاه شهیدبهشتی است»
https://www.axway.com/en/products/api-management/gateway
https://microservices.io/patterns/apigateway.html
https://www.javatpoint.com/introduction-to-api-gateways
https://blog.devgenius.io/microservices-design-api-gateway-pattern-980e8d02bdd5
https://www.softwaretestinghelp.com/api-management-tools/
http://vasl.ir/platform/api-management/