در مفهوم API Gateway یک واسط کاربری است که میان کلاینت و سرویس قرار میگیرد و سطح انتزاعی را بین آنها ایجاد میکند .
با وجود API Gateway دیگر نیازی نیست که کلاینت برای دریافت دادههای مورد نیاز با چندین سرویس تعامل کند. درخواست خود را به API Gateway ارسال میکند و این API Gatewayاست که تشخیص میدهد برای پاسخ به درخواست کلاینت به کدام سرویسها باید درخواست بدهد و سرویسها پاسخ خود را به API Gateway ارسال میکنند و API Gateway پاسخ نهایی را برای کلاینت ارسال میکند. بنابراین زمانیکه تعداد درخواستها بالا میرود زمان پاسخ به کلاینت ها به شکل چشمگیری کاهش پیدا نمیکند و هر یک از کلاینت ها طی مدت زمان مطلوبی می توانند داده های مورد نیازشان را دریافت کنند.توجه داشت که API Gateway بهخودیخود مفهوم کاملی نیست و بهتنهایی کاربردی ندارد، ولی وقتی درون مجموعه قرار میگیرد یک وظیفهی مشخص را انجام میدهد و مجموعه را کامل میکند . بهطورکلی اگرچه هر سرویس با حداکثر خودمختاری مسئول انجام یک کارکرد مشخص در دامنه سیستم است ،اما مدیریت کل سیستم و انجام اموری نظیر احراز هویت، تقسیم بار، مجوز دهی، لاگ گیری، مانیتورینگ و غیره نیاز به یک مدیریت/ ابزار متمرکز غیر از سرویسها دارد که میتواند توسط API Gateway پیادهسازی شود. درصورتیکه از این الگو استفاده نشود کلیه موارد مدیریتی ذکر شده بهصورت کاملاً توزیع شده توسط سرویسها مدیریت خواهد شد .از جمله ابزارهای مطرح برای آن می توان بهAmazon API GatewayوIBM API Connect اشاره کرد.

مزایای استفاده از API Gateway :
بزرگترین مزیت آن از بین بردن معایب روش دسترسی مستقیم است. عدم وابستگی به معماری داخلی سیستم ما باعث میشود کارRefactoring سادهتر قابل اجرا باشد و دیگر برای ترکیب یا تجزیه سرویسهای مختلف دغدغههای قبل را نداشته باشیم. ارائه API تخصصی برای هر کلاینت باعث افزایش بهرهوری و بهبود خروجیها و در یک کلام UX بهتر میشود. کاهش تعداد درخواستهای ارسالی از کلاینت هم مورد بعدی است که بهرهوری کار را بالاتر میبرد.
معایب استفاده از API Gateway :
بزرگترین ایراد این روش اضافه شدن یک ماژول بزرگ به سیستم است که باید همیشه آنلاین باشد و درصورتیکه عملکرد درستی ارائه نکند کل سیستم با مشکل مواجه خواهد شد .با توجه به اینکه تعامل با هر کدام از میکرو سرویسها باید در API Gateway پیادهسازی شود و به ازای هر کلاینت هم نیاز داریم که پیادهسازی اختصاصی داشته باشیم ،این احتمال وجود دارد که همین API Gateway به سدی برای تیم توسعه تبدیل شود. زمانیکه یک سرویس بهروز میشود کلاینت ها باید منتظر بمانند تا این بروزرسانی در Gateway ارائه شود ،بههمین دلیل باید توسعهAPI Gateway ما طوری باشد که بهسادگی قابل تغییر و بروزرسانی باشد.
منابع :
https://github.com/Sobi1995/ArticleProject/tree/master/Api%20Gateway/Gateway.WebApi
https://www.redhat.com/en/topics/api/what-does-an-api-gateway-do