API Gateway

API Gateway

مدت مطالعه : 3 دقیقه

07 اردیبهشت 1402

در معماری میکروسرویس‌ها، Gateway، لایه ای است که بین کاربران و میکروسرویس‌ها قرار می‌گیرد. نقش اصلی یک Gateway، هدایت درخواست‌های کاربران به میکروسرویس‌های مناسب و پیاده سازی فرآیند هایی مانند احراز هویت(authentication)، مجوز دسترسی(authorization)، محدود کردن ترافیک شبکه(rate limiting) و... است.

لایه Gateway به عنوان یک نقطه ورود مرکزی در برنامه های میکروسرویسی عمل می کند. این بدان معنی است که نرم افزار کلاینت می تواند از طریق یک اند-پوینت با میکروسرویس ها ارتباط برقرار کنند که فرآیند کلی ارتباط را ساده می کند. زمانی که تمامی ارتباطات از طریق یک رابط صورت می‌‌پذیرد، میتوان از بابت فرآیند های احراز هویت و کنترل دسترسی و یکپارچه بودن آن ها اطمینان حاصل کرد.

میکروسرویس ها می توانند به وسیله زبان های برنامه نویسی مختلف پیاده سازی شوند و بر روی سرورها یا کانتینرهای مختلف اجرا شوند. API Gateway پیچیدگی های استفاده از چندین سرویس محتلف را ساده سازی می‌کند و یک API یکپارچه در اختیار کلاینت قرار می‌دهد. بنابرین برنامه کلاینت درگیر پیاده سازی این پیچیدگی ها نخواهد بود. 

 

آیا API Gateway یک گلوگاه است؟

اگر Gateway به درستی طراحی و پیاده سازی نشود، می تواند به یک گلوگاه(bottleneck) تبدیل شود. در معماری میکروسرویس، API Gateway یک مؤلفه مرکزی است که تمام درخواست های دریافتی از کاربران را مدیریت می کند و آنها را به میکروسرویس مناسب ارسال می کند. اگر API Gateway قابل مقیاس پذیری نباشد، می‌تواند به یک گلوگاه تبدیل شود و باعث تأخیر در پاسخ شود و بر عملکرد کلی سیستم تأثیر بگذارد.

bottleneck

با این حال، راه‌های مختلفی برای جلوگیری از بوجودآمدن این گلوگاه وجود دارد. یک رویکرد استفاده از مقیاس بندی افقی(horizontal scaling) است که شامل استقرار چندین نمونه از Gateway و توزیع ترافیک ورودی در بین آنها می شود. روش دیگر استفاده از کش و شبکه های توزیع محتوا (CDN) برای کاهش بار وروی است.

علاوه بر این، بهینه سازی کد و پیاده سازی صحیح معماری میکروسرویس ها نیز می تواند به کاهش بار روی Gateway کمک کند. برای مثال، با پیاده‌سازی میکروسرویس‌های کارآمد و بهینه، و همچنین بکارگیری از پیام‌رسانی ناهمزمان می‌توان میزان پردازش مورد نیاز API Gateway را کاهش داد و به آن اجازه داد تا درخواست‌های بیشتری را بدون تبدیل شدن به گلوگاه انجام دهد.

 

ارتباط با میکروسرویس ها

ارتباط بین API Gateway و میکروسرویس ها می تواند همزمان یا ناهمزمان باشد. در ارتباطات همزمان(synchronous)، API Gateway قبل از بازگرداندن پاسخ به مشتری منتظر پاسخی از میکروسرویس است. در ارتباطات ناهمزمان(asynchronous)، API Gateway پیامی را در صف پردازش قرار می‌دهد و بدون انتظار به پردازش درخواست های دیگر ادامه می دهد. برای آن که ارتباط بین Gateway و سرویس ها مدیریت شده و قابل اعتماد باشد، باید مکانیزم های مدیریت خطا و تلاش مجدد به درستی پیاده سازی شوند. در صورت درنظر گرفتن همه این موارد و پیاده سازی صحیح آن ها، میتوان اطمینان حاصل کرد که سیستم به درستی عمل میکند و قابل مقیاس پذیری خواهد بود.

اگر بخواهیم نکات مهم در مورد API Gateway را لیست کنیم، این لیست بصورت زیر خواهد بود:

  1.  ایجاد یک نقطه دسترسی مرکزی
  2.  یکپارچه سازی و ساده‌سازی دسترسی به سرویس ها
  3.  ارتباط با سرویس ها بدون وابستگی سخت(loose coupled)
  4.  خطر تبدیل شدن به گلوگاه(bottleneck)
  5.  کنترل دسترسی و پیاده سازی پروتکل های امنیتی بصورت یکپارچه
  • اشتراک گذاری:
محمدرضا باباخانی
محمدرضا باباخانی

من محمدرضا باباخانی هستم، توسعه دهنده نرم افزار. در اینجا تجربیات، نظرات و پیشنهادات خودم رو درباره تکنولوژی مینویسم. امیدوارم مطالبی که می‌نویسم بدردتون بخوره.

آخرین مطالب

سرویس مش؛ ساده سازی ارتباطات میکروسرویس و افزایش رؤیت پذیری

در چشم انداز همیشه در حال تحول توسعه نرم افزار، معماری میکروسرویس ها به دلیل مقیاس پذیری، انعطاف پذیری و توسعه پذیری محبوبیت قابل توجهی به دست آورده است. با این حال، با افزایش تعداد میکروسرویس ها در یک برنامه، مدیریت ارتباطات آنها و اطمینان از رؤیت صحیح همه آنها به طور فزاینده ای چالش برانگیز می شود. اینجاست که سرویس مش وارد عمل می شود.

اهمیت محاسبات لبه یا Edge Computing

ا توجه به سرعت تحول فناوری، یکی از مفاهیمی که توجه زیادی را به خود جلب کرده و نحوه تعامل ما با سیستم های دیجیتال را تغییر می دهد، محاسبات لبه (Edge Computing) است.

معماری رویداد محور چیست؟

معماری رویداد محور (EDA) یک الگوی طراحی نرم افزار است که در توسعه نرم افزار های مدرن به طور چشمگیری محبوب شده است. در این معماری، جریان داده ها با وقوع رویدادها تعیین می شود. بر خلاف سیستم های متمرکز سنتی که دائماً در حال بررسی وضعیت جدید هستند. معماری رویداد محور به ویژه برای سیستم هایی مفید است که به پردازش حجم زیادی از داده ها بصورت بلادرنگ(real-time) نیاز دارند.

برچسب های مرتبط

ثبت دیدگاه