زمانی که یک برنامه با استفاده از معماری میکروسرویس تولیدمیشود، در واقع مجموعهای از سرویس های کوچک که بر مبنای اصل Single Responsibility طراحی شده اند ایجاد می شود. یکی از جنبه های مهم برنامه های مبتنی براین معماری چگونگی دسترسی مشتری یا فراخوانی سرویس ها می باشد. برنامههای متداول این مشکل بزرگی نیست و با ارائه url سرویس انجام می شود چراکه تعداد سرویس ها کم است.
اما در سیستم های مبتنی بر معماری میکروسرویس ،مانند سایت آمازون، در راهاندازی یک صفحه وب،صدها سرویس درگیر هستند. به طور معمول برنامههای کاربردی مدرن مانند LinkedIn، eBay، آمازون، یا هر برنامه با مشتریان و خدمات فراوان تمایل دارند وب سایتهای بزرگتر داشته باشند و بدیهی است که آنها باید با تعداد زیادی از سرویس ها سروکار داشته باشند. بنابراین، طراحی این که چگونه مشتریان میخواهند به سرویس ها دسترسی داشته باشند یک برنامه مبتنی بر معماری میکروسرویس مهم میشود. موارد زیر چالشهای کلیدی در دسترسی / ارتباط مستقیم بین یک برنامه مشتری و یک برنامه میکروسرویس است :
به منظور کاهش مشکلات فوق، مفهوم API Gateway توسعهیافته است. یک API Gateway به عنوان نقطه ورود واحد عمل میکند و فراخوانی سرویس ها از بیرون شبکه محلی را با سرعت بالا ممکن میسازد.اگر یک مشتری ارتباط مستقیمی با سرویس بدون یکAPI Gateway برقرار کند ، ، درخواستها می باید از مسیر اینترنت عبور کنند، که عملکرد ضعیفی را در تعداد درخواست بالا دارد.اما هنگامی که مشتری درخواست خود را به API Gateway میدهد، API Gateway سرویس را در یک شبکه محلی با سرعت بالا فرامی خواند.
هدف اصلی API Gateway ارائه یک نقطه ورود میانی برای یک برنامه مبتنی بر معماری میکروسرویس است. علاوه بر این, برای ارائه کارکرد های زیر طراحی شدهاست :
یک API Gateway درواقع یک انتزاع سطح بالاتر برای سیستم داخلی می باشد و می تواند API مخصوص به هر مشتری را فراهم کند، نکته حائز اهمیت این است که یک مشتری میتواند با استفاده از انواع مختلفی از دستگاهها به برنامه دسترسی داشته باشد مانند :
انواع مختلفی از مشتریان مانند مشتریان موبایل، مرورگرها و یا برنامههای کاربردی سرورهای سنتی و یا سرویس های دیگر،ممکن است با API Gateway تعامل داشته باشند.
در نرمافزار های مبتنی بر میکروسرویس ممکن است از API REST، Apache Thrift و یا Google Protobuf و یا ترکیبی از اینها برای ارائه API خود استفاده کنند. حالا سوال این است که چگونه API هایی باطراحی عمومی با انواع مشتریان تعامل خواهند داشت. در اینجا، API Gateway نقش حیاتی بازی میکند. در واقع API Gateway ، سرویس های مخصوص مشتری را با کد رابط مورد نیاز هر API راایجاد میکند و تعامل با انواع مختلف مشتریان را تسهیل میکند.
موقعیتهایی زیادی وجود دارد که در برای برآورده شدن نیاز مشتری می بایست بیش از یک سرویس فراخوانی و استفاده شود . بطور مثال فرض کنید مشتری سرویسی برای دریافت برنامه سفر نیاز داشته باشد. همانطور که در شکل پایین نشانداده شدهاست، این سرویس را میتوان با استفاده از سه سرویس اتمیک(منظور کوچکترین واحد طراحی سرویس می باشد) از حوزههای مختلف ارائه کرد که در این مثال سرویس ها شامل سرویس رزرو بلیط قطار, سرویس رزرو هتل, و سرویس رزرو وسیله نقلیه اجاره ای در مقصد هستند. همانطور که درشکل مشخص است در پاسخ به در خواست مشتری برای دریافت برنامه سفر API Gateway سه سرویس اشاره شده در بالا را باهم ترکیب می کند
درواقع API Gateway تعداد رفت و برگشت های بین برنامه مشتری و برنامه مبتنی بر میکروسرویس را با ترکیب سه سرویس به مراتب کاهش میدهد.قبل از ترکیب دو جنبه باید در نظر گرفته شود یکم) تمای سرویس هایی که برای پاسخ به یک درخواست نیاز است کدامند دوم) سرویس ها با چه ترتیب و الگوی اجرایی ،فراخوانی شوند.بطور کلی دو تکنیک برای ترکیب سرویس ها وجود دارد الف) orchestration سرویس ها ، درجایی که یک هماهنگ کننده متمرکز، اجرای گردش های فرآیند های کسب وکار را بر عهده خواهد داشت ب)choreography ،جایی که هماهنگ کننده متمرکزی وجود ندارد و منطق موجود در فرآیند کسب وکار بین سرویس ها مختلف توزیع شده است و سرویس ها می بایست بایکدیگر تعامل کنند