در این مطلب قصد داریم در مورد پلتفرم مدیریت API توضیح دهیم.
پلتفرم مدیریت API
APIها در واقع نرمافزاری سازی خدمت یا محتوای یک سازمان است به نحوی که آن خدمت به سادگی و به روشی استاندارد در دسترس توسعهدهندگان لایه کاربرد یا طرف سوم قرار گرفته و آنها بتوانند مبتنی بر سرویسپایه یا محتوای سازمان تامین کننده، سرویسی ارزش افزوده برای کاربر نهایی تولید و عرضه کنند. زنجیره ارزش API در شکل زیر آمده است:
اما مساله مهمی در اینجا وجود دارد این است که باید به نحوی از پایداری، امنیت و پشتیبانی فنی و تجاری APIها اطمینان حاصل شود زیرا دیگر همه خدمات در یک مجموعه مشخص متمرکز نیست بلکه سیستمی از تعهدات میان افراد مختلف ایجاد شده است. یعنی باید امکانی فراهم شود تا APIهای تامینکنندگان مختلف محتوا و سرویس در کنار هم قرار گرفته و شرکتهای طرف ثالث، همکاران، شرکاء و حتی توسعهدهندگان آزاد بتوانند با آسودگی خیال و اطمینان از هر کدام از آنها یا ترکیبی از آنها استفاده نموده و سرویس ارزش افزوده جدید خلق نمایند. به همین ترتیب باید به نحوی از مدلهای کسبوکار مختلفی که در این زنجیره وجود دارد حمایت شود به عبارتی باید بستری برای تبدیل و تبادل ارزش میان اعضای زنجیره فراهم گردد.
برای حل این دست چالشها به وجود پلتفرمی یکپارچه برای مدیریت API ها نیاز است که بتواند کل چرخه زندگی API را مدیریت نمایند. به طور کل کارکردهای مورد انتظار از این پلتفرم عبارتند از:
- قابلیت انتشار و عرضه انواع APIها (و استانداردسازی عرضه APIها و فراخوانی آنها)
- مدیریت سطح دسترسی: احراز هویت و مجوز دسترسی سیستمها به یکدیگر و کاربران به سرویسها
- مدیریت نرخ دسترسی و اعمال سیاستها و قوانین به کارگیری
- مدیریت سرویسها شامل: پایش و نظارت (monitoring)، ثبت حداکثری وقایع (Logging)، نسخهبندی و مدیریت ویرایش، مدیریت پشتیبانی، مدیریت کاربران (Accounting)
مدیریت و توزیع بار در جهت حفظ حداکثر گذردهی - اندازهگیری و تحلیل میزان مصرف هر کدام از ذینفعان (شرکاء/ توسعهدهندگان/ کاربر نهایی) و تولید قبض
- گردآوری و تحلیل دادههای آماری کلان سیستم
در ادامه در ابتدا مروری اجمالی از تعریف و کاربردهای API ارائه خواهد شد و سپس پلتفرم مدیریت API شرح داده میشود. پیش از این مستند دو مستند دیگر با عناوین «مروری بر مفاهیم پایه در توسعه API» و «ملاحظات مطرح در توسعه API» ارائه شده است که مستند اول به تفصیل مفاهیم مطرح در حوزه API را شرح میدهد و مورد دوم الزامات لازم در طراحی APIها را بررسی مینماید. در این گزارش به بررسی پلتفرم API، ابزارهای متنباز و نحوه کاربری آنها پرداخته خواهد شد.
تعریف API و کاربردهای آن
واسط برنامه کاربردی یا API، امکان به کارگیری دادهها یا کارکردمندیهای یک سیستم نرمافزاری را فراهم مینماید. API روشی پایدار، سازمانیافته و استاندارد برای دسترسی به منابع نرمافزاری و اتصال سیستمهای مختلف نرمافزاری به یکدیگر میباشد. برای طراحی سیستمهای با کیفیت بالا و امکان به اشتراک گذاری داده و کارکردمندیها به صورت کارا، وجود API ضروری میباشد. همچنین API راهحلی برای اتصال، یکپارچهسازی و توسعه سیستمهای نرمافزاری پیچیده و بزرگ مقیاس است میباشد.
امروزه بسیاری از کسب و کارها در حوزههای مختلف صنعتی، کشاوزی، تجاری، پزشکی و… بدون نرمافزارها عملاً کاربردی ندارند و حتی انواع وسایل مختلفی که در اطراف ما قرار دارند نظیر اتومبیلها، وسایل الکترونیکی و خانگی در برگیرنده نرمافزار هستند. در حقیقت دنیای امروز دنیای نرمافزار میباشد. اما مساله اینجا است که این سیستمهای نرمافزاری عموماً مستقل از یکدیگر بوده و از طریق یک سیستم نمیتوان به سایر سیستمها دسترسی داشت. APIها امکان اتصال این سیستمها به یکدیگر را فراهم میکنند، به نحوی که با اتصال سیستمها و زیرسرویسها به یگدیگر موجب خلق سرویسهای جامعتر و با کاربردهایی فراتر شده و در نهایت قابلیت اتصال کسب و کارها به یکدیگر را میسر میکند . برای مطالعه بیشتر در خصوص تعریف API و انواع آن به گزارش مراجعه شود.
پلتفرم مدیریت API
همان طور که پیشتر ذکر شد، API دریچهای به دادهها و کارکردهای مختلف یک سازمان/سرویسدهنده است و توسعهدهندگان را قادر میسازد تا برنامههایی مرتبط با سامانههای داخلی سازمان/سرویسدهنده طراحی و پیادهسازی نمایند. همچنین APIها در تکنولوژیهای مختلف نظیر اینترنت اشیا، رایانش ابری و دادههای حجیم نقشی کلیدی را ایفا مینماید. هر چند طراحی و ارائه APIها برای دسترسی به دادهها و کارکردهای داخلی یک سازمان مزایای فراوانی از جنبههای تجاری و فنی دارد اما ضروری است که این دست از APIها از پایداری، امنیت و پشتیبانی مناسبی برخوردار باشند تا شرکتهای طرف ثالث، همکاران، شرکا و حتی توسعهدهندگان آزاد بتوانند با آسودگی خیال و اطمینان از آنها استفاده نمایند. از سوی دیگر APIها سبب ایجاد مجموعه زیادی از وابستگیها و چالشها ما بین سیستمهای ارائه دهنده API و سیستمهایی که از این APIها استفاده میکنند، میشوند که نیاز است به روشی مناسب مدیریت و حل گردد. چند نمونه از این چالشها عبارتند از:
- تغییر API تاثیر مستقیم بر علمکرد برنامههای کاربردی یا سرویس ارزشافزوده مبتنی بر آن میشود.
- سطوح دسترسی به API ها بسیار متنوع و متغییر است.
- هماهنگی میان تامین کننده API و مصرفکننده آن بسیار حیاتی است و باید تغییرات در یک API موجود و یا تولید یک API جدید به نحوی روشن و به سرعت به توسعه دهندگان و به طور کل مصرفکنندگان API اطلاع رسانی شود.
- امنیت سرویسدهی APIها و مدیریت امنیت اطلاعات در میان APIها و سرویسهای ارزش افزوده مبتنی بر آنها فوقالعاده مهم است.
- و ….
برای حل این دست چالشها نیاز به وجود پلتفرمی یکپارچه برای مدیریت API ها است تا بتواند کل چرخه زندگی API را مدیریت نمایند.
به طور کل میتوان کارکردهای مورد انتظار از این پلتفرم را به دو بخش تجاری و فنی تقسیم نمود:
- مدیریت قابلیتها و کارکردمندیهای فنی: دربرگیرنده مجموعهای از ابزارها برای کنترل و در دسترس بودن کارکردهای فنی API نظیر امنیت، کنترل سطح دسترسی، احراز هویت، کنترل نرخ دسترسی، مدیریت و توزیع بار، کارایی، نظارت و …
- مدیریت قابلیتها و کارکردمندیهای تجاری: مجموعه ابزارهای لازم برای کنترل و نمایش اینکه چه کسی و چگونه به APIها دسترسی داشته باشد. مواردی نظیر: سطوح دسترسی، تحلیل میزان استفاده توسط شرکاء/ توسعه دهندگان/ برنامههای کاربردی، مدیریت قوانین و سطوح دسترسی مختلف برای مخاطبان مختلف، وجود جریان کاری برای ثبت APIهای جدید، پشتیبانی از API و …
با وجود این دو سطح در کنار یکدیگر صحت و امنیت کارکرد API تضمین خواهد شد. علاوه بر این شرکتهای طرف سوم (۳rd party) به شکل صحیح و مناسبی از API استفاده خواهند کرد.
برخی از مشخصات کلیدی پلتفرم مدیریت API به شرح زیر است:
- مدیریت سطح دسترسی: احراز هویت و مجوزهای دسترسی سیستمها
- مدیریت نرخ دسترسی و سیاست و قوانین به کارگیری
- تحلیل و دادههای آماری
- نظارت (monitoring)
- ثبت وقایع (Logging)
- قابلیت انتشار و عرضه APIها
- مدیریت کاربران (Accounting)
- نسخه بندی
- پشتیبانی
- قابلیت محاسبه میزان مصرف و تولید قبض
ذی نفعان
پلتفرم مدیریت API دارای سه گروه اصلی از ذینفعان میباشد:
- ارائه دهندگان API: شامل توسعه دهندگان آزاد، صاحبان کسب و کارها که سرویس یا داده خود را از طرق API در اختیار مشتریان خود قرار میدهند و سازمانهای بزرگ میشود. این گروه از ذینفعان به قابلیتهایی نظیر طراحی، پیاده سازی و مدیریت APIها نیاز دارند. آنها عملاً APIها را ساخته و در اختیار دیگران قرار میدهند. شرکتهایی نظیر فیسبوک یا تویتر از همان ابتدا بر پایه API راهاندازی شدهاند. این شرکتها از همان ابتدای طراحی هر مولفه یا سرویسی به طراحی و بهروز رسانی API آن نیز فکر خواهند کرد. بنابراین در این سازمانها هنوز سیستمهای قدیمی وجود ندارد. اما شرکتهایی نیز هستند که مدل کسب و کار آنها به شکل دیگری بوده است و در چند سال اخیر به ارائه سرویس به صورت API روی آوردهاند. در این شرکتها تعداد زیادی از سیستمهای قدیمی وجود دارد که برای ارائه سرویس به خارج از سازمان مناسب نیستند و باید انبوهی از تغییرات بر روی آنها صورت گیرد. وجود APIها و پلتفرم مدیریت API برای این گروه تا حدودی میتواند مفید باشد.
- مصرفکنندگان API : این گروه از ذینفعان با بکارگیری APIها، برنامهها و راهکارهای جدیدی نظیر برنامههای کاربردی موبایل، سرویسهای ابری، تجهیزات هوشمند مورد نیاز در حوزه اینترنت اشیا و… را ایجاد میکنند. این گروه از ذینفعان با بکارگیری APIها تا حدود زیادی زمان رسیدن به بازار را کاهش میدهند زیرا میتوانند از سرویسهای آماده موجود استفاده کنند و هزینه و زمان خود را صرف تمرکز بر روی ارزش افزوده اصلی خود نمایند. این گروه نیز میتواند شامل توسعه دهندگان آزاد، صاحبان کسب و کارها و حتی سازمانهای بزرگ باشد. برای استفاده از APIها در توسعه برنامه های جدی نیاز است تا توسعه دهندگان با نحوه فراخوانی و استفاده API آشنا باشند. در برخی موارد مصرف کنندگان باید به طریقی برای دسترسی به API مورد نیاز خود و مستندات مربوطه ثبت نام نموده و حتی هزینهای را به ازای فراخوانی APIها پرداخت نمایند.
- کاربران نهایی: کاربران نهایی به طور مستقیم APIها را فراخوانی نمیکنند. بلکه آنها از یک برنامه موبایل یا وب سایت استفاده میکنند و این برنامه با استفاده از APIها طراحی شده است. این برنامه APIها را فراخوانی میکند(شکل ۱). کاربران نهایی دغدغهای در مورد APIها ندارند و حتی از فراخوانی آنها نیز مطلع نمیشوند اما APIها به طور مستقیم بر روی کارایی برنامه تاثیر خواهند داشت.
سه مورد فوق از ذینفن اصلی اکوسیستم API هستند اما در صورتی که دقیقتر و جزئیتر به مساله نگاه شود، میتوان دو ذینفع ارائه دهنده و مصرف کننده API را نیز به گروههای کوچکتری تقسیم نمود. برای مثال در بخش ارائه دهندگان API نقش توسعه دهنده API با مدیر و صاحب کسب و کار دو نقش متفاوت است و نیازمندیهای متفاوتی را نیز دربرمیگیرد. به همین شکل در بخش مصرفکنندگان API.
معماری کلان
به منظور پوشش این مشخصات کلیدی و دو دید تجاری و فنی، دو مولفه اصلی نیاز است:
API Portal: به منظور پوشش کارکردهای تجاری. در این پرتال فراهم کنندگان API لاگین نموده و APIهای خود را ثبت مینمایند. مخاطب اصلی این پرتال مصرف کنندگان APIهستند که APIهای مورد نیاز خود را در این پرتال جستجو کرده و توضیحات مربوطه را مطالعه و با نحوه کارکرد آن آشنا میشوند. در این پرتال میتوان تحلیلهای آماری از میزان استفاده، توزیع جغرافیایی، میزان رخداد خطا و … نیز ارائه نمود.
API Gateway: با هدف پیادهسازی کارکردهای فنی. این پلتفرم واسط یکسانی برای تمامی APIها ارائه میدهند همچنین مواردی نظیر مدیریت دسترسی کاربران، caching، مدیریت APIها و … را نیز برعهده دارد.
API Gateway
همان طور که در شکل زیر نمایش داده شده است، این مولفه بین منابع اصلی ارائه دهنده سرویس و برنامههای کاربردی که در انتها از APIها استفاده خواهند کرد، قرار میگیرد و سبب افزایش امنیت و کارایی خواهد شد.
برخی از کارکردهایی این مولفه عبارتند از:
- امنیت: با توجه به اینکه این مولفه در جلوی سرویس اصلی(سرویس ارائه دهنده API) قرار میگیرد، در صورتی که به خوبی پیکربندی شود میتواند به عنوان یک سد و لایه حفاظتی عمل نموده و در افزایش امنیت ارائه دهندگان API موثر باشد.
- کارایی: افزایش کارایی API و به تبع آن برنامه کاربردی که از API استفاده میکند و کاهش زمان downtime
- انتقال داده: این مولفه میتواند به صورت یک پروکسی عمل نموده و سرویس backend را به صورت یک API استاندارد و app-friendly عرضه نماید.
- لاگ نمودن: رصد و نگهداری تمامی رخدادهایی که در سیستم اتفاق میافتد به طور خاص فراخوانیهای خاص APIها که میتواند پایه خوبی برای تحلیلهای آتی باشد.
یکی از مهمترین مزایای این مولفه این است که ارتباط بین ارائه دهنده سرویس و برنامه کاربری را از حالت درهم تنیده و مستقیم خارج نموده و به روشی استاندارد تبدیل مینماید. که این امر علاوه بر افزایش امنیت، سبب سادگی فرایند طراحی، پیادهسازی و مدیریت API میشود. از دیگر مزایای این مولفه، این است که ارائهدهندگان APIهای قدیمی، نیازی نیست که APIهای خود را به روز نمایند یا حتما به ازای انواع برنامههای کاربردی و پروتکلهای ارتباطی APIهای مختلفی را طراحی و پیادهسازی نمایند. API Gateway به عنوان یک پروکسی عمل میکند و یک نقطه مرکزی تبدیل داده را فراهم مینماید که از طریق آن کل ترافیک میتواند به فرمت یا پروتکل صحیح تغییر نماید. این ویژگی، مزایای زیادی دارد که از آن جمله میتوان به موارد زیر اشاره نمود:
- وجود یک مولفه مرکزی سبب میشود که بتوان تمامی سیاستهای لازم را بر روی تمامی APIها اعمال نمود.
- کمینه سازی کدهای لازم در لایه زیرساخت که در دراز مدت سبب کاهش هزینه نگهداری و به روز رسانی خواهد شد.
البته لازم به ذکر است که وجود یک نقطه مرکزی، همواره این پتانسیل را خواهد داشت که به یک کلوگاه تبدیل شود. برای حل این مشکل میتوان با بکارگیری معماری توزیع شده و همچنین مکانیزمهای افزایش دسترس پذیری این ریسک را به مقدار زیادی کاهش داد.
API Portal
در حالی که API Gateway اکثر کارکردهای فنی مورد نیاز پلتفرم جهت طراحی، پیادهسازی و مدیریت API را فراهم میکند، اما تمامی نیازهای توسعه دهندگان را پوشش نخواهد داد. برای مثال:
- جستجو و یافتن API مورد نیاز: مصرف کنندگان API نیاز دارند تا بتوانند به درگاهی مراجعه کرده و از طریق آن API مورد نظر خود را جستجو و بیابند.
- مستندات و آموزش: نیاز است که به ازای هر API به روشی مناسب مستندات و مثالهای مختلف در اختیار توسعه دهندگان قرار گیرد تا بتوانند با نحوه بکارگیری API آشنا شوند.
- تحلیل: وجود تحلیلهایی از میزان مصرف، کارایی و نوع استفاده از APIها هم برای ارائه دهندان و هم برای مصرف کنندگان میتواند بسیار مفید باشد.
- جامعه: فراهم نمودن امکانی که توسعه دهندگان بتوانند تجربیات خود را با یکدیگر به اشتراک گذارند.
- صدور قبض و میزان مصرف: برخی از صاحبان کسب و کار از طریق فراخوانی APIها کسب درآمد مینمایند بنابراین ضروری است تا بتوان میزان مصرف هر کاربر را به طور جداگانه رصد نمود.
پرتال API که در برخی از متون به پرتال توسعه دهندگان معروف است،
معماری مرجع IBM
شکل انتهایی معماری مرجع IBM را نمایش میدهد. در این شکل سه بخش اصلی مشاهده میشود: قابلیتهای عرضه شده برای مصرف کنندگان API، کارکردهای مربوط به بازار و قابلیتهای عرضه شده برای ارائه دهندگان API.
شکل معماری مرجع شامل بخشهای زیر میباشد:
- کانالها: این بخش شامل پلتفرمهایی است که امکان عرضه API به بازار و صرف آن را فراهم میکنند نظیر تلفنهای هوشمند، تبلتها، رایانهها، تلویزیون و برنامههای کاربردی بر روی انواع تجهیزات هوشمند.
- قابلیتهای مورد نیاز برای مصرف کنندگان API: مجموع قابلیتهای اساسی مورد نیاز مصرف کنندگان API
- < >: اضافه کردن یک API به پلتفرم و فراخوانی آن
Platform and Infrastructure Services: مجموعه سرویسهایی نظیر مانیتورینگ، تحلیل داده و فضای ذخیرهسازی که به توسعه دهندگانی که قصد استفاده از APIها را دارند ارائه میشود. - Dev/Ops and Application management for APIs: مجموعه فرایندها و قابلیتهایی که با هدف مدیریت تغییرات و پوشش مفهوم Continus delivery طراحی شدهاند.
- Mobile/Client Accelators: شامل مجموعه قابلیتهایی جهت تسریع فرایند توسعه برنامه های کاربردی نظیر SDKها
- بازار: شامل آن دسته از ابزارها و مولفههایی است که جزیی از اکوسیستم API میباشند نظیر سیستمهای مورد نیاز پشتیبانی، بازاریابی، شبکههای اجتماعی به منظور دریافت بازخورد، تبلیغات و… ، امکان ثبتنام، رصد و تغییر پیکربندها به طور خودکار و توسط خود فرد. در مجموع آن دسته از قابلیتهایی را شامل میشود که امکان استفاده و بکارگیری APIها را تسهیل و تسریع میبخشد.
- Capabilities for API providers: مجموعه قابلیتهای پایه مورد نیاز برای مدیریت APIها نظیر امنیت، مدیریت چرخه زندگی، مانیتورینگ، تحلیل داده، طراحی API و…
- سرویسها: در بخش پایینی معماری مرجع، سرویسها قرار دارنند. عموماً سرویسهایی در لایه زیرساخت که میتوانند سرویسهای ابری نیز باشند. این دست سرویسها کمک میکنند تا بتوان سرویسهای لایه پلتفرم را به شکل بهتری ارائه نمود.
- API Strategy Consulting: این بخش شامل مشاورههایی جهت استراتژی کسب و کار، بازاریابی، یافتن بازار هدف و در مجموع بررسی عوامل موفقیت API میباشد.
- API Technical Consulting : مشاورههایی در حوزههای فنی به منظور طراحی و پیاده سازی هر چه بهتر API