آشنایی با API Gateway

طبق تعریف گارتنر: «میکروسرویس، یک مؤلفه کاربردی با محدوده محکم (Tightly Scoped)، محصور سازی شده، با حداقل وابستگی (Loosely Coupled)، قابل استقرار و مقیاس پذیر به طور مستقل است.»برخلاف برنامه های کاربردی یکپارچه (monolithic) که در آن ها ماژول ها بسیار به هم وابسته هستند و به عنوان یک تکه بزرگ منفرد، استقرار می یابند، هدف میکروسرویس ها، تجزیه و تقسیم کافی برنامه به تعدادی ماژول (میکروسرویس) با حداقل وابستگی نسبت به هم است. استفاده از معماری مبتنی بر میکروسرویس، به دلایل زیر مفید خواهد بود:هر میکروسرویس را می توان مستقل از سایر میکروسرویس های اپلیکیشن، استقرار، به روز رسانی، نگهداری و راه اندازی مجدد کرد.توسعه و استقرار چابک هر میکروسرویس توسط یک تیم مستقل.در توسعه هر میکروسرویس، از تکنولوژی های دلخواه و متفاوت با سایر میکروسرویس ها می توان استفاده کرد. مقیاس پذیریسرویس‌های مختلف مستقل، بر اساس نیازهای خاص خود مستقر می‌شوند که در آن هر سرویس، دارای مدل API دقیق خود برای ارائه خدمات به مشتریان مختلف (وب، موبایل و APIهای شخص ثالث) است.ارتباط مشتری با میکروسرویس هاارتباطات در میکروسرویس هابرای ارتباط مستقیم مشتری (Client) با هر یک از میکروسرویس های استقرار یافته، چالش های زیر را باید در نظر گرفت:در مواردی که میکروسرویس، API های ریز دانه را در معرض دید مشتری قرار می دهد، مشتری باید به هر میکروسرویس، درخواست بفرستد. در یک صفحه معمولی، ممکن است برای انجام درخواست، چندین سفر رفت و برگشت به سرور (multiple server round trips)، مورد نیاز باشد. این ممکن است حتی برای دستگاه های دارای شبکه کم کار، مانند تلفن همراه، بدتر باشد.پذیرش پروتکل های ارتباطی متنوع (مانند gRPC، thrift، REST، AMQP و غیره) موجود در میکروسرویس ها، برای مشتری چالش برانگیز و حجیم است.توابع عملکردی دروازه (Gateway) مشترک (مانند احراز هویت، مجوز ورود به سیستم)، باید در هر میکروسرویس پیاده سازی شوند.ایجاد تغییرات در میکروسرویس ها بدون ایجاد اختلال در اتصال مشتری، دشوار خواهد بود؛ به عنوان مثال هنگام ادغام یا تقسیم میکروسرویس ها، ممکن است نیاز به کدگذاری مجدد بخش مشتری باشد.API Gateway چیست؟برای رسیدگی به چالش‌های ذکر شده، یک لایه اضافی معرفی شده است که بین مشتری و سرور قرار می‌گیرد و به عنوان یک درخواست مسیریابی پروکسی معکوس، از مشتری به سرور عمل می‌کند. مشابه الگوی نما (Facade Pattern) در طراحی شی گرا، یک نقطه ورودی واحد برای API ها فراهم می کند که معماری سیستم زیرین را محصور می کند و به آن API Gateway می گویند.به طور خلاصه، دقیقاً به عنوان API Management عمل می کند، اما مهم است که API Management را با API Gateway اشتباه نگیرید؛ یک دروازه API، به سرور پراکسی فردی اشاره دارد، در حالی که مدیریت API به راه‌حل کلی مدیریت API ها در تولید اشاره دارد که شامل مجموعه‌ای از دروازه‌ های API که در یک خوشه عمل می‌کنند، رابط کاربری مدیریتی و... می باشد.دروازه API میکروسرویسقابلیت های API GatewayمسیریابیGateway با احاطه کردن سیستم زیربنایی و جدا شدن (Decoupling) از مشتریان، یک نقطه ورودی واحد را برای مشتری فراهم می‌کند تا با سیستم میکروسرویس ارتباط برقرار کند.بارگذاریدروازه API به جای اینکه هر میکروسرویس را پیاده سازی کند، قابلیت های لبه را یکپارچه می کند. برخی از این قابلیت ها عبارتند از:احراز هویت (Authentication) و تعیین مجوز (authorization)ادغام کشف خدمات (Service discovery integration)ذخیره پاسخدوباره امتحان کردن سیاست ها، قطع کننده مدار و QOSمحدود کردن نرخ و گلوگاهایجاد تعادل بارثبت رخداد ها، ردیابی و همبستگیهدرها، رشته های پرس و جو و تبدیل ادعاها (claims transformation)Whitelist کردن ipIAMثبت متمرکز رخداد ها (شناسه تراکنش در سرورها، خطا ها)ارائه دهنده هویت، احراز هویت و تعیین مجوزمزایای API Gatewayبه جای فراخوانی یک سرویس خاص، مشتری مستقیماً با دروازه API صحبت می کند.برای هر نوع مشتری، یک API خاص ارائه می کند.از آنجایی که دروازه API بین برنامه های کاربردی Front-end و میکروسرویس ها قرار می گیرد، به عنوان یک مانع امنیتی عمل می کند و مطمئن می شود که نقاط حساس انتهایی API، در معرض دید قرار نگرفته اند. همچنین API را از بردارهای حمله مخرب مانند حملات DoS، تزریق SQL و چندین حمله مشابه دیگر که از آسیب پذیری های API استفاده می کنند محافظت می کند.به جای پیاده سازی تکراری احراز هویت و تعیین مجوز در هر یک از سرویس ها، می توان این دو قابلیت را در API Gateway پیاده سازی کرد؛ اگر این دو قابلیت را در هر یک از سرویس ها به طور جداگانه قرار دهیم باعث کندی سیستم می شود؛ زیرا به تعداد سرویس های درخواستی از طرف یک مشتری، باید احراز هویت و تعیین مجوز انجام شود و در صورتی که بخواهیم تغییراتی را در قواعد این دو قابلیت اعمال کنیم، باید برای هر سرویس این تغییرات را انجام دهیم؛ بنابراین بهتر است که احراز هویت و تعیین مجوز را بر عهده دروازه API بگذاریم. علاوه بر مورد بالا، مواردی دیگری از جمله محدود کردن نرخ ورودی و مقیاس پذیری را می توان به دروازه API سپرد.API Gateway برای Monitoring و بررسی مواردی مرتبط با درخواست‌های ارسال شده به سرویس ها، میزان پاسخ دهی موفق به آن ها در شرایط متفاوت و... نمودار‌های مختلفی را در اختیار توسعه دهندگان قرار می دهد و از این رو آن ها می‌توانند به سرعت از مشکلات موجود، باخبر شده و برای رفع آن‌ها اقدام کنند.نقاط ضعف API Gatewayتنها نقطه ممکن برای Failure یا گلوگاهافزایش زمان پاسخ به دلیل پرش اضافی شبکه از طریق دروازه API خطر پیچیدگی به دلیل قرار گرفتن تعداد زیادی قانون در یک مکانابزار های متن باز در زمینه API Gatewayابزار KongKong Gateway یک دروازه API متن باز و سبک وزن است که برای میکروسرویس ها بهینه شده است و عملکرد تأخیر و مقیاس پذیری بی نظیری را ارائه می دهد. اگر فقط اصول اولیه را می خواهید، این گزینه برای شما کار خواهد کرد. با افزودن گره های بیشتر به راحتی به صورت افقی مقیاس پذیر است. از بارهای کاری بزرگ و متغیر با تأخیر بسیار کم پشتیبانی می کند.Kong Gateway را می توانید به صورت رایگان از لینک زیر دریافت کنید:https://github.com/Kong/kongابزار Akana API Gatewayدروازه Akana API، مولفه کلیدی پلتفرم Akana API است. Akana، ایجاد و مدیریت لایه تعامل API را آسان می کند و ساده ترین راه برای تبدیل ایمن، بدون کاهش سرعت را فراهم می کند؛ بنابراین، به راحتی می توانید در هر مکانی با امنیت قوی مستقر شوید.چرا از Akana استفاده کنیم؟قدرت: از داده های پشت API های خود، با اطمینان و بدون زحمت محافظت کنید.تاب آوری: اجازه دهید آکانا دروازه بان زمان اجرای شما باشد و کارهای سنگین را انجام دهد.انعطاف‌پذیری: دروازه Akana API را در هر مکانی قرار دهید و آن را به صورت مرکزی مدیریت کنید.انتخاب درست API Gatwayبرخی از پایه های رایج برای ارزیابی ابزار ها، عبارتند از: سادگی، متن باز در مقابل مناسب بودن، مقیاس پذیری و انعطاف پذیری، امنیت، قابلیت ها، میزان جمعیتی که از آن استفاده می کنند، مدیریتی و اجرایی (پشتیبانی، نظارت و استقرار)، تامین محیط (نصب، پیکربندی، ارائه میزبانی)، قیمت گذاری، و مستندات.شرکت های ایرانی ارائه دهنده خدمات API Gatewayابر درساابر درسا یک شرکت ارائه دهنده سرویس های ابری است که محصولات زیر را ارائه می کند:سرور ابریسرویس Dynamic CDNسرویس API Gateway ابریسرویس Payment Gateway ابریسرویس SMS Gateway ابریبرای کار با سرویس API Gateway، یک پنل در اختیار مشتری قرار می گیرد که از طریق آن مشتری می تواند تعیین کند که برای دسترسی به هر صفحه، به کدام سرور درخواست زده شود که برای اینکار نیز از الگوریتم های مختلفی استفاده کرد.سرویس API Gateway ابری درسا، قابلیت های زیر را دارد:از محیط های ناهمگن شبکه پشتیبانی می کند؛ سرویس Api Gateway ابری می تواند API های سیستم های تجاری شما را مدیریت کند، صرف نظر از اینکه سیستم های تجاری شما در ابر درسا ، در مراکز داده محلی یا ابرهای شخص ثالث مستقر شده اند یا خیر.ساخت انواع معماری فنی: معماری بدون سرور، ترکیبی از Function Compute و API Gateway به توسعه دهندگان امکان می دهد تا کد را کشف کرده و به سرعت خدمات کم هزینه، بسیار در دسترس و مقیاس پذیر در زمان واقعی را ایجاد کنند. این معماری توسعه مشاغل مرتبط با دستگاه های تلفن همراه، برنامه های وب، اینترنت اشیا (IoT) بازار ابر را تسهیل می کند. این معماری امکانات توسعه تجارت و مرزهای تجاری را گسترش می دهد. انعطاف پذیری ترکیبات محصول بهبود یافته است.معماری میکروسرویس: سرویس Api Gateway ابری به عنوان یک سرویس ابری بالغ عمل می کند که اجازه دسترسی به خوشه های برنامه Kubernetes را می دهد. این به طور قابل توجهی قابلیت های سرویس خوشه های برنامه Kubernetes را بهبود می بخشد. این معماری به عنوان معماری استاندارد برای برنامه های کاربردی اینترنت در مقیاس بزرگ عمل می کند.شرکت وصلپلتفرم مدیریت API سورنا، توسعه‌دهندگان را قادر می‌سازد تا برنامه‌هایی مرتبط با سامانه‌های داخلی سازمان/سرویس‌دهنده طراحی و پیاده‌سازی نمایند. همچنین APIها در تکنولوژی‌های مختلف نظیر اینترنت اشیا، رایانش ابری و داده‌های حجیم نقشی کلیدی را ایفا می‌نماید. پلتفرم مدیریت API سورنا، پایداری، امنیت و پشتیبانی ویژه ای ارائه می‌کند تا شرکت‌های طرف ثالث، همکاران، شرکا و حتی توسعه‌دهندگان آزاد، بتوانند با آسودگی خیال و اطمینان از آنها استفاده نمایند.جمع بندیدر این مقاله، مفهومی به نام API Gateway در معماری میکروسرویس را معرفی کرده و به آن پرداختیم؛ ابتدا چالش های ارتباط مشتریان با میکروسرویس ها را بیان کرده و به ضرورت استفاده از API Gateway در معماری میکروسرویس پی بردیم؛ در ادامه قابلیت هایی که دروازه API در اختیار ما می گذارد را معرفی کرده و به مزایا و معایب آن پرداختیم. در نهایت تعدادی از سرویس دهنده های ایرانی دروازه API و همچنین ابزار های متن باز برای استفاده از دروازه های API را معرفی کردیم.«این مطلب، بخشی از تمرینهای درس معماری نرم‌افزار در دانشگاه شهیدبهشتی است.»مراجعhttps://microservices.io/index.htmlhttps://dzone.com/articles/api-management-vs-api-gateway-and-where-does-api-ahttps://blog.devgenius.io/microservices-design-api-gateway-pattern-980e8d02bdd5https://github.com/Kong/konghttps://www.akana.com/products/api-platform/api-gatewayhttps://dorsacloud.comhttp://vasl.ir