Gateway API یک ابزار مدیریت API است که بین یک سرویس client و مجموعهای از سرویسهای backend قرار میگیرد. این یک نقطهی ورود واحد به سیستمی است که معماری داخلی سیستم را در بر میگیرد و یک API ارائه میدهد که برای هر سرویس client متناسبسازی شده است. همچنین مسئولیتهای دیگری مانند احراز هویت(authentication)، مانیتورینگ، توزیع بار، کش(caching)، محدودکردن سرعت(throttling)، الگوگیری(logging) و غیره را بر عهده دارد.
جزئیات APIهایی که توسط میکروسرویسها ارائه میشوند، اغلب با نیازهای یک سرویسگیرنده متفاوت است. میکروسرویسها معمولاً APIهای با جزئیات دقیق ارائه میدهند، به این معنی که سرویسگیرندهها باید با چندین سرویس تعامل داشته باشند. ازاینرو، یک دروازهٔ API میتواند یک نقطهی ورود واحد برای همه سرویسگیرندهها با برخی ویژگیهای اضافی و مدیریت بهتر ارائه دهد.
ویژگیها
شکل زیر جزئیات را نشان میدهد.
مرحله1- client یک درخواست HTTP به دروازه API ارسال می کند.
مرحله 2- gateway API ویژگیهای موجود در درخواستهای HTTP را تجزیه و اعتبارسنجی می کند.
مرحله 3- gateway API بررسی های لیست مجاز/لیست سیاه را انجام می دهد.
مرحله 4 - gateway API برای احراز هویت (authentication) و مجوز دادن (authorization) با یک ارائه دهنده اعتبار صحبت می کند
مرحله 5 - قوانین محدودیت نرخ (rate limiting) روی درخواست ها اعمال می شود. در صورت عبور از حد مجاز، درخواست رد می شود.
مراحل 6 و 7 - اکنون که درخواست بررسی های اولیه را پشت سر گذاشته است،gateway API با مطابقت مسیر، سرویس مرتبط را برای مسیریابی پیدا میکند.
مرحله 8 - gateway API درخواست را به پروتکل مناسب تبدیل می کند و آن را به میکروسرویس های backend ارسال می کند.
مراحل 9 تا :12 gateway API می تواند خطاها را به درست ی مدیریت کند و در صورت نیاز به زمان بیشتر برا ی بازی ابی به کمک breaker circuit با خرابی ها مقابله کند.همچنین می تواند از ساختار (Kibana-Logstash-Elastic (ELK برای الگو گیری ومانیتورینگ استفاده کند. همچنین گاهی اوقات داده ها را در gateway API کَش می کنیم.
منبع: system-design.ir