دروازه API یا API Gateway چیست؟
دروازه API یک الگوی نرمافزاری است، که در لایه front یک رابط برنامهنویسی کاربردی (API) یا گروهی از ریزسرویسها قرار میگیرد، تا درخواستها و تحویل دادهها و خدمات را تسهیل کند. نقش اصلیاش، این است که به عنوان یک نقطه ورودی واحد و فرآیند استاندارد شده برای تعاملات بین برنامهها، دادهها و خدمات سازمان و مشتریان داخلی و خارجی عمل کند. دروازه API همچنین میتواند عملکردهای مختلفی را برای پشتیبانی و مدیریت استفاده از API انجام دهد، از احراز هویت گرفته تا محدود کردن نرخ و تجزیه و تحلیل.
چگونه این دروازهی API کار میکند؟
این دروازهها به برنامههای کاربردی جداگانه اجازه میدهند با یکدیگر ارتباط برقرار کنند و دادهها را در داخل و خارج از یک کسب و کار تبادل کنند. درخواستهایی را از منابع داخلی و خارجی دریافت میکند که «فراخوانیهای API» نامیده میشوند و درخواستهای متعدد را بستهبندی میکنند، آنها را به یک API یا APIهای مناسب هدایت و مسیریابی میکنند و پاسخها را به کاربر یا دستگاهی که درخواست کردهاند دریافت و تحویل میدهد.
دروازههای API همچنین کلید معماری مبتنی بر میکروسرویسها هستند، که در آن درخواستهای داده، برنامهها و سرویسهای متعددی را فراخوانی میکنند که از چندین API متفاوت استفاده میکنند. در اینجا نقش دروازه API مشابه است: ارائه یک نقطه ورود واحد برای یک گروه تعریف شده از میکروسرویس ها، و اعمال سیاست هایی برای تعیین در دسترس بودن و رفتار آنها.
دروازه های API اغلب سایر عملکردهای مرتبط با API ها و میکروسرویسها را انجام میدهند، که به مواردی از آنها اشاره میشود:
در این بخش قصد دارم که API gateway را با دو مفهوم API proxy و service mesh مقایسه کنیم.
مقایسه API Gateway و API Proxy
یک جایگزین برای دروازه API یک API Proxy است، که اساساً زیر مجموعه ای از دروازه API است که حداقل پردازش را برای درخواست های API ارائه میدهد. API Proxy ارتباطات، از جمله ترجمه پروتکل، بین پلتفرم های نرمافزاری خاص، مانند نقطه پایانی Proxy و API هدف را مدیریت میکند. همچنین میتواند جریان ترافیک بین نقاط ارسال و دریافت را کنترل کند. با این حال، دروازههای API معمولاً دارای قابلیتهای تحلیل عملکرد و نظارت بهتری هستند.
مقایسه API Gateway و service mesh
اساساً، service mesh همچنین ارتباطات به/ از خدمات یک سازمان را با برخی از تعادل بار و سایر عملکردها تسهیل میکند. با این حال، service mesh معمولاً ارتباطات داخلی را مدیریت میکند و نقش آن در سطح مدیریت شبکه است. یک دروازه API تعامل با کاربران و دستگاه های خارجی و همچنین منابع داخلی را تسهیل می کند و در لایه برنامه قرار دارد. به این ترتیب نقشهای آنها میتوانند مکمل باشند -- برای مثال دروازههای API میتوانند نقطه ورود به یک mesh باشند، در حالی که برخی از دروازههای API پلاگینهایی را ارائه میدهند تا خودشان یک service mesh را تشکیل دهند.
چه کسانی از API Gateway استفاده میکنند، و چرا استفاده میکنند؟
دروازه API نقطه کانونی برای پیامرسانی API، جهت سازماندهی و سادهسازی فعالیتهای API و مبادلات با مشتریان داخلی و خارجی است. این مدیریت و نظارت همچنین به کسبوکار امکان میدهد تا دامنه وسیعی از APIها و ادغامها را بهجای تلاش برای ردیابی و مدیریت جداگانه APIها به صورت متمرکز ببیند و کنترل کند. دروازههای API معمولاً شامل قابلیتهای نظارت و ثبت گزارش(log) برای ضبط و تجزیه و تحلیل فراخوانها و پاسخها به منظور اطمینان از امنیت و ارزیابی خطاها هستند.
دروازههای API همچنین میتوانند از سایر عملکردهای حاکم بر APIها پشتیبانی کنند. به عنوان مثال، مدیران خط مشی از عبارات منطقی استفاده می کنند که از طریق یک دروازه API عمل می کند تا در دسترس بودن و رفتار API را تعیین کند، مانند نحوه کنترل جریان داده ها، یا کاهش تماس ها و توان عملیاتی فراخوانی های API.
سازمانهایی که معماری مبتنی بر ریزسرویسها را اتخاذ کردهاند به طور مشابه به دروازههای API برای تسهیل ارتباطات بین آن سرویسها متکی هستند.
مزایا و چالشهایی از API Gateway
مزیت اصلی دروازه API این است که ارائه خدمات را از طریق API یا میکروسرویس ها استاندارد و متمرکز میکند. فراتر از این، دروازههای API همچنین به ایمنسازی و سازماندهی ادغامهای مبتنی بر API سازمان به روشهای مختلفی کمک میکنند.
دروازه API، دروازهبان بین مصرف کنندگان و ارائه دهندگان API است و این نقش گسترده چالش های منحصر به فردی را ایجاد می کند.
قالبیت اطمینان و حالت ارتجاعی : هر گونه اختلال یا مانعی برای عملکرد دروازه API ممکن است باعث شکست سرویسهای مرتبط شود. شرکتها باید مراقب اضافه کردن ویژگیهایی باشند که بر عملکرد تأثیر میگذارند، بهویژه که دروازه API یک مرحله فرآیند اضافی بین مشتریان و برنامهها یا دادهها را نشان میدهد.
امنیت : دروازه API یک منبع قابل اعتماد است که بسیاری از زوایای کسب و کار یک شرکت را لمس میکند. اگر به خطر بیفتد، این به طور بالقوه یک مشکل امنیتی جدی و گسترده است. کسب و کارها باید به دقت رابط های خارجی را از API ها و سیستم های داخلی جدا کرده و پارامترهای احراز هویت و مجوز را تعریف کنند.
پیچیدگی و وابستگیها : هر زمان که یک API یا میکروسرویس اضافه میشود، تغییر میکند یا حذف میشود، توسعهدهندگان باید دروازه API را به روز کنند. این امر به ویژه در مدلی چالشبرانگیز است که در آن چند برنامه کاربردی میتوانند به دهها یا صدها میکروسرویس تبدیل شوند. ایجاد و رعایت قوانین طراحی API و میکروسرویس ها میتواند به کاهش این مشکلات کمک کند.
انواع مختلف محصولات API Gateway چیست؟
با توجه به اهمیت محوری دروازه API در اقتصاد API امروزی، بسیاری از ارائه دهندگان دروازه های API را به عنوان ابزار مستقل یا عملکردی همراه با پلتفرم های مدیریت API گسترده تر ارائه میدهند.
نمونه هایی از فروشندگان پلتفرم مدیریت API که نوعی عملکرد دروازه API را در خود جای دادهاند عبارتند از Akana، Mulesoft، Postman، Tibco، Workato و دیگر موارد.
سازمان ها همچنین می توانند به طور جداگانه ابزارهای دروازه API خاصی را بدست آورند و استفاده کنند. به عنوان مثال می توان به Apigee (اکنون بخشی از Google Cloud)Express Gateway، Kong Gateway، Oracle API Gateway و Tyk API Gateway اشاره کرد.
ارائه دهندگان عمده ابر عمومی پلتفرم های مدیریت API را ارائه میدهند: AWS API Gateway، Microsoft Azure API Management و Google Cloud Endpoints. آنها همچنین ابزارهای دروازه API مخصوص پلتفرم های خود را ارائه می دهند: Amazon API Gateway، Azure API Gateway و Google Cloud API Gateway (در نسخه بتا از ژانویه 2021).
فاکتورهایی که باید هنگام ارزیابی یک دروازه API در نظر گرفت. کسب و کارها هنگام انتخاب یک دروازه API باید چندین معیار را بسنجید، از جمله موارد زیر:
بررسی 6 ابزار محبوب API Gateway و نحوه انتخاب یکی از آنها
دروازههای API جنبه محوری توسعه نرم افزار هستند. زیرا برنامه ها را قادر میسازند تا با یکدیگر ارتباط برقرار کنند و به داده ها دسترسی داشته باشند. با این حال، در معماری میکروسرویسهای توزیعشده، یک درخواست برای داده شامل تماسهایی با سرویسها و برنامههای مستقل متعددی میشود و پیامهایی را ایجاد میکند که ردیابی، ایمن و مدیریت مناسب آن میتواند بسیار دشوار باشد.
برای اطمینان از اینکه این فراخوانها بهموقع هدایت میشوند، شرکتها میتوانند یک مکانیزم پیامرسانی نوآورانه را پیادهسازی کنند: دروازه API. در اصل، دروازه API یک نقطه ورود به یک معماری توزیع شده را فراهم میکند، و تمام درخواستها و پاسخها را مدیریت میکند، همانطور که API مسیرهای مناسب دروازه را فرا میخواند. علاوه بر این، یک ابزار دروازه API میتواند سیاستهایی را اعمال کند که در دسترس بودن و رفتار یک API را تعیین میکند، مانند نحوه پردازش فراخوانها و کنترل جریان دادهها. بسیاری از دروازههای API دارای قابلیتهای نظارت و ثبت گزارش برای ضبط و تجزیه و تحلیل فراخوانها و پاسخهای API هستند. این امر به کسب و کارها این امکان را می دهد که API ها و ادغام ها را به طور متمرکز ردیابی و کنترل کنند، نه اینکه همه آنها را به صورت جداگانه مدیریت کنند.
چگونه یک ابزار برای API Gateway استفاده کنیم؟
بسیاری از ارائه دهندگان از فرصتی برای ارائه ابزارهای دروازه API استفاده کرده اند. گزینه های زیادی وجود دارد که از بین آنها انتخاب کنید، چه ابزارهای مستقل یا عملکردی که در یک پلتفرم مدیریت API گسترده تر گنجانده شده است. بیشتر پیشنهادات دروازه API موجود امروزه شامل گزینه های متعددی است که از احراز هویت، تجزیه و تحلیل، تعادل بار، مدیریت کش، وضوح وابستگی و موارد دیگر پشتیبانی می کنند.
انتخاب مناسب هم به نیازهای خاص توسعه شما و هم به پلتفرم های توسعه که تیم های شما قبلاً استفاده می کنند بستگی دارد. برخی از عواملی که باید در نظر گرفته شوند عبارتند از:
اختصاصی در مقابل متن باز : کاربران اوراکل ممکن است دروازه API کاملاً مدیریت شده اوراکل را مناسب بدانند. به طور مشابه، شرکتی که خدماتی را بر روی AWS، Microsoft Azure یا Google Cloud اجرا میکند، ممکن است دروازه API خاص آن پلتفرم را ترجیح دهد. شرکتهایی که با ابزارهای منبع باز راحت هستند، چندین گزینه دروازه API برای انتخاب دارند. پشتیبانی نیز مورد توجه است، چه از طرف یک ارائه دهنده اختصاصی باشد و چه از یک جامعه پیرامون یک ابزار منبع باز.
معماری : برخی از ابزارهای دروازه API بر سادگی تأکید دارند، در حالی که برخی دیگر با در نظر گرفتن قابلیت توسعه ساخته شده اند. دروازه های API مختلف از سیستم های پایگاه داده مختلف مانند PostgreSQL، Cassandra، Redis یا MongoDB پشتیبانی میکنند. باز هم، این تا حد زیادی به آشنایی و اتکای یک سازمان به پایگاه های داده خارجی خاص بستگی دارد. همانطور که قبلاً ذکر شد، دروازههای API برای پلتفرمهای ابری خاص به طور طبیعی به سایر سرویسهای آن پلتفرم متصل میشوند.
زبان برنامهنویسی : برخی از گزینههای دروازه API، بهویژه گزینههای منبع باز، ممکن است شامل برخی سفارشیسازی شوند. ممکن است مهم باشد که توسعهدهندگان شما از زبانهای خاصی مانند Golang یا Lua آگاهی داشته باشند یا فاقد آن باشند. دروازههای API ممکن است پلاگینهایی را که به زبانهای دیگر نوشته شدهاند، در خود جای دهند تا تا حدی این مشکل را کاهش دهند.
در قسمت زیر برخی از محبوب ترین ابزارهای دروازه API از ارائه دهندگان اختصاصی و منبع باز آورده شده است.
ارائه دهندگان ابر دروازه های API را ارائه میدهند که برای ادغام با خدمات خود طراحی شده اند. از جمله این گزینه ها عبارتند از :
دروازه API آمازون : بخشی از مجموعه ابزارهای پلتفرم ابری AWS، API Gateway یک سرویس کاملاً مدیریت شده است که برای ایجاد، استقرار، مدیریت، نظارت و ایمن APIها، از جمله موارد مبتنی بر پروتکل های REST، HTTP و WebSocket استفاده میشود. همچنین بر ویژگیهایی که به سمت انعطافپذیری و مدیریت چرخه عمر تنظیم شدهاند، تمرکز دارد. البته API Gateway به راحتی با سایر سرویسها و ابزارهای AWS مانند CloudTrail برای ورود به سیستم، مدیریت هویت و دسترسی (IAM) برای احراز هویت و CloudFormation برای ایجاد API ادغام میشود. کاربران می توانند از طریق تعدادی از نقاط دسترسی AWS مانند مدیریت کنسول ، CLI یا SDK به دروازه API آمازون دسترسی داشته باشند.
دروازه API اژور : سرویس مدیریت Azure API مایکروسافت دارای یک دروازه API به عنوان یکی از سه مؤلفه اصلی خود، در کنار پورتال Azure (رابط اداری) و پورتال توسعه دهنده (رابط توسعه دهنده) است. دروازه Azure تماسهای HTTP را میپذیرد و مسیریابی میکند، محدودیتهای استفاده و نرخ را اعمال میکند، پاسخهای پشتیبان را ذخیره میکند، فراخوانها را ثبت میکند و تأیید را مدیریت میکند. Azure ویژگیهای مختلفی را برای طیفی از سطوح قیمتگذاری تعریفشده ارائه میکند، که از یک گزینه در سطح مصرفکننده که یک دروازه API پرداخت به ازای استفاده را فراهم میکند تا یک لایه ممتاز که برای تولید در سطح سازمانی طراحی شده است که یکپارچهسازی اکتیو دایرکتوری، پشتیبانی از شبکه مجازی و پشتیبانی را فراهم میکند، متفاوت است. یک دروازه خود میزبان ابزار دروازه همچنین با سرویسهای Azure مانند نظارت برای تشخیص و برنامههای منطقی برای گردش کار و هماهنگی یکپارچه میشود.
دروازه API اوراکل : به عنوان بخشی از خدمات زیرساخت ابری Oracle، دروازه API کاملاً مدیریت شده اوراکل، APIهای RESTful را برای سرویسهای Backend که از برنامههای بر پایه ابری پشتیبانی میکنند، ارائه میکند. توسعه دهندگان می توانند API هایی را با نقاط پایانی خصوصی منتشر کنند و از طریق شبکه خود به آنها دسترسی داشته باشند و همچنین آنها را در معرض آدرس های IP عمومی برای ترافیک اینترنت قرار دهند. این شامل ویژگیهای کلیدی مانند اجرای سیاست، معیارها و گزارشگیری است. در کنار توابع Oracle، توسعه دهندگان می توانند API های RESTful بدون سرور ایجاد کنند. همچنین، برای امنیت، دروازه با Oracle Cloud Infrastructure IAM یکپارچه شده است.
چندین گزینه محبوب دروازه API متن باز عملکرد و مقیاسی را ارائه میدهند که با نیازهای بیشتر شرکتها مطابقت دارد. مثالها عبارتند از:
دروازه Kong : یک دروازه API متن باز و بسیار مقیاس پذیر است که برای میکروسرویس ها و معماری های توزیع شده بهینه شده است. Kong دروازه را در بالای سرور وب NGINX ساخته و با استفاده از مجوز Apache 2.0 آن را اداره می کند. Kong ابزارهای دروازه API را از طریق یک کتابخانه منبع باز از اجزای افزونه ارائه می دهد که مکانیزمهای کنترل ترافیک، پشتیبانی تجزیه و تحلیل، روشهای احراز هویت و عملکردهای بدون سرور را اضافه میکند که به تیم های نرمافزاری در ایجاد دامنههای سفارشی کمک میکند. این دروازه همچنین به توسعه دهندگان اجازه میدهد تا درخواست ها و پاسخ ها را در لحظه پیکربندی کنند.
دروازه Tyk : یکی دیگر از گزینه های دروازه متن باز است که از سه جزء مجزا تشکیل شده است: داشبورد که رابطی برای معیارها و سازماندهی API فراهم می کند. pump، که پایداری داده و اتصالات پایگاه داده را فراهم می کند. و Gateway، که پروکسی است که تمام ترافیک را مدیریت می کند. Tyk API Gateway برای اجرا فقط به یک پایگاه داده Redis نیاز دارد و ویژگی های مشابه Kong را ارائه می دهد، از جمله روش های پروکسی ترافیک، کنترل های دسترسی و قابلیت های log.
دروازه Express : یک گزینه منبع باز است که بر روی Express.js ساخته شده است. این از چهار جزء اصلی تشکیل شده است: یک پیکربندی اعلانی متمرکز که تنظیمات API را به عنوان یک فایل YAML یا JSON ذخیره می کند. یک ماژول مدیریت مصرف کننده و اعتبار برای دسترسی به API؛ یک ذخیرهسازی دائمی داده توزیعشده که امکان دسترسی به دادههای جهانی و مقیاسپذیری را در چندین نمونه فراهم میکند. و یک سیستم افزونه که به توسعه دهندگان اجازه می دهد تا سیاست ها، خطوط لوله، شرایط و اقدامات را گسترش دهند. برخی از ویژگیهای افزونه شامل احراز هویت اضافی، سفارشیسازی API، محدودکنندههای نرخ و قابلیتهای بدون سرور هستند.