حمزه قائم پناه
حمزه قائم پناه
خواندن ۲ دقیقه·۳ ماه پیش

دروازه 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 برای این اینفوگراف‌های خوشگلش :)

api gateway
مهندس نرم‌افزار و عاشق توسعه فردی - مهندس نرم‌افزار - اکس هم بنیان‌گذار و مدیرفنی و پرداکت استارتاپ کشمون
شاید از این پست‌ها خوشتان بیاید