بعضی وقتا زمانی که در یک جای تاریک هستید فکر میکنید دفن شدهاید اما در واقع شما کاشته شدهاید
مدیریت APIها
1 مقدمه
به نظر امروزه واژهي API برای ما اشنا است و در سازمانها APIها در حال رشد هستند، در این مستند قصد داریم مروری بر مدیریت APIها داشته باشیم.
امروزه مشتریان می خواهند از طریق انواع دستگاه ها و کانال های دیجیتال به داده ها و خدمات سازمانی دسترسی داشته باشند. برای برآورده کردن انتظارات مشتری، شرکت ها باید دارایی های خود را به شیوه ای چابک، انعطاف پذیر، ایمن و مقیاس پذیر در اختیار قرار دهند. APIها دریچهای را به داده ها و خدمات یک سازمان ایجاد میکنند.
آنها به برنامه ها اجازه می دهند تا با استفاده از یک پروتکل سبک وزن مانند HTTP به راحتی با یکدیگر ارتباط برقرار کنند. توسعه دهندگان از API ها برای نوشتن برنامه هایی استفاده می کنند که با سیستم Backend تعامل دارند.
هنگامی که یک API ایجاد شد، باید با استفاده از یک پلت فرم مدیریت APIمدیریت شود. یک پلت فرم مدیریت APIبه سازمان کمک می کند APIها را برای توسعه دهندگان داخلی، شریک و خارجی منتشر کند تا پتانسیل منحصر به فرد دارایی های خود را انتشار دهد.
یک پلتفرم مدیریت API به کسبوکار کمک میکند تا دسترسی به کانالهای دیجیتال را تسریع کند، رضایت شریک و همکار را افزایش دهد، از داراییهای دیجیتالی کسب درآمد کند، و تجزیه و تحلیلهایی برای بهینهسازی سرمایهگذاری در تحول دیجیتال ارائه دهد (( به طور خلاصه در شکل زیر مشخص شده است))
یک پلت فرم مدیریت API این امکان را برای شما فراهم میکند تا APIها را در یک محیط امن و مقیاس پذیر ایجاد، تجزیه و تحلیل و مدیریت کنید (شکل 2). یک پلت فرم مدیریت API باید قابلیت های زیر را ارائه دهد:
- فعال سازی توسعه دهنده برای API ها
- ارتباطات ایمن، قابل اعتماد و انعطاف پذیر
- مدیریت چرخه عمر API
- قابلیت API Auditing، گزارش گیری و تجزیهوتحلیل
قابلیتهای مدیریت API را میتوان از فروشندگان مدیریت API در یک ابر عمومی بهعنوان یک سرویس میزبان خریداری کرد همچنین میتوان آن را در یک ابر خصوصی خریداری کرد. یک رویکرد ترکیبی نیز می تواند دنبال شود، اینگونه که برخی از اجزای پلتفرم مدیریت API که به عنوان یک راه حل میزبان ارائه می شود را خریداری کنیم و برخی دیگر برای افزایش امنیت و کنترل به صورت محلی پیاده سازی کنیم.
- یک پلت فرم مدیریت API این قابلیت ها را به عنوان سه نوع خدمات اصلی (و همانطور که در شکل 3 نشان داده شده است) ارائه می دهد:
- سرویسهای دروازه API به این امکان را فراهم میکند از دادهها و سرویسها APIها را ایجاد و مدیریت کنید. آنها به شما اجازه را می دهند که امنیت، مدیریت ترافیک، ترجمه رابط، هماهنگ سازی و قابلیتهای مسیریابی را به API خود اضافه کنید.
- سرویسهای تجزیه و تحلیل، ترافیک برنامههای جداگانه را نظارت میکنند و معیارهای بینش و عملیاتی، عملکرد API و برنامه و معیارهای تعامل توسعهدهنده را به کسبوکار ارائه میدهند
- پورتالهای توسعهدهنده قابلیتهایی را برای ثبت نام و نصب برنامهنویس و برنامهنویس، اسناد API، مدیریت انجمن و کسب درآمد از API ارائه میکنند.
تا به این قسمت با قابلیتهای مختلف یک پلت فرم مدیریت API آشنا شدیم.
2 ارتباطات ایمن، قابل اعتماد و انعطاف پذیر
در برنامه های دیجیتال APIها کمک می کنند تا با سرویس های پشتیبان ارتباط برقرار کنند. ارتباطات، هسته APIها را تشکیل می دهد. ارتباطات می تواند از REST، SOAP، Plain Old XML (POX) یا هر پروتکل انتخابی دیگری استفاده کند. REST به دلیل ویژگیهای ذاتی آن که در ادامه این مستند توضیح داده میشود، ترجیح پروتکل ارتباطی برای APIها است. یک پلت فرم مدیریت API باید چارچوبی را فراهم کند که کانال های ارتباطی امن، قابل اعتماد و انعطاف پذیر را فراهم کند. دروازه API در بستر مدیریت API خدماتی را ارائه می دهد که قابلیت های اصلی مورد نیاز برای ارتباطات API را تشکیل می دهد.
2-1 دروازه (Gateway) API
یک دروازه API قلب هر راه حل مدیریت API را تشکیل می دهد که ارتباط ایمن، انعطاف پذیر و قابل اعتماد بین سرویس های پشتیبان و برنامه های دیجیتال را امکان پذیر می کند (شکل 4). در معرض نمایش گذاشتن، ایمن ساختن و مدیریت دادهها و سرویسهای پشتیبان به APIهای RESTful کمک میکند. چارچوبی را برای ایجاد نما در مقابل سرویسهای پشت صحنه، فراهم میکند. این نما درخواستهای API را برای اعمال امنیت، اعتبارسنجی دادهها، تبدیل پیامها، کنترل ترافیک سوکت و در نهایت هدایت آن به سرویس پشت صحنه را رهگیری میکند. پاسخهای بدون تغییر، ممکن است برای بهبود عملکرد در حافظه پنهان ذخیره شود. دروازه API می تواند به صورت اختیاری درخواستها را بین چندین سرویس پشتیبان هماهنگ کند و همچنین برای سرویس دهی به درخواست به پایگاه داده متصل شود. همه این قابلیتها را میتوان در یک دروازه پیادهسازی کرد، عمدتاً از طریق تنظیمات و برنامههای افزودنی.
2-2 امنیت APIها
توسط APIها دسترسی به دادهها و داراییهای با ارزش و محافظت شده فراهم میشود. بنابراین، امنیت برای APIها برای محافظت از دارایی های زیربنایی از دسترسیهای غیرقانونی و غیرمجاز بسیار مهم است. با توجه به ماهیت برنامهای APIها و دسترسی به آنها از طریق ابر عمومی، آنها همچنین مستعد انواع مختلف حملات تهدید هستند. بنابراین پلتفرم مدیریت API باید جنبه های زیر از امنیت API را مورد توجه قرار دهد.
- احراز هویت: احراز هویت، فرآیند تعیین و اعتبارسنجی منحصر به فرد هویت یک clientاست. یک برنامه مانند یک client فراخوانی API را انجام میدهد. این یک قطعه نرم افزاری است که از یک API برای دسترسی به دارایی ها، داده ها و خدمات سازمانی استفاده می کند. می تواند بر روی اینترنت، کامپیوتر، گوشی های هوشمند، تبلت ها یا هر وسیله الکترونیکی دیگری اجرا شود. برنامهها معمولاً توسط توسعهدهندگانشان از طریق یک پلتفرم توزیع شده، مانند اپ استور اپل، یا گوگل پلی، یا فروشگاه تلفن ویندوز در دسترس قرار میگیرند. هر برنامه با نام خود و یک UUID منحصر به فرد شناخته می شود که به عنوان کلید برنامه شناخته می شود. کلید برنامه اغلب به عنوان هویت برنامه ای که با API تماس می گیرد، عمل می کند. معمولاً از طریق پلت فرم مدیریت API که توسط ارائه دهنده API صادر و مدیریت می شود. کلید برنامه به عنوان کلید API، شناسه برنامه یا شناسه client نیز شناخته می شود. پلت فرم مدیریت API باید قابلیت صدور، ردیابی و لغو این کلیدها را داشته باشد. خدمات احراز هویت ممکن است نیاز به ادغام با سیستمهای مدیریت احراز هویت داشته باشند که دسترسی کاربر به برنامهها و سایر خدمات را کنترل میکنند.
- مجوز: مجوز، سطح دسترسی به سرویسها را کنترل می کند. به برنامه ای اعمال می شود که یک فراخوانی API را برقرار می کند. این برنامه( مجوز) کنترل می کند که از کدام منابع و روشهای API می توان استفاده کرد. هنگامی که یک برنامه یک فراخوانی API را انجام میدهد، معمولاً یک token دسترسی OAuth را در هدرهای HTTPارسال می کند. این token به عنوان قسمتی از handshake OAuth تولید میشود و با حوزههایی مرتبط است که APIهایی را که میتوان با استفاده از token به آنها دسترسی داشت، تعیین میکند. یک tocken دسترسی می تواند با یک یا چند حوزه مرتبط باشد. هر token دسترسی ممکن است یک مدت انقضا داشته باشد که مدت زمان اعتبار رمز را کنترل می کند. اگر token منقضی شده باشد، باید یک tokenدسترسی جدید ایجاد شود. یک برنامه میتواند این کار را بهطور خودکار با ارائه یک تازه ساز token انجام دهد. توکن جدید ممکن است برای دریافت دسترسی جدید با دوره اعتبار جدید شده مبادله شود. استفاده از یک token جدید شده توسط یک برنامه برای ایجاد مجدد token دسترسی، به بهبود تجربه کاربر کمک می کند.
- واسطهي هویت: API ها معمولاً از پروتکل های OAuth برای پیاده سازی امنیت استفاده می کنند. با این حال، خدمات backend ممکن است با استفاده از SAML یا هر سرصفحه WS-Security دیگر ایمن شوند. از این رو، پلتفرم مدیریت API باید قابلیت ادغام با پلتفرم های Backend IDM و انجام وساطت هویت را داشته باشد. OAuth به SAML یک الزام بسیار رایج وساطت هویت است.
- حریم خصوصی داده ها: API ها داده هایی را که ممکن است حساس باشند را در معرض دید قرار می دهند. چنین داده هایی باید فقط برای گیرنده مورد نظر خود قابل مشاهده باشد. هرگونه داده حساس در حال انتقال باید رمزگذاری شود. اگر چنین دادههایی در جایی ثبت شوند، باید پوشانده شوند. بنابراین پلت فرم مدیریت API باید دارای قابلیت های حفظ حریم خصوصی داده ها باشد. حریم خصوصی داده ها را می توان از طریق رمزگذاری و پوشاندن داده ها به دست آورد. دادههای حساس باید با گواهیهای دیجیتال در حال انتقال، رمزگذاری شوند. پلت فرم مدیریت API باید از SSL/TLS پشتیبانی کند. برای برخی موارد استفاده، ممکن است به رمزگذاری اضافی عناصر خاص، در payload نیز نیاز باشد. پوشاندن داده های حساس در زمانهای بیکاری در بازرسیها و فایل های گزارش یکی دیگر از الزامات حفظ حریم خصوصی داده است که یک پلت فرم مدیریت APIباید ارائه کند.
- مدیریت کلید و گواهی: پلت فرم مدیریت API باید قابلیت مدیریت کلیدها و گواهینامه های مورد نیاز برای حفظ حریم خصوصی داده ها را نیز فراهم کند.
- حفاظت از DoS : API داده ها و دارایی های ارزشمند را خارج از دیوارهای آتش سازمان باز می کنند. این باعث افزایش سطح حمله می شود و آنها را مستعد حملات می کند. هکرها ممکن است سعی کنند با پمپاژ ترافیک بالای غیرمنتظره از طریق APIها، سیستم های BackEnd را از بین ببرند. حملات انکار سرویس (DoS) در APIها بسیار رایج هستند. از این رو، پلتفرم مدیریت API باید بتواند چنین حملاتی را شناسایی و متوقف کند.
- تشخیص تهدید: برای APIهای عمومی، احتمال حمله بازیگران بد با استفاده از محتوای مخرب زیاد است. حملات مبتنی بر محتوا میتوانند به شکل بد شکل XML یا JSON، اسکریپتهای مخرب یا SQL درونی بارگذاری باشند. چنین حملاتی ممکن است برای APIهای خصوصی و سازمانی نیز رخ دهد. پلتفرم مدیریت API باید بتواند فرمتهای درخواست نادرست یا محتوای مخرب را در payloadشناسایی کند و سپس در برابر چنین حملاتی محافظت کند. قابلیت تجسم خطا همچنین میتواند به شناسایی هر هکری که تلاش میکند نقطه ضعف قابل بهرهبرداری را در APIها پیدا کند، کمک کند.
- مدیریت ترافیک API
- سهمیه مصرف: تعداد فراخوانیهای API را که یک برنامه مجاز است در یک بازه زمانی معین تا انتهای کارش انجام دهد را مشخص میکند. فراخوانیهای بیش از حد مجاز ممکن است جلوگیری یا متوقف شوند. سهمیه مجاز برای یک برنامه به خط مشی تجاری و مدل کسب درآمد API بستگی دارد. یک هدف مشترک برای یک quota، تقسیم توسعه دهندگان به دسته هایی است که هر کدام سهمیه متفاوتی دارند و بنابراین رابطه متفاوتی با APIدارند. به عنوان مثال، توسعه دهندگان رایگانی که ثبت نام می کنند ممکن است اجازه داشته باشند تعداد کمی تماس برقرار کنند. اما توسعه دهندگان پولی (پس از تأیید آنها) ممکن است اجازه داشته باشند تعداد بیشتری تماس برقرار کنند.
- دستگیری Spike: افزایش غیرمنتظره ترافیک APIرا مشخص می کند. این به محافظت از سیستم های پشتیبان که برای تحمل بار زیاد طراحی نشده اند کمک می کند. افزایش بیش از حد حجم ترافیک API میتواند توسط پلتفرم مدیریت API برای محافظت از سیستمهای backend در صورت حملات DoS حذف شود.
- مورد Usage throttling: راه حلی را برای کاهش سرعت فراخوانی بعدی API ارائه می دهد. این می تواند به بهبود عملکرد کلی و کاهش اثرات در ساعات اوج مصرف کمک کند. این کمک می کند تا اطمینان حاصل شود که زیرساخت API با حجم بالای درخواست های گروه خاصی از مشتریان یا برنامه ها کند نمی شود.
- اولویت بندی ترافیک: به پلتفرم مدیریت API کمک می کند تا مشخص کند کدام دسته از مشتریان باید اولویت بیشتری داشته باشند. تماسهای API از مشتریان با اولویت بالا باید ابتدا پردازش شوند. همه پلتفرم های مدیریت API از این قابلیت پشتیبانی نمی کنند. از این رو، ممکن است یک رویکرد یا طراحی جایگزین برای اجرای اولویت بندی ترافیک مورد نیاز باشد.
2-3 ترجمه رابط
هنگامی که یک سازمان برای نمایش دادهها و خدمات خود یک APIایجاد می کند، باید اطمینان حاصل کند که رابط API به اندازه کافی قابل تفسیر و شهودی است تا توسعه دهندگان بتوانند به راحتی از آن استفاده کنند. APIها باید با رویکرد API-First ایجاد شوند، که ایجاد API را با تمرکز بر روی میزان مصرف و مصرف کننده ایجاد می کند. از این رو، رابط APIبه احتمال زیاد با سرویسهای backendکه ارائه میکند، متفاوت خواهد بود. بنابراین دروازه API باید بتواند رابط API را به شکلی تبدیل کند که قسمت backend بتواند آن را درک کند. برای پشتیبانی از ترجمه رابط(Interface Translation)، دروازه API باید موارد زیر را پشتیبانی کند:
- ترجمه فرمت: سیستم backend ممکن است انتظار داده در SOAP، یا XML، یا CSV یا هر فرمت اختصاصی دیگری را داشته باشد. چنین فرمت دادهای را نمی توان به راحتی توسط مصرف کننده API مصرف کرد. از این رو، دروازه API باید این قابلیت را داشته باشد که به راحتی از یک فرمت به فرمت دیگر تبدیل شود. اکثر پلتفرم های مدیریت API قابلیت تبدیل داده ها از XML به JSON (و بالعکس) را با نگاشت یک به یک از عناصر داده را فراهم می کنند. نگاشت از JSONبه هر فرمت داده دیگری ممکن است از طریق سفارشی سازی پشتیبانی شود.
- ترجمه پروتکل: اکثر سیستم های Backend که ارائه خدمات را میزبانی میکنند یک رابط SOAP برای مصرف کنندگان ارائه می دهند. با این حال، SOAPپروتکلی نیست که برای APIها برای ساخت برنامه، برای دستگاه های دیجیتال مناسب باشد. پلتفرمهای مدیریت API باید بتوانند یک تبدیل پروتکل از SOAPبه REST انجام دهند تا یک رابط سبک وزن برای مصرفکنندگان فراهم کنند. پشتیبانی از سایر تبدیلهای پروتکل - مانند HTTP(ها) به JMS/FTP/JDBC- ممکن است ویژگی خوبی در پلتفرم مدیریت APIباشد.
- نگاشت سرویس و داده: یک پلتفرم مدیریت API باید یک نمایش گرافیکی از مؤلفههای مختلف سرویس backend ارائه دهد که برای ارائه یک سرویس از طریق API کار میکنند. باید ابزارهای نگاشت خدمات را در خود جای دهد که کشف و توصیف دارایی های ارائه خدمات موجود را امکان پذیر می کند تا بتوان آنها را به طراحی API شما متصل کرد.
2-4 ذخیره سازی موقت یا cashing
کش مکانیزمی برای بهینه سازی عملکرد از طریق پاسخ دادن به درخواست ها با پاسخ های، مشابه و ثابت ذخیره شده، در حافظه است. یک پراکسی API می تواند پاسخ های Backend را که اغلب در حافظه تغییر نمیکنند ذخیره کند. از آنجایی که برنامهها روی یک URI درخواست میکنند، میتوان از پاسخ ذخیرهسازی شده برای پاسخ به جای ارسال آن درخواستها به سرور Backend استفاده کرد. بنابراین ذخیره کش می تواند به بهبود عملکرد API از طریق کاهش تاخیر و ترافیک شبکه کمک کند.
به طور مشابه، برخی از داده های ایستا و بدون تغییر مورد نیاز، برای پردازش درخواست، نیز ممکن است در حافظه ذخیره شوند. به جای رجوع هر باره، به منبع اصلی داده، می توان چنین داده هایی را از حافظه پنهان برای پردازش درخواست بازیابی کرد. تاریخ/زمان انقضا را می توان برای داده های ذخیره شده در حافظه پنهان تنظیم کرد، یا داده ها را می توان بر اساس قوانین تجاری تعریف شده باطل کرد. اگر داده منقضی شده باشد، داده های جدید از منبع داده اصلی بازیابی می شود و حافظه پنهان با داده های به روز شده به روز می شود.
2-5 مسیریابی خدمات
در مسین یابی خدمات، APIها باید درخواستهای مصرفکنندگان را به سمت سرویس Backend مناسب هدایت کنند که عملکرد تجاری را ارائه میکند. ممکن است بیش از یک سیستم backend وجود داشته باشد که عملکرد یک backend را ارائه می دهد. از این رو، پلت فرم مدیریت APIباید بتواند درخواست را به نمونه صحیح backend شناسایی و هدایت کند. پلت فرم مدیریت API باید از قابلیت های مسیریابی زیر پشتیبانی کند:
- نگاشت URL: مسیر URL ورودی ممکن است با مسیر سرویس Backendمتفاوت باشد. قابلیت نگاشت URLبه پلتفرم اجازه می دهد تا مسیر URLورودی را به مسیر سرویس Backendتغییر دهد. این نگاشت URLدر زمان اجرا اتفاق می افتد به طوری که منبع درخواستی توسط مصرف کننده از طریق ارسال سرویس بازیابی می شود.
- اعزام یا Dispatchingسرویس: این به پلت فرم مدیریت APIاجازه می دهد تا سرویس backendمناسب را انتخاب و فراخوانی کند. در برخی موارد، ممکن است برای انجام نوعی هماهنگی و بازگرداندن پاسخ انبوه به مصرف کننده، از چندین سرویس فراخوانی شود.
- نگه داری تجمعی (pooling) از اتصال: پلت فرم مدیریت APIباید بتواند مجموعهای از اتصالات را به سرویس backend حفظ کند. Pooling اتصال، عملکرد کلی را بهبود می بخشد. همچنین، ممکن است برای اهداف مدیریت ترافیک لازم باشد که اطمینان حاصل شود که فقط حداکثر تعداد ثابتی از اتصالات فعال در هر نقطه از زمان به سرویس backend باز میشود.
- متعادل سازی بار: تعادل بار به توزیع ترافیک API در سرویس های پشتیبان کمک می کند. ممکن است الگوریتم های Load balancing مختلف پشتیبانی شود. بر اساس الگوریتم انتخاب شده، درخواست ها باید به منبع مناسبی که سرویس را میزبانی می کند هدایت شوند. قابلیت تعادل بار نیز عملکرد کلی یک APIرا بهبود می بخشد.
2-6 همنواسازی خدمات
در بسیاری از سناریوها، دروازه API ممکن است نیاز به فراخوانی چندین سرویس backendدر یک توالی خاص یا به صورت موازی داشته باشد و سپس یک پاسخ انبوه را برای مشتری ارسال کند. این به عنوان هنواسازی خدمات شناخته میشود. قابلیت همنواسازیهای سرویس به ایجاد یک سرویس درشت دانه با ترکیب نتایج فراخوانی چندین سرویس backend کمک می کند. این به بهبود عملکرد کلی مشتری با کاهش تأخیر ایجاد شده به دلیل تماس های متعدد API کمک می کند. قابلیت هماهنگسازی سرویس ممکن است به دروازه APIبرای حفظ حالتهای بین تماسهای APIنیاز داشته باشد. با این حال، دروازه API باید تا حد امکان سبک و بدون حالت نگه داشته شود. از این رو، توصیه میشود که دروازه API فقط در هماهنگی سرویسهای read only که ماهیت غیرمعمولی دارند، درگیر باشد.
3 بررسی API Auditing، Logging و Analytics
کسبوکارها باید بینشی نسبت به برنامه API داشته باشند تا سرمایهگذاریهای مناسب را برای ساختن APIهای مناسب توجیه کنند و انجام دهند. آنها باید نحوه استفاده از یک APIرا بدانند، بدانند چه کسی از آن استفاده می کند و ارزش تولید شده از آن را ببیند. با بینش مناسب کسبوکار میتواند در مورد چگونگی افزایش ارزش کسبوکار با تغییر API یا با غنیسازی آن تصمیمگیری کند. یک دروازه API باید قابلیت اندازه گیری، نظارت و گزارش تجزیه و تحلیل استفاده از APIرا فراهم کند. داشبوردهای مناسب برای کسب و کار برای تجزیه و تحلیل API، ارزش کسب و کار را اندازه گیری و بهبود می بخشد. گزارش کسب درآمد در مورد استفاده از API، ارزش کسب و کار را اندازه گیری می کند. از این رو، یکی دیگر از ویژگی های مطلوب در یک پلت فرم مدیریت API است.
3-1 تجزیه و تحلیلAPI
تجزیه و تحلیل، اطلاعاتی را برای تصمیم گیری در مورد APIها خود، در آینده، در اختیار شما قرار می دهد. هنگامی که شاهد افزایش ترافیک API هستید، باید بدانید که آیا این نشان دهنده موفقیت برنامه API شما است یا اینکه آیا از آن به روشی مخرب استفاده می شود که منجر به افزایش ترافیک می شود. چگونه پذیرش API خود را تعیین می کنید؟ آیا علاقه بیشتری به APIهای شما در جامعه توسعه دهندگان وجود دارد؟ آیا تعداد برنامه های ساخته شده با استفاده از API شما افزایش یافته است؟ عملکرد APIها از نظر زمان پاسخگویی و توان عملیاتی چگونه بوده است؟ انواع مختلف دستگاه هایی که برای دسترسی به API ها استفاده می شوند چیست؟ APIها چگونه در سراسر جهان پذیرفته شده اند؟ به عنوان یک ارائه دهنده و مصرف کننده API، باید پاسخ این سوالات و بسیاری دیگر را بدانید. هرچه بیشتر بدانید، بهتر می توانید تشخیص دهید که چه اتفاقی در حال رخ دادن است. برای تصمیم گیری اینکه کدام ویژگی باید به برنامه API شما اضافه شود، به معیارهایی نیاز دارید. تجزیه و تحلیل APIپاسخ به تمام پرس و جوها است.
پلتفرم مدیریت API باید توانایی های زیر را برای تجزیه و تحلیل فراهم کند.
3-1-1 ثبت فعالیت
گزارش فعالیت، گزارش اولیه دسترسی API، مصرف، عملکرد و هر استثنا(exeption) را فراهم می کند. این پلتفرم باید اطلاعاتی در مورد اینکه چه کسی از یک API استفاده میکند، از چه نوع برنامهها و دستگاههایی که APIاز آنها فراخوانی میشود، و کدام منطقه جغرافیایی منبع ترافیک API است، بگیرد و ارائه دهد. باید آدرس IP مشتریان و همچنین تاریخ و ساعت دریافت درخواست و ارسال پاسخ را ثبت کند. دروازه در پلت فرم مدیریت API باید ثبت کند که کدام API و روش توسط مشتری فراخوانی می شود. اطلاعات مختلف مانند URI، فعل HTTP، پروکسی API، برنامه توسعه دهنده و سایر اطلاعات را می توان برای هر فراخوانی API وارد دروازه کرد. پلتفرم میتواند این اطلاعات را در زمان دیگری پردازش کند تا گزارشهای معنیداری برای تجزیه و تحلیل API ارائه کند. معیارهای عملکرد API و کدهای پاسخ/خطا نیز باید به عنوان بخشی از گزارش فعالیت ثبت شوند.
3-1-2 حسابرسی کاربر
حسابرسی کاربر می تواند به مدیر API کمک کند تا اطلاعات تاریخی را برای تجزیه و تحلیل افرادی که به یک API دسترسی دارند، زمان دسترسی به آن، نحوه استفاده از آن و تعداد فراخوانیهایی که از مصرف کنندگان مختلف API انجام میشود، بررسی کند.
3-1-3 گزارش ارزش کسب و کار
گزارشهای ارزش تجاری، ارزش مالی و نقدی مرتبط با برنامه APIرا اندازهگیری میکنند. گزارش های کسب درآمد از استفاده از API، اطلاعاتی را در مورد درآمد ایجاد شده ارائه می دهد.
دروازه API باید بتواند گزارش های درآمدزایی استفاده از API را ارائه دهد. برخی از APIها ممکن است مستقیماً درآمدزایی داشته باشند، اما بسیاری از آنها یک مدل غیر مستقیم برای کسب درآمد دارند. از این رو، گزارشدهی مبتنی بر ارزش اضافی نیز باید در یک پلت فرم مدیریت API برای اندازهگیری مشارکت مشتریان امکان پذیر باشد. تعاملات را می توان با تعداد کاربران منحصر به فرد، تعداد توسعه دهندگان ثبت نام شده، تعداد توسعه دهندگان فعال، تعداد برنامه های ساخته شده با استفاده از API، تعداد برنامه های فعال و بسیاری موارد دیگر اندازه گیری کرد.
تجزیه و تحلیل پیشرفته
پلتفرم مدیریت API باید بتواند متغیرهای سفارشی را از درون بار پیام برای گزارش تحلیلی پیشرفته استخراج و ثبت کند. باید به مدیران API و مدیران محصول امکان ایجاد گزارش های قابل اتصال و سفارشی از اطلاعات گرفته شده را ارائه دهد.
3-1-4 نظارت در سطح سرویس
پلتفرم مدیریت API باید آمار عملکردی را ارائه دهد که تأخیر در پلتفرم و تأخیر فراخوانیهای پشتیبان را ردیابی کند. این به مدیر API کمک می کند تا منبع مشکلات عملکرد گزارش شده در هر API را پیدا کند. پلتفرم باید این قابلیت را داشته باشد که گزارش هایی در مورد خطاهای ایجاد شده در طول پردازش ترافیک API در داخل پلتفرم یا مواردی که از قسمت Backend دریافت می شود، ارائه دهد. طبقه بندی خطاها بر اساس نوع، فراوانی و شدت به مدیران API کمک ارزشمندی برای عیب یابی می دهد.
4 فعال سازی توسعه دهنده برای API ها
یک برنامه API بدون مشارکت فعال یک جامعه توسعه دهنده نمی تواند موفق باشد. توسعه دهندگان برنامه از APIها برای ساخت برنامه های تلفن همراه یا ایجاد یکپارچگی سفارشی بین دو یا چند برنامه استفاده می کنند. از این رو، توسعه دهندگان باید بدانند که کدام APIدر دسترس است، عملکرد آنها چیست و چگونه می توان از آنها استفاده کرد. توسعه دهندگان باید زمین بازی برای تجربه و آزمایش APIها برای استفاده موثر از آنها در برنامه های خود داشته باشند. یک پلت فرم مدیریت APIباید خدماتی را ارائه دهد که توسعه دهندگان را قادر می سازد تا با استفاده از API ها برنامه بسازند. یک پورتال توسعه دهنده می تواند این خدمات را ارائه دهد.
4-1 پورتال توسعه دهندگان
پورتال توسعهدهنده یک وبسایت سفارشیسازی شده است که به یک ارائهدهنده API اجازه میدهد تا خدماتی را به جامعه توسعهدهنده ارائه دهد. این اساساً یک سیستم مدیریت محتوا است که APIها را مستند می کند همچنین به مستند سازی عملکردها، رابط ها، راهنماهای شروع، شرایط استفاده و موارد دیگر میپردازد. توسعه دهندگان می توانند از طریق پورتال، ثبت نام کنند و برنامه های خود را برای استفاده از API ها ثبت کنند. این می تواند با توسعه دهندگان دیگر در جامعه از طریق وبلاگها و انجمنهای موضوعی، ارتباط برقرار کند. پورتال همچنین می تواند، برای پیکربندی و کنترل درآمدزایی APIها استفاده شود. کسب درآمد به توسعه دهندگان، امکان دسترسی سلف سرویس، به صورتحساب و گزارشها، کاتالوگها و طرحها و تنظیمات خاص کسب درآمد را میدهد.
پورتال توسعهدهنده پلتفرم مدیریت API باید شامل قابلیتهایی باشد که در بخشهای زیر توضیح داده شده است.
4-1-1 کاتالوگ و مستندات API
به عنوان یک ارائه دهنده API، به یک پلتفرم برای عمومی کردن و مستندسازی APIهای خود نیاز دارید. سرویسهای فعالسازی توسعهدهنده باید به یک ارائهدهنده API اجازه دهد تا کاتالوگ قابل کشف API را منتشر کند. کاتالوگ API گاهی اوقات به عنوان یک رجیستری APIنیز شناخته می شود. توسعه دهندگان باید قادر به جستجوی کاتالوگ بر اساس متادیتا و تگ های مختلف باشند. کاتالوگ باید عملکرد API، رابط آن، راهنماهای نحوه استفاده، شرایط استفاده، اسناد مرجع و غیره را مستند کند. اطلاعات مربوط به نسخه های API موجود نیز باید در اسناد گنجانده شود.
4-1-2 پشتیبانی توسعه دهندگان
در پشتیبنی، APIهای REST که برای درستی طراحی شده اند معمولاً برای توسعه دهندگان، بسیار قابل درک هستند. توسعه دهندگان برنامه، می توانند به راحتی از آنها برای توسعه برنامه، استفاده کنند. با این حال، ارائهدهنده API باید منابعی را فراهم کند که توسعهدهندگان بتوانند از آنها برای ساخت برنامههای نوآورانه استفاده کنند. اسناد و شتاب دهنده های خوب API در قالب کیت های آزمایش و توسعه می توانند به سرعت بخشیدن به پذیرش APIها کمک کنند. مستندات APIنه تنها باید رابط APIرا توصیف کند، بلکه باید راهنماهای نحوه تعامل با APIها را نیز ارائه کند. پورتال توسعهدهنده میتواند کنسولهای آزمایشی تعبیهشده را ارائه کند که توسعهدهندگان میتوانند از آن برای بازی با یک API و درک آن استفاده کنند. کد نمونه ای که استفاده از APIها را نشان می دهد می تواند به عنوان یک راهنمای شروع، سریع عمل کند و برای توسعه دهندگان برنامه بسیار مفید باشد. توسعهدهندگان برنامه اغلب به دنبال کتابخانههای مخصوص دستگاه میگردند تا با سرویسهایی که توسط APIها در معرض دید قرار میگیرند، مانند SDKهای قابل دانلود در پورتال توسعهدهنده تعامل داشته باشند.
4-1-3 مقبولیت از نظر برنامهنویس
برای شروع استفاده از APIها، توسعه دهندگان باید در سیستم ارائه دهنده API ثبت نام کنند تا اعتبار دسترسی را دریافت کنند. توسعه دهندگان می توانند به صورت مستقل یا به عنوان بخشی از یک شرکت ثبت نام کنند. فرآیند ثبت نام باید ساده و آسان باشد. توسعهدهندگان باید بتوانند فرآیند ثبتنام خود را طی کنند و APIهای موجود از ارائهدهنده API را مشاهده کنند. سپس توسعه دهندگان می توانند یک محصول APIرا انتخاب کرده و برنامه های خود را برای استفاده از آن ثبت کنند. پس از ثبت نام و تایید موفقیت آمیز، یک کلید APIبه همراه یک رمز برای شناسایی منحصر به فرد برنامه تولید می شود. از کلید API به عنوان کلید برنامه یا شناسه مشتری نیز یاد می شود. بر اساس شرایط و ضوابط و تنظیم مدل کسب درآمد، فرآیند تأیید ممکن است خودکار یا دستی باشد. در تأیید دستی، یکی از اعضای تیم مدیریت API درخواست ثبت نام را تأیید می کند. کلید API تنها پس از تأیید موفقیت آمیز برنامه تولید می شود. در برخی موارد، توسعه دهندگان ممکن است بخشی از یک شرکت را تشکیل دهند. در چنین سناریوهایی، یک قابلیت مدیریت کلید مهم است تا مصرفکنندگان API بتوانند کلیدهای API را در سازمان خود اضافه، اصلاح یا لغو کنند.
4-1-4 مدیریت جامعه
توسعه دهندگان برنامه اغلب دوست دارند نظرات توسعه دهندگان دیگر جامعه را بدانند. آنها ممکن است بخواهند با یکدیگر همکاری کنند و آموخته ها و تجربیات استفاده از API خود را با یکدیگر به اشتراک بگذارند. وبلاگ ها و انجمن ها بخش عمده ای از همکاری و مدیریت جامعه را تشکیل می دهند. توسعه دهندگان ممکن است تجربیات خود را در مورد استفاده از API از طریق پست های وبلاگ به اشتراک بگذارند. ممکن است چنین پستهایی قبل از اینکه برای همه قابل مشاهده باشند، باید توسط ارائهدهنده API تعدیل شوند. یک ارائهدهنده API همچنین ممکن است وبلاگی ایجاد کند تا بهروزرسانیها و برنامههای آینده را با جامعه مصرفکنندگان API به اشتراک بگذارد. توصیه ها و بهترین روش ها در مورد استفاده از API نیز ممکن است در وبلاگ ها و انجمن های گفتگو به اشتراک گذاشته شود. یک توسعهدهنده همچنین باید بتواند مشکلات مربوط به API یا استفاده از آن را به تیم پشتیبانی ارائهدهنده API گزارش دهد. پورتال توسعه دهنده ممکن است پیوندی برای افزایش تیکتهای پشتیبانی داشته باشد. وبلاگ ها و انجمن های یکپارچه می توانند به ایجاد یک جامعه واقعاً پویا برای افزایش استفاده از API های ارائه دهنده کمک کنند.
5 مدیریت چرخه حیات API
مدیریت چرخه عمر API این قابلیت را فراهم می کند که چگونه یک APIتوسعه یافته و برای مصرف کنندگان منتشر شود. APIهای منتشر شده می توانند توسط مصرف کنندگان برای ساخت برنامه استفاده شوند. آنها می توانند مشکلات را گزارش کنند یا درخواستی برای یک ویژگی API جدید مطرح کنند. یک پلت فرم مدیریت APIباید قابلیت های زیر را برای مدیریت چرخه عمر API فراهم کند.
5-1 ایجاد API
یک API به عنوان نمای خارجی برای تعامل با سرویسهای backend عمل میکند. تیم API باید بتواند رابط REST را برای API طراحی کند و یک پروکسی API برای تعامل با سرویسهای backend ایجاد کند. یک پروکسی API به عنوان یک نمای خارجی عمل می کند تا خدمات پشتیبان را به طور ایمن در معرض دید مصرف کنندگان قرار دهد. خطمشیهای پیوستشده در مسیرهای جریان پراکسی API باید بتوانند امنیت، مدیریت ترافیک، ترجمه پیام، رمزگذاری، فیلتر کردن، ذخیرهسازی، هماهنگسازی و مسیریابی را پیادهسازی کنند. پس از تکمیل توسعه، تیم APIباید قادر به استقرار و آزمایش APIاز طریق یک کنسول باشد. یک کنسول تعبیه شده برای آزمایش API ها می تواند بسیار مفید باشد و می تواند به کاهش زمان توسعه کمک کند. پلتفرم مدیریت API باید ابزارهایی را فراهم کند که ایجاد API ها را امکان پذیر می کند و متعاقباً آنها را قبل از انتشار برای تولید در یک محیط استقرار و آزمایش می کند.
5-2 انتشار API
هنگامی که یک API ایجاد شد، قبل از اینکه بتوان آن را کشف و استفاده کرد، باید در یک محیط منتشر شود. بنابراین پلتفرم مدیریت API باید ابزارهایی را فراهم کند که بتوان از آنها برای انتقال APIها از محیط های پایین تر و استقرار به تولید استفاده کرد. پس از استقرار آن در تولید، مشخصات APIو سایر جزئیات باید در پورتال توسعهدهنده منتشر شود تا مصرفکنندگان بتوانند آن را کشف کرده و در برنامههای خود از آن استفاده کنند. در صورت استقرار نادرست، پلتفرم باید قابلیت بازگشت به نسخه قبلی از API را فراهم کند.
5-3 مدیریت نسخه
APIها در طول زمان با الزامات تجاری جدیدتر تکامل می یابند. از این رو، مدیریت چندین نسخه از یک APIبرای پشتیبانی از مصرف کنندگان موجود، یک قابلیت مهم است که باید توسط پلت فرم مدیریت API ارائه شود. مدیریت نسخه همچنین باید امکان منسوخ کردن و بازنشستگی نسخه های قدیمی تر را فراهم کند. هنگامی که یک نسخه APIبه عنوان منسوخ علامت گذاری می شود، مصرف کنندگان موجود باید از طریق هشدارهای منسوخ شدن مطلع شوند. APIهای منسوخ شده ممکن است همچنان به ترافیک مصرف کنندگان موجود ادامه دهند. با این حال، مصرف کنندگان جدید نباید بتوانند برای استفاده از API های منسوخ ثبت نام کنند. با اخطار و دوره مناسب، APIهای منسوخ شده باید بازنشسته شوند و از پلتفرم حذف شوند تا از هرگونه هزینه تعمیر و نگهداری جلوگیری شود. بنابراین پلت فرم مدیریت API باید قابلیت مدیریت بازنشستگی یک API را فراهم کند.
5-4 تغییر اعلان
تغییرات در یک API ممکن است بر مصرف کنندگان آن تأثیر منفی بگذارد. از این رو، مصرف کنندگان باید از هرگونه تغییر برنامه ریزی شده در API مطلع شوند. توسعه دهندگانی که از APIاستفاده می کنند باید از هرگونه تغییر در API آگاه شوند. بنابراین پلتفرم مدیریت API باید مکانیزمی را برای اطلاع مصرف کنندگان APIاز هرگونه ارتقا یا قطعی APIارائه دهد. اطلاع رسانی را می توان از طریق ایمیل، پیامک یا رسانه های اجتماعی انجام داد. اعلانهای انتشار میتوانند بهروزرسانیهایی درباره نسخههای جدید و ویژگیهای اضافهشده به API ارائه دهند. مصرف کنندگان API باید در مورد زمان های توقف برنامه ریزی شده یا برنامه ریزی نشده مطلع شوند. یک پورتال توسعه دهنده API می تواند برای ارسال اعلان های انتشار و در دسترس بودن به کاربران مشترک استفاده شود.
5-5 مدیریت مسائل
پلت فرم مدیریت API باید این امکان را برای مصرف کنندگان API فراهم کند تا مشکلات موجود در APIها را ثبت کنند. توسعهدهندگان برنامههایی که API مصرف میکنند باید بتوانند هر گونه مشکل یا کاستی مربوط به APIخود را گزارش کنند. آنها باید بتوانند بلیط های پشتیبانی را جمع آوری کنند و در مورد استفاده از APIکمک بگیرند. مشکلات را می توان از طریق پورتال توسعه دهنده گزارش کرد. پلت فرم مدیریت API باید قابلیت ادغام گزارش عیبها و قابلیتهای مدیریت مسائل را در سیستمهای موجود درون سازمانی فراهم کند.
6 پلتفرم مدیریت APIدر دنیای منبع باز و ایران
از مجموعه ابزارهای منبع بازی که میتوان از آنها به منظور مدیریت APIها استفاده کرد عبارتند از:
API Umbrella
Tyk
KrakenD
Gravitee.io
APIman.io
WSO2 API Manager
Kong Enterprise
در ایران هم شرکتهایی در حال ارائهی پلتفرم مدیریت APIهستند مانند شرکت پلتکو.
این مطلب، بخشی از تمرینهای درس معماری نرمافزار در دانشگاه شهیدبهشتی است
مطلبی دیگر از این انتشارات
مهاجرت از سیستمهای قدیمی: راهکارهای عملی برای موفقیت در پروژههای پیچیده
مطلبی دیگر از این انتشارات
معماری نرمافزار در ابزارهای پردازش دادههای حجیم
مطلبی دیگر از این انتشارات
چگونه یک CTO بشویم