طبق تعریف گارتنر: «میکروسرویس، یک مؤلفه کاربردی با محدوده محکم (Tightly Scoped)، محصور سازی شده، با حداقل وابستگی (Loosely Coupled)، قابل استقرار و مقیاس پذیر به طور مستقل است.»
برخلاف برنامه های کاربردی یکپارچه (monolithic) که در آن ها ماژول ها بسیار به هم وابسته هستند و به عنوان یک تکه بزرگ منفرد، استقرار می یابند، هدف میکروسرویس ها، تجزیه و تقسیم کافی برنامه به تعدادی ماژول (میکروسرویس) با حداقل وابستگی نسبت به هم است. استفاده از معماری مبتنی بر میکروسرویس، به دلایل زیر مفید خواهد بود:
سرویسهای مختلف مستقل، بر اساس نیازهای خاص خود مستقر میشوند که در آن هر سرویس، دارای مدل API دقیق خود برای ارائه خدمات به مشتریان مختلف (وب، موبایل و APIهای شخص ثالث) است.
برای ارتباط مستقیم مشتری (Client) با هر یک از میکروسرویس های استقرار یافته، چالش های زیر را باید در نظر گرفت:
برای رسیدگی به چالشهای ذکر شده، یک لایه اضافی معرفی شده است که بین مشتری و سرور قرار میگیرد و به عنوان یک درخواست مسیریابی پروکسی معکوس، از مشتری به سرور عمل میکند. مشابه الگوی نما (Facade Pattern) در طراحی شی گرا، یک نقطه ورودی واحد برای API ها فراهم می کند که معماری سیستم زیرین را محصور می کند و به آن API Gateway می گویند.
به طور خلاصه، دقیقاً به عنوان API Management عمل می کند، اما مهم است که API Management را با API Gateway اشتباه نگیرید؛ یک دروازه API، به سرور پراکسی فردی اشاره دارد، در حالی که مدیریت API به راهحل کلی مدیریت API ها در تولید اشاره دارد که شامل مجموعهای از دروازه های API که در یک خوشه عمل میکنند، رابط کاربری مدیریتی و... می باشد.
Gateway با احاطه کردن سیستم زیربنایی و جدا شدن (Decoupling) از مشتریان، یک نقطه ورودی واحد را برای مشتری فراهم میکند تا با سیستم میکروسرویس ارتباط برقرار کند.
دروازه API به جای اینکه هر میکروسرویس را پیاده سازی کند، قابلیت های لبه را یکپارچه می کند. برخی از این قابلیت ها عبارتند از:
علاوه بر مورد بالا، مواردی دیگری از جمله محدود کردن نرخ ورودی و مقیاس پذیری را می توان به دروازه API
سپرد.
Kong Gateway یک دروازه API متن باز و سبک وزن است که برای میکروسرویس ها بهینه شده است و عملکرد تأخیر و مقیاس پذیری بی نظیری را ارائه می دهد. اگر فقط اصول اولیه را می خواهید، این گزینه برای شما کار خواهد کرد. با افزودن گره های بیشتر به راحتی به صورت افقی مقیاس پذیر است. از بارهای کاری بزرگ و متغیر با تأخیر بسیار کم پشتیبانی می کند.
Kong Gateway را می توانید به صورت رایگان از لینک زیر دریافت کنید:
دروازه Akana API، مولفه کلیدی پلتفرم Akana API است. Akana، ایجاد و مدیریت لایه تعامل API را آسان می کند و ساده ترین راه برای تبدیل ایمن، بدون کاهش سرعت را فراهم می کند؛ بنابراین، به راحتی می توانید در هر مکانی با امنیت قوی مستقر شوید.
چرا از Akana استفاده کنیم؟
برخی از پایه های رایج برای ارزیابی ابزار ها، عبارتند از: سادگی، متن باز در مقابل مناسب بودن، مقیاس پذیری و انعطاف پذیری، امنیت، قابلیت ها، میزان جمعیتی که از آن استفاده می کنند، مدیریتی و اجرایی (پشتیبانی، نظارت و استقرار)، تامین محیط (نصب، پیکربندی، ارائه میزبانی)، قیمت گذاری، و مستندات.
ابر درسا یک شرکت ارائه دهنده سرویس های ابری است که محصولات زیر را ارائه می کند:
برای کار با سرویس API Gateway، یک پنل در اختیار مشتری قرار می گیرد که از طریق آن مشتری می تواند تعیین کند که برای دسترسی به هر صفحه، به کدام سرور درخواست زده شود که برای اینکار نیز از الگوریتم های مختلفی استفاده کرد.
سرویس API Gateway ابری درسا، قابلیت های زیر را دارد:
پلتفرم مدیریت API سورنا، توسعهدهندگان را قادر میسازد تا برنامههایی مرتبط با سامانههای داخلی سازمان/سرویسدهنده طراحی و پیادهسازی نمایند. همچنین APIها در تکنولوژیهای مختلف نظیر اینترنت اشیا، رایانش ابری و دادههای حجیم نقشی کلیدی را ایفا مینماید. پلتفرم مدیریت API سورنا، پایداری، امنیت و پشتیبانی ویژه ای ارائه میکند تا شرکتهای طرف ثالث، همکاران، شرکا و حتی توسعهدهندگان آزاد، بتوانند با آسودگی خیال و اطمینان از آنها استفاده نمایند.
در این مقاله، مفهومی به نام API Gateway در معماری میکروسرویس را معرفی کرده و به آن پرداختیم؛ ابتدا چالش های ارتباط مشتریان با میکروسرویس ها را بیان کرده و به ضرورت استفاده از API Gateway در معماری میکروسرویس پی بردیم؛ در ادامه قابلیت هایی که دروازه API در اختیار ما می گذارد را معرفی کرده و به مزایا و معایب آن پرداختیم. در نهایت تعدادی از سرویس دهنده های ایرانی دروازه API و همچنین ابزار های متن باز برای استفاده از دروازه های API را معرفی کردیم.
«این مطلب، بخشی از تمرینهای درس معماری نرمافزار در دانشگاه شهیدبهشتی است.»
https://microservices.io/index.html
https://dzone.com/articles/api-management-vs-api-gateway-and-where-does-api-a
https://blog.devgenius.io/microservices-design-api-gateway-pattern-980e8d02bdd5
https://github.com/Kong/kong
https://www.akana.com/products/api-platform/api-gateway
https://dorsacloud.com
http://vasl.ir