دروازه API ها چیه و چه کمکی میتونن بکنن؟ - API Gateway
دروازه API ها یا API Gateway یک واسطه که بین کاربرها و سرویسها قرار میگیره. به این صورت که همه درخواستهای کاربرها میان به این واسط و از اونجا هر درخواست به سرویس و endpoint مرتبطش ارسال میشه. در واقع یک نقطه ورود مرکزی برای همه کاربرهاست.
چرا بهش احتیاج داریم؟
جواب ساده اینکه اگر فکر میکنین که بهش احتیاجی ندارین و کار بدون این انجام میشه، خب بهش فعلا حداقل احتیاجی ندارین :)
اما این کارا رو به کمکش میتونین انجام بدین:
اعتبار سنجی پارامترها (Parameter Validations): چک کردن پارامترهایی که همراه درخواست اومده و برگشت زدن درخواست در صورت اشتباه بودنشون.
چک کردن اجازه دسترسی (Whitelist Verification): اجازه دسترسی به کل سرویسها رو بر اساس IP یا User Agent و یا هرچیز دیگهای مدیریت میکنه و کاربرد امنیتی داره.
اعتبارسنجی و بررسی دسترسی کاربر (Authentication and Authorization): وضعیت لاگین و اجازه دسترسی به بخشی که درخواست کردن رو چک میکنه.
محدودیت نرخ درخواست (Rate Limiting): نرخ درخواستها به سرویسها رو چک میکنه و میتونه محدودیت ایجاد کنه تا سرویسها زیر بار غیر استاندارد نرن و مشکل نخورن.
مسیریابی (Routing): درخواست برای رسیدن به سرویس مناسب هدایت میکنه. اینجا ممکنه Load Balance هم اتفاق بیوفته که ترافیک بین نمونههای یکسان یک سرویس توزیع بشن تا عملکرد سریعشون حفظ بشه.
پیدا کردن سرور سرویس (Service Discovery): یک مکانیزمه که این امکان رو میده که متوجه اضافه شدن یا حذف شدن یک سرویس بشه. به این صورت به طور داینامیک میتونن سرویسها رشد کنن.
ایجاد تغییر در درخواست (Request Transformation): ایجاد تغییر در درخواستی که اومده، مثلا header, body و یا method اش رو تغییر بده.
و در همه این موارد هم میتونیم کش، لاگ و مدیریت خطاها رو داشته باشیم و روی سرویسی مثل Elastic Search و Kibana بفرستیم که بتونیم این دیتاها رو بررسی کنیم.
چطور راه بندازیمش؟
سرویسهای ابری مطرح مثل Amazon, Azure, Google Cloud این سرویس رو در اختیار میگذارن اما راهکارهای Open-source ای مثل Kong هست. چیزی که من متداولتر توی شرکتهایی که کار کردم دیدم استفاده از HAProxy و در صورت نیاز Nginx برای این کار بوده.
مرسی از ByteByteGo برای این اینفوگرافهای خوشگلش :)