در این پست میخواهیم در مورد API Gateway نکاتی را مطرح کنیم. ابتدا تعاریف مربوط به API، API Gateway را عنوان کرده و در ادامه درباره کاربردهای API Gateway و نحوه کار آن صحبت میکنیم و در انتها هم در مورد ابزارهای متن باز و شرکتهای ایرانی ارائه دهنده مدیریت API مطالبی را مطرح میکنیم.
در صورتی که به مطالب مربوط به API علاقهمند هستید و در عین حال زمان زیادی را نمیخواهید صرف کنید این پست میتواند به منظور آشنایی با کلیات برای شما مفید باشد. در پایان منابع دکر شده است که در صورت تمایل به کسب اطلاعات بیشتر میتوانید به آنها مراجعه کنید.
رابط برنامه نویسی برنامه (API) چیست؟
در ابتدا لازم است با مفهوم API آشنا شویم اما از آنجایی که امروزه اکثر افراد فعال در حوزه نرمافزار با آن آشنا هستند، صرفا یک تعریف مختصر از آن را بیان میکنیم.
رابط برنامه نویسی برنامه (API)، مکانیسمی است که دو جزء نرمافزاری را قادر میسازد که طبق یک سری استاندارد و پروتکل بدون آن که از جزییات پیادهسازی هم اطلاع داشته باشند با یکدیگر ارتباط برقرار کنند. این رابط یک قرارداد سرویس است بین دو برنامه کاربردی است که نحوه ارتباط از طریق پرسشها و پاسخها را تعریف میکند.
رابط برنامهنویسی برنامه یا API مزایای بسیاری دارد. احتمالا مهمترین مزیت آن این است که شرکتها را قادر میسازد تا دادهها و عملکرد برنامههای خود را برای توسعهدهندگان شخص ثالث خارجی، شرکای تجاری و بخشهای داخلی شرکتشان باز کنند. به این ترتیب خدمات و محصولات با یکدیگر ارتباط برقرار کرده و از طریق یک رابط مستند از دادهها و عملکرد یکدیگر استفاده کنند. توسعه دهندگان نیازی به دانستن نحوه پیاده سازی یک API ندارند. آنها به سادگی از رابط برای ارتباط با سایر محصولات و خدمات استفاده می کنند. استفاده از API در دهه گذشته افزایش یافته است، به حدی که امروزه بسیاری از محبوبترین برنامههای وب بدون API امکانپذیر نیستند.
هیچ اپلیکیشنی جزیره نیست یعنی هیچ برنامهای به تنهایی برای طولانی مدت ارزش تجاری را ارائه نمیکند. برنامهها باید به سرمایهگذاریهای فناوری موجود و آینده شما متصل شوند تا ارزش مستمری ارائه دهند و در واقع به عنوان بخشی از تجارت شما وجود داشته باشند. API ها روشی استاندارد برای ادغام اجزای نرم افزاری در اختیار شما قرار می دهند، بدون آنکه نیاز باشد با به روزرسانی یک بخش یا معرفی بخشهای جدید دیگر بخشها را بازسازی کنید.
API Gateway چیست؟
API Gateway یک ابزار مدیریت API و واسطی بین کلاینت و سرویسهای backend میباشد. در واقع یک API Gateway مانند یک پروکسی معکوس عمل میکند و همه فراخوانیهای API را می پذیرد سپس سرویسهای مورد نیاز آنها را جمعآوری کرده و نتیجه مناسب را برمیگرداند. یک API Gateway علاوه بر دریافت درخواست کاربر، هدایت آن درخواست به سرویسهای پشتیبان، جمعآوری دادههای مورد نیاز و تحویل یک بسته ترکیبی به عنوان پاسخ، در زمینه تجزیه و تحلیل، خدمات امنیتی و جلوگیری از تهدید را نیز فراهم میآورد.
در شکل زیر نمونهای دیگر از یک API Gateway به همراه میکروسرویسهایی که در یک شرکت تجارت الکترونیک وجود دارد آورده شده است:
چرا از API Gateway استفاده کنیم؟
اکثر API های سازمانی از طریق API Gateway مستقر می شوند. یکی از وظایف رایج API Gatewayها این است که کارهایی مانند احراز هویت کاربر، محدود کردن نرخ و آمار را که در بین سرویسهای API یک سیستم مشترک هستند، انجام دهند.
در حالت بسیار ساده، یک سرویس API یک درخواست از راه دور را می پذیرد و یک پاسخ را برمی گرداند. اما واقعیت این است که دنیای حقیقی هرگز به این سادگی نیست و نگرانیهای مختلفی در زمان میزبانی از APIهای مقیاس بزرگ وجود داردو در ادامه برخی از این نگرانیها را مطرح میکنیم.
چالش شما ارائه یک تجربه ساده و قابل اعتماد در برابر این همه پیچیدگی به مشتریان خود است. یک API Gateway راهی برای جدا کردن رابط مشتری از پیاده سازی backend شما است. هنگامی که یک کلاینت درخواستی می دهد، API Gateway آن را به چندین درخواست تقسیم می کند، آنها را به مکان های مناسب هدایت می کند، پاسخی را تولید می کند و همه چیز را پیگیری می کند.
نقش API Gateway در مدیریت API
API Gateway بخشی از سیستم مدیریت API است. API Gateway تمام درخواست های دریافتی را رهگیری و آنها را از طریق سیستم مدیریت API ارسال کرده که انواع توابع ضروری را مدیریت می کند.
کارهایی که API Gateway انجام میدهد میتواند از یک پیادهسازی به پیادهسازی دیگر متفاوت است. برخی از عملکردهای رایج عبارتند از احراز هویت، مسیریابی، محدود کردن نرخ، صورتحساب، نظارت، تجزیه و تحلیل، خطمشیها، هشدارها و امنیت.
ارزش API Gateway
یک API Gateway یک نقطه ورودی واحد فراهم میکند که برای همه فراخوانیهای API که به یک برنامه وارد میشوند، چه برنامه در یک مرکز داده داخلی یا در فضای ابری میزبانی شود. درخواست هایی که از راه دور وارد می شوند را می پذیرد و داده های درخواستی را برمی گرداند.
به عنوان مثال، برنامه وب یک رستوران را در نظر بگیرید. با استفاده از لپتاپ یا تلفن همراه، کاربر میتواند یک درخواست را وارد کند و به راحتی به منوی رستوران، عکسها و نظرات رستورانها، خدمات پرداخت آن و نقشهای برای بررسی موقعیت مکانی آن دسترسی داشته باشد، علیرغم همه این اطلاعات که از میکروسرویسهای مختلف یا APIهای پشتیبان جمعآوری و تحویل میشود. درخواست آنها توسط یک API Gateway دریافت و اجرا می شود.
با این حال، فراتر از سرویس دهی به درخواست ها، یک API Gateway نیز با در دسترس قرار دادن داده ها به روشی مناسب برای فناوری درخواست کننده، ارزشی را فراهم می کند. به عنوان مثال، شخصی که با استفاده از یک مرورگر وب، اطلاعات یک فروشگاه خرده فروشی را درخواست می کند، اطلاعات بسیار بیشتری نسبت به کسی که داده های همان فروشگاه را در تلفن همراه درخواست کرده و مشاهده می کند، نشان داده می شود. API Gatewayها همچنین میتوانند ارتباط بیدرنگ بین frontend و backend برنامه را فعال کنند، به عنوان مثال، در چت وب، سیستمهای معاملات سهام و بازیهای آنلاین.
پشتیبانی API Gateway از DevOps و محیط های بدون سرور
در سازمانهایی که از رویکرد DevOps پیروی میکنند، توسعهدهندگان از میکروسرویسها برای ساخت و استقرار برنامهها به روشی سریع و تکراری استفاده میکنند. API ها یکی از رایج ترین راه های ارتباط میکروسرویس ها هستند.
علاوه بر این، توسعه ابر مدرن، از جمله مدل بدون سرور، به APIها برای تامین زیرساخت بستگی دارد. شما میتوانید توابع بدون سرور را مستقر کرده و آنها را با استفاده از یک API Gateway مدیریت کنید.
به طور کلی، همانطور که یکپارچگی و اتصال به یکدیگر مهم تر می شوند، API ها نیز اهمیت بیشتری پیدا میکنند و با افزایش پیچیدگی API و افزایش استفاده، ارزش API Gateway نیز افزایش می یابد.
نحوه کار API Gateway
یک API Gateway بین یک کاربر و مجموعهای از میکروسرویسها قرار می گیرد و سه سرویس کلیدی را ارائه میدهد:
1. درخواست مسیریابی: یک API Gateway یک درخواست API جدید دریافت می کند، آن را به چندین درخواست تبدیل کرده، یک نقشه مسیریابی را بررسی میکند که نشان می دهد هر درخواست باید کجا ارسال شود و درخواست ها را به میکروسرویس داخلی یا میکروسرویس مناسب ارسال می کند.
2. ترکیب API Gateway :API هماهنگی جریان کار را فراهم می کند زیرا اطلاعات درخواستی را از چندین میکروسرویس جمع کرده، دادهها را بسته بندی می کند و آن را به صورت ترکیبی به درخواست کننده برمی گرداند.
3. ترجمه پروتکل: API Gatewayها میدانند که درخواستهای API از طریق دستگاههایی وارد میشوند که از پروتکلهای API مختلف استفاده میکنند و به درخواستهای مشتری و میکروسرویسها کمک میکنند تا با ترجمه آن پروتکلها با یکدیگر ارتباط برقرار کنند. این gateway، پروتکلهای API را از آنچه دستگاه کاربر نهایی استفاده میکند - اعم از مرورگر وب، تلفن همراه یا نقطه پایانی دیگر - به پروتکلهای میکروسرویس ترجمه میکند. به عنوان مثال، یک شبکه گسترده (WAN) و شبکه محلی (LAN)، عملکرد متفاوتی دارند و نیازهای API متفاوتی دارند. هنگامی که اطلاعات برمی گردد، Gateway آن را تغییر می دهد و به گونه ای که می توانند آن را مشاهده کنند، برای درخواست کنندگان ارسال می کند. به عنوان مثال، اگر یک میکروسرویس پاسخی را در XML ارائه کند، اما درخواست با استفاده از JSON وارد شود، دروازه به طور خودکار آن ترجمه را انجام می دهد. REST API از پروتکل HTTP برای درخواست خدمات API استفاده می کند.
APIها به برنامه های کاربردی جداگانه اجازه می دهند با یکدیگر ارتباط برقرار کنند و داده ها را در داخل و خارج از یک کسب و کار تبادل کنند. دروازه API یک نقطه کانونی و رابط استاندارد برای انجام این فعالیت ها فراهم می کند. درخواستهایی را از منابع داخلی و خارجی دریافت میکند که «فراخوانیهای API» نامیده میشوند و درخواستهای متعدد را بستهبندی میکند، آنها را به API یا APIهای مناسب هدایت میکند، و پاسخها را به کاربر یا دستگاهی که درخواست کرده است، دریافت و تحویل میدهد.
API Gatewayها همچنین کلید معماری مبتنی بر میکروسرویسها هستند، که در آن درخواستهای داده، برنامهها و سرویسهای متعددی را فراخوانی میکنند که از چندین API متفاوت استفاده میکنند. در اینجا نقش API Gateway مشابه است: یک نقطه ورود واحد برای یک گروه تعریف شده از ریزسرویس ها ارائه کنید و سیاست هایی را برای تعیین در دسترس بودن و رفتار آنها اعمال کنید.
API Gateway اغلب سایر عملکردهای مرتبط با API ها و میکروسرویس ها را انجام می دهند:
API Gateway در مقابل پروکسی API.
جایگزینی برای API Gateway یک پروکسی API است که اساساً زیر مجموعه ای از دروازه API است که حداقل پردازش را برای درخواست های API ارائه می دهد. پروکسی API ارتباطات، از جمله ترجمه پروتکل، بین پلتفرم های نرم افزاری خاص، مانند نقطه پایانی پروکسی و API هدف را مدیریت می کند. همچنین می تواند جریان ترافیک بین نقاط ارسال و دریافت را کنترل کند. با این حال، API Gatewayها معمولاً دارای قابلیتهای تحلیل عملکرد و نظارت بهتری هستند.
API Gatewayها و میکروسرویسها
API Gatewayها، که گاهی اوقات «میکروسرویسهای لبه» نامیده میشوند، اغلب در برنامههایی که با معماری میکروسرویسهای مدرن و بومی ابری ایجاد میشوند، استفاده میشوند. این برنامهها معمولاً از بسیاری از مؤلفههای مستقل، مستقل و تک عملکردی (یا میکروسرویسها) تشکیل شدهاند که هر کدام توسط تیم DevOps کوچک و مستقل خود مدیریت میشوند. میکروسرویسها بهطور آزاد متصل هستند، به پایگاه دادههای خود متصل میشوند و میتوانند به طور مستقل مستقر، نگهداری و آزمایش شوند.
هنگامی که درخواست اطلاعات به یک برنامه کاربردی با میکروسرویس ها وارد می شود، یک API Gateway یک رویکرد ساده برای بازیابی و بازگرداندن داده ها ارائه می دهد. علاوه بر کنترل دسترسی، امکان تحویل سریع و قابل اعتماد را در برنامه های بزرگ و پیچیده فراهم می کند.
از آنجایی که میکروسرویسها در محیطهای مستقل خود اجرا میشوند، میتوان آنها را اضافه کرد، ارتقا داد، جابهجا کرد و تغییر داد بدون اینکه بر برنامه کلی تأثیر بگذارد. API Gatewayها، افزایش مقیاس برنامههای خود را برای شرکتها آسانتر میکنند. بعلاوه، آنها می توانند ویژگی های جدید را سریعتر توسعه دهند، که امکان نوآوری بیشتر و زمان ورود سریعتر به بازار را فراهم می کند.
API Gatewayها و برنامه های یکپارچه (monolithic)
قبل از اینکه میکروسرویس ها وجود داشته باشند، برنامه های کاربردی یکپارچه وجود داشت. این برنامه ها بر خدماتی متکی هستند که بخشی از یک معماری همه کاره هستند که به یک پایگاه داده واحد متصل هستند. همه اجزا به یکدیگر وابسته هستند و به عنوان یک واحد عمل می کنند. تغییر هر جنبه ای از یک برنامه یکپارچه به معنای تغییر کدی است که کل معماری را اجرا می کند.
بسیاری از برنامه های کاربردی یکپارچه هنوز در حال استفاده هستند. آنها عمدتاً از API Gatewayها برای ارتباط با اشخاص ثالث خارجی، کاربران داخلی یا شرکا استفاده میکنند و در عین حال همان امنیت، مقیاسپذیری و سایر مزایایی را که برای میکروسرویسها اعمال میشود، ارائه میکنند.
مزایا
افزودن یک یا چند API Gateway به برنامه های میکروسرویس شما مزایای بسیاری را به همراه دارد:
چالش های API Gatewayها
در حالی که افزودن API Gateway مزایای زیادی دارد، چالشهایی نیز می تواند وجود داشته باشد:
API Gateway منبع باز
یک API Gateway منبع باز به تیم های DevOps اجازه می دهد بدون نوشتن کد، منابع API جدید ایجاد کنند. برخی از مزایای یک API Gateway منبع باز شامل اجازه دادن به یک شرکت کوچک شروع و گسترش سریع است و اجازه انعطاف پذیری برای نوآوری و تغییر سریع و ایجاد شفافیت برای کاربران را می دهد.
ابزارهای متن باز API Gateway
شرکتهای ایرانی ارائه دهنده API Management
در ایران یک سری شرکتها وجود دارند که خدمات و ابزارهایی به منظور مدیریت API یا همان API Management ارائه میدهند اما شرکتی که به طور خاص به API Gateway بپردازد و در این حوزه ابزار تخصصی ارائه دهد در جستجوهای من یافت نشد. در ادامه به معرفی برخی از این شرکتها میپردازیم:
- راهکارهای یکپارچه فناوری اطلاعات و ارتباطات
- نسل بعدی فناوری های اطلاعات و ارتباطات
- تحول دیجیتال و هوشمند سازی
- امنیت فضای تولید و تبادل اطلاعات
یکی از محصولات این شرکت آورند است که پلتفرم مدیریت API میباشد. (API Management Platform)
«این مطلب، بخشی از تمرینهای درس معماری نرمافزار در دانشگاه شهیدبهشتی است.»
منابع