چرا از دروازه API استفاده کنیم؟
اکثر API های سازمانی از طریق دروازه های API مستقر می شوند. برای دروازههای API معمول است که وظایف مشترکی را که در یک سیستم از سرویسهای API استفاده میشوند، مانند احراز هویت کاربر، محدود کردن نرخ و آمار انجام دهند.
در ابتدایی ترین حالت، یک سرویس API یک درخواست راه دور را می پذیرد و یک پاسخ را برمی گرداند. اما زندگی واقعی هرگز به این سادگی نیست. نگرانی های مختلف خود را هنگام میزبانی API در مقیاس بزرگ در نظر بگیرید.
شما می خواهید از API های خود در برابر استفاده بیش از حد و سوء استفاده محافظت کنید، بنابراین از یک سرویس احراز هویت و محدودیت نرخ استفاده می کنید.
شما می خواهید بدانید که مردم چگونه از API های شما استفاده می کنند، بنابراین ابزارهای تجزیه و تحلیل و نظارت را اضافه کرده اید.
اگر از APIهای درآمدزایی دارید، باید به یک سیستم صورتحساب متصل شوید.
ممکن است شما یک معماری میکروسرویس را اتخاذ کرده باشید، در این صورت یک درخواست می تواند به تماس با ده ها برنامه متمایز نیاز داشته باشد.
با گذشت زمان، برخی از سرویسهای API جدید را اضافه میکنید و برخی دیگر را بازنشسته میکنید، اما مشتریان شما همچنان میخواهند همه سرویسهای شما را در همان مکان پیدا کنند.
چالش شما ارائه یک تجربه ساده و قابل اعتماد در برابر این همه پیچیدگی به مشتریان خود است. دروازه API راهی برای جدا کردن رابط مشتری از پیاده سازی باطن شما است. هنگامی که یک کلاینت درخواستی می دهد، دروازه API آن را به چندین درخواست تقسیم می کند، آنها را به مکان های مناسب هدایت می کند، پاسخی را تولید می کند و همه چیز را پیگیری می کند.
نقش دروازه API در مدیریت API
دروازه API بخشی از سیستم مدیریت API است. دروازه API تمام درخواست های دریافتی را رهگیری می کند و آنها را از طریق سیستم مدیریت API ارسال می کند که انواع توابع ضروری را مدیریت می کند.
دقیقاً کاری که دروازه API انجام می دهد از یک پیاده سازی به اجرای دیگر متفاوت است. برخی از عملکردهای رایج عبارتند از احراز هویت، مسیریابی، محدود کردن نرخ، صورتحساب، نظارت، تجزیه و تحلیل، خطمشیها، هشدارها و امنیت.
چگونه یک دروازه API از DevOps و محیط های بدون سرور پشتیبانی می کند؟
در سازمانهایی که از رویکرد DevOps پیروی میکنند، توسعهدهندگان از میکروسرویسها برای ساخت و استقرار برنامهها به روشی سریع و تکراری استفاده میکنند. API ها یکی از رایج ترین راه های ارتباط میکروسرویس ها هستند.
علاوه بر این، توسعه ابر مدرن، از جمله مدل بدون سرور، به APIها برای تامین زیرساخت بستگی دارد. شما می توانید توابع بدون سرور را مستقر کرده و با استفاده از یک دروازه API مدیریت کنید.
به طور کلی، همانطور که یکپارچگی و اتصال به یکدیگر مهم تر می شوند، API ها نیز اهمیت بیشتری پیدا می کنند. و با افزایش پیچیدگی API و افزایش استفاده، ارزش دروازه API نیز افزایش می یابد.
انواع API
API های RESTful:
APIهای RESTful را با استفاده از APIهای HTTP برای بارهای کاری بدون سرور و پشتیبانهای HTTP بسازید. API های HTTP بهترین انتخاب برای ساخت API هایی هستند که فقط به عملکرد پراکسی API نیاز دارند. اگر API های شما به عملکرد پراکسی API و ویژگی های مدیریت API در یک راه حل نیاز دارند، API Gateway API های REST را نیز ارائه می دهد.
API های WEBSOCKET:
با استفاده از WebSocket APIها، برنامههای ارتباطی دوطرفه بلادرنگ، مانند برنامههای چت و داشبوردهای جریانی بسازید. API Gateway یک اتصال دائمی برای مدیریت انتقال پیام بین سرویس باطن و مشتریان شما برقرار می کند.
فواید
توسعه API کارآمد
چندین نسخه از یک API را به طور همزمان با API Gateway اجرا کنید، که به شما امکان می دهد نسخه های جدید را به سرعت تکرار کنید، آزمایش کنید و منتشر کنید. شما برای تماس های برقرار شده با API های خود و انتقال داده به خارج پرداخت می کنید و هیچ حداقل کارمزد یا تعهدات اولیه وجود ندارد.
عملکرد در هر مقیاسی
با استفاده از شبکه جهانی مکانهای لبه ما با استفاده از Amazon CloudFront، کمترین تأخیر ممکن را برای درخواستها و پاسخهای API به کاربران نهایی ارائه دهید. ترافیک را کنترل کنید و تماسهای API را مجاز کنید تا اطمینان حاصل شود که عملیات پشتیبان در برابر افزایش ترافیک مقاومت میکنند و سیستمهای بکاند به طور غیر ضروری فراخوانی نمیشوند.
صرفه جویی در هزینه در مقیاس
API Gateway یک مدل قیمت گذاری طبقه بندی شده برای درخواست های API ارائه می دهد. با قیمت درخواست های API کمتر از 0.90 دلار برای هر میلیون درخواست در بالاترین سطح، می توانید هزینه های خود را با افزایش استفاده از API در هر منطقه در سراسر حساب های AWS خود کاهش دهید.
نظارت آسان
معیارهای عملکرد و اطلاعات مربوط به تماسهای API، تأخیر دادهها و نرخ خطا را از داشبورد API Gateway نظارت کنید، که به شما امکان میدهد با استفاده از Amazon CloudWatch تماسهای سرویسهای خود را به صورت بصری نظارت کنید.
کنترل های امنیتی انعطاف پذیر
با AWS Identity and Access Management (IAM) و Amazon Cognito اجازه دسترسی به API های خود را بدهید. اگر از نشانه های OAuth استفاده می کنید، API Gateway پشتیبانی OIDC و OAuth2 را ارائه می دهد. برای پشتیبانی از الزامات مجوز سفارشی، می توانید یک مجوز دهنده Lambda را از AWS Lambda اجرا کنید.
گزینه های RESTful API
API های RESTful را با استفاده از API های HTTP یا REST API ایجاد کنید. APIهای HTTP بهترین راه برای ساختن API برای اکثر موارد استفاده هستند—آنها تا 71% ارزانتر از APIهای REST هستند. اگر مورد استفاده شما به عملکرد پراکسی API و ویژگی های مدیریتی در یک راه حل نیاز دارد، می توانید از REST API استفاده کنید.
ساخت میکروسرویس ها با استفاده از دروازه API
برای اکثر برنامه های کاربردی مبتنی بر میکروسرویس، پیاده سازی یک دروازه API منطقی است، زیرا به عنوان یک نقطه ورودی واحد به سیستم عمل می کند. دروازه API مسئول مسیریابی درخواست، ترکیب و ترجمه پروتکل است و می تواند سیستم را ساده کند. با یک دروازه API، هر یک از مشتریان برنامه یک API سفارشی دریافت می کند. دروازه API برخی از درخواستها را به سادگی با مسیریابی آنها به سرویس باطن مناسب مدیریت میکند و با فراخوانی چندین سرویس پشتیبان و جمعآوری نتایج، برخی دیگر را مدیریت میکند. اگر در سرویسهای باطن خرابی وجود داشته باشد، دروازه API میتواند با برگرداندن دادههای ذخیرهشده یا پیشفرض آنها را پنهان کند.
نقش دروازه های API در معماری میکروسرویس ها
دروازه API هادی است که درخواست های پردازش شده توسط معماری میکروسرویس ها را سازماندهی می کند تا تجربه ای ساده برای کاربر ایجاد کند. این یک مترجم است که بسیاری از درخواستهای مشتری را میپذیرد و آنها را تنها به یکی تبدیل میکند تا تعداد رفتوآمدهای بین مشتری و برنامه را کاهش دهد. یک دروازه API در مقابل میکروسرویس ها راه اندازی می شود و به نقطه ورود هر درخواست جدیدی که توسط برنامه اجرا می شود تبدیل می شود. هم پیاده سازی مشتری و هم اپلیکیشن میکروسرویس را ساده می کند.
1. دروازه کنگ (OSS)
Kong Gateway (OSS) یک دروازه API بومی ابری محبوب، منبع باز و پیشرفته است که برای استقرار جهانی ساخته شده است: می تواند بر روی هر پلتفرمی اجرا شود. این به زبان برنامه نویسی Lua نوشته شده است و از زیرساخت های ترکیبی و چند ابری پشتیبانی می کند و برای میکروسرویس ها و معماری های توزیع شده بهینه شده است.
در هسته خود، Kong برای عملکرد بالا، توسعه پذیری و قابلیت حمل ساخته شده است. کونگ همچنین سبک، سریع و مقیاس پذیر است. از پیکربندی اعلامی بدون پایگاه داده، تنها با استفاده از ذخیره سازی در حافظه و CRD های بومی Kubernative پشتیبانی می کند.
کنگ دارای توازن بار (با الگوریتمهای مختلف)، گزارشگیری، احراز هویت (پشتیبانی از OAuth2.0)، محدود کردن نرخ، تغییر شکلها، نظارت زنده، کشف سرویس، ذخیرهسازی، تشخیص و بازیابی خرابی، خوشهبندی و موارد دیگر است. نکته مهم این است که Kong از خوشه بندی گره ها و توابع بدون سرور پشتیبانی می کند.
از پیکربندی پراکسی ها برای سرویس های شما پشتیبانی می کند و آنها را از طریق SSL ارائه می دهد یا از WebSockets استفاده می کند. میتواند ترافیک تعادلی را از طریق کپی خدمات بالادستی شما بارگیری کند، در دسترس بودن خدمات شما را نظارت کند و تعادل بار آن را بر این اساس تنظیم کند.
علاوه بر این، Kong با یک رابط خط فرمان ارائه می شود که به شما امکان می دهد یک خوشه Kong را از خط فرمان مدیریت کنید. همچنین، Kong با استفاده از پلاگین ها و انواع مختلف ادغام بسیار توسعه پذیر است. برای حداکثر انعطافپذیری، میتوان آن را با RESTful API مدیریت کرد.
2. ابر Tyk
Tyk (تلفظ Taik) یک دروازه API منبع باز، قدرتمند، سبک و با امکانات کامل است که از ابتدا با استفاده از زبان برنامه نویسی Go نوشته شده است. این ابر بومی است، دارای عملکرد بسیار بالا با معماری به راحتی قابل توسعه و اتصال بر اساس استانداردهای باز است.
می تواند به طور مستقل اجرا شود و فقط به Redis به عنوان یک ذخیره داده نیاز دارد. این امکان را به کاربران می دهد تا به طور ایمن انواع خدمات از جمله قدیمی، REST و GraphQL را منتشر و مدیریت کنند (از GraphQL خارج از جعبه پشتیبانی می کند).
Tyk با ویژگیهای بسیاری ساخته شده است که شامل انواع روشهای احراز هویت، سهمیهبندی، و محدود کردن نرخ، کنترل نسخه، اعلانها و رویدادها، نظارت و تجزیه و تحلیل است. همچنین از کشف سرویس، تبدیلهای در حال پرواز و نقاط پایانی مجازی پشتیبانی میکند و امکان ایجاد APIهای ساختگی قبل از انتشار را فراهم میکند.
علاوه بر موارد فوق، Tyk از اسناد API پشتیبانی می کند و یک پورتال توسعه دهنده API، یک سیستم شبیه به CMS (سیستم مدیریت محتوا) ارائه می دهد که در آن می توانید API های مدیریت شده خود را منتشر کنید و توسعه دهندگان شخص ثالث ثبت نام کنند، در API های خود ثبت نام کنند، و بتوانند آن ها را مدیریت کنند.
نکته مهم این است که تنها یک نسخه از Tyk API Gateway وجود دارد که 100٪ منبع باز است. چه کاربر نسخه Community یا یک کاربر سازمانی باشید، همان دروازه API را دریافت می کنید. این دستگاه با تمام قطعات ممکن مورد نیاز برای استفاده کامل، بدون قفل ویژگی و بدون جعبه سیاه ارسال می شود. با Tyk، دقیقاً با نحوه پردازش داده های خود آشنا می شوید.
3. KrakenD
همچنین در Go نوشته شده و با در نظر گرفتن عملکرد ساخته شده است، KrakenD یک دروازه API منبع باز، ساده و قابل اتصال با کارایی بالا است که با معماری بدون حالت طراحی شده است. می تواند در همه جا اجرا شود و برای اجرا به پایگاه داده نیاز ندارد. پیکربندی ساده ای دارد و از پایانه ها و باطن های نامحدود پشتیبانی می کند.
KrakenD دارای مانیتورینگ، کش کردن، سهمیه کاربر، محدود کردن نرخ، کیفیت خدمات (تماسهای همزمان، قطع کننده مدار، و مهلت زمانی دانهبندی شده)، تبدیل، تجمیع، (منابع ادغام)، فیلتر کردن (در لیست سفید و لیست سیاه) و رمزگشایی است. این ویژگی های پروکسی مانند تعادل بار، ترجمه پروتکل و Oauth را ارائه می دهد. و ویژگی های امنیتی مانند SSL و سیاست های امنیتی.
شما می توانید رفتار دروازه API را با دست یا با استفاده از KrakenDesigner پیکربندی کنید، یک رابط کاربری گرافیکی که به شما امکان می دهد API خود را به صورت بصری از ابتدا طراحی کنید یا یک API موجود را از سر بگیرید. علاوه بر این، معماری توسعه پذیر KrakenD امکان افزودن قابلیت های اضافی، پلاگین ها، اسکریپت های تعبیه شده و میان افزارها را بدون تغییر کد منبع آن فراهم می کند.
1- شرکت ابر درسا
ابر درسا در سال ۱۳۹۸ توسط تعدادی از صاحب نظران در حوزه رایانش ابری بنیانگذاری شده و در سال ۱۴۰۰ با نام سیستم خبره درسا در اداره کل ثبت شرکت ها و موسسات غیرتجاری ثبت و با نام تجاری ابر درسا شروع به فعالیت نموده است. ماموریت ابر درسا تبدیل شدن به پلت فرم اول رایانش ابری در منطقه خاورمیانه است.
سرویس API Gateway ابری
سرویس ApiGateway ابری یک سرویس میزبانی API است. این مجموعه وسیعی از توابع مدیریت چرخه زندگی را برای کمک به ایجاد معماری سیستم API محور ارائه می دهد. توابع مدیریت چرخه زندگی شامل طراحی API، توسعه، آزمایش، انتشار، فروش، O&M و نظارت، کنترل امنیت و عدم انتشار است. سرویس Api Gateway ابری با استفاده از قابلیت های سازگاری و یکپارچگی قدرتمند خود، API های سیستم های تجاری مختلف را مدیریت می کند و API ها را به صورت متمرکز فراخوانی می کند.
قابلیتها
از محیطهای ناهمگن شبکه پشتیبانی میکند: سرویس Api Gateway ابری می تواند API های سیستم های تجاری شما را مدیریت کند، صرف نظر از اینکه سیستم های تجاری شما در ابر درسا ، مراکز داده محلی یا ابرهای شخص ثالث مستقر شده اند یا خیر.
ساخت انواع معماری فنی
معماری بدون سرور ترکیبی از Function Compute و API Gateway به توسعه دهندگان امکان می دهد تا کد را کشف کرده و به سرعت خدمات کم هزینه، بسیار در دسترس و مقیاس پذیر در
زمان واقعی را ایجاد کنند. این معماری توسعه مشاغل مرتبط با دستگاه های تلفن همراه، برنامه های وب، اینترنت اشیا (IoT) بازار ابر را تسهیل می کند. این معماری امکانات توسعه تجارت و
مرزهای تجاری را گسترش می دهد. انعطاف پذیری ترکیبات محصول بهبود یافته است.
معماری میکروسرویس
سرویس Api Gateway ابری به عنوان یک سرویس ابری بالغ عمل می کند که اجازه دسترسی به خوشه هایبرنامه Kubernetes را می دهد. این به طور قابل توجهی قابلیت های سرویس
خوشه های برنامه Kubernetes را بهبود می بخشد. این معماری به عنوان معماری استاندارد برای برنامه های کاربردی اینترنت در مقیاس بزرگ عمل می کند.
2- شرکت وصل
پلتفرم مدیریت API سورنا توسعهدهندگان را قادر میسازد تا برنامههایی مرتبط با سامانههای داخلی سازمان/سرویسدهنده طراحی و پیادهسازی نمایند. همچنین APIها در تکنولوژیهای مختلف نظیر اینترنت اشیا، رایانش ابری و دادههای حجیم نقشی کلیدی را ایفا مینماید. پلتفرم مدیریت API سورنا پایداری، امنیت و پشتیبانی ویژهای ارائه میکند تا شرکتهای طرف ثالث، همکاران، شرکا و حتی توسعهدهندگان آزاد بتوانند با آسودگی خیال و اطمینان از آنها استفاده نمایند.
منابع
1- https://www.redhat.com/en/topics/api/what-does-an-api-gateway-do
2- https://aws.amazon.com/api-gateway/
3- https://docs.aws.amazon.com/apigateway/latest/developerguide/welcome.html
4- https://www.nginx.com/learn/api-gateway/
5- https://dorsacloud.com/service-post/api-gateway-service/
6- http://vasl.ir/
«این مطلب، بخشی از تمرینهای درس معماری نرمافزار در دانشگاه شهیدبهشتی است»