WSO2 چیست؟

معرفی WSO2 : این فناوری یک تکنولوژی متن باز و میان ابزاری (Middle ware) با زبان جاوا است. این تکنولوژی به صورت یک چهار چوب کاری (Frame Work) و مبتنی بر میکرو سرویس (WSO2 MSF4J) است. WSO2 پلتفرمی برای توسعه نرم افزار های جدید می باشد. این تکنولوژی در مارس ۲۰۱۶ ارائه شده است. ادعای این فناوری توسعه سریع و آسان نرم افزار، کارایی بالا (high-performance micro services) و پشتیبانی از کانتینر ها است. WSO2 برای ساخت بسیار سریع برنامه ها و کدنویسی و تولید نرم افزار به سبک های بسیار سریع استفاده میشود. WSO2 در کنار ویژگیهای زیادی که دارد به طور گسترده ای پشتیبانی از چارچوب Spring را نیز انجام میدهد. طبق ادعایی که از WSO2 میکند در موارد زیر نسبت به Spring boot برتری دارد:

  • Throughput
  • Memory consumption
  • Latency

Here is a summary of how MSF4J 2.0 compares against Spring Boot 1.3.5.

Screen Shot 2016-08-12 at 10.16.48 AM

در معماری Microservices، برنامه سمت سرویس دهنده به سرویس‌های مختلفی تقسیم میشود. هر سرویس یک فرآیند پردازشی مستقل است که به عنوان یکی از قابلیت‌های خاص برنامه سمت سرور به حساب می‌آید. به عنوان مثال یک سرویس وظیفه مدیریت حساب کاربران را به عهده دارد و سرویس دیگر بطور مستقل برای گردش کار استفاده می‌شود. برنامه‌های نوشته شده با این معماری اجباری برای اجرا شدن در سرورهای جداگانه را ندارند، مگر اینکه یک سرویس، شرایط خاصی از جمله مصرف بالای RAM یا نیاز به پردازش ویژه و زیاد در CPU را داشته باشد. در اینصورت بهتر است که سرویس از یک سرور مجزا اجرا شود. لازم است که سرویس‌ها در بستر شبکه با یکدیگر در ارتباط باشند.

ایده اصلی معماری میکروسرویس این است که نرم افزار را به بخش های کوچک مستقل از هم تقسیم کنیم که ارتباط این سیستم ها با هم ، نرم افزار اصلی ما را شکل خواهد داد . در این معماری هر کدام از سرویسها ، می تواند با زبان برنامه نویسی و پایگاه داده جداگانه ای نوشته شوند و از طریق واسط هایی مثل ReST فراخوانی و استفاده شوند.بیایید با مثال این مبحث را بررسی کنیم .
فرض کنیم من قصد نوشتن یک برنامه انبارداری را دارم . اگر بخواهم از معماری میکروسرویسی استفاده کنم ، من یک سیستم مستقل برای نظرات باید طراحی کنم که آدرس یک صفحه را که به آن بدهیم ، کل نظرات نوشته شده راجع به آن صفحه را برگرداند و در صورت نیاز ذخیره کند، یک سیستم هم برای احراز هویت و شناسایی کاربر، یک سیستم برای انجام گردش کار، یک سیستم برای مدریت اجناس داخل انبار ، یک سیستم برای مدیریت بخش مختلف سامانه و یک سیستم هم برای سفارش کالاهای در حال اتمام باید طراحی شود.
هر کدام از این سیستم ها کاملا مستقل از هم باید طراحی شود به گونه ای که بتوان آنرا به تیم جداگانه ای داد فقط ابتدا باید خدماتی که یک سرویس ارائه می کند و نحوه فراخوانی آنها را مشخص کنیم و بعد کار را به توسعه گران تحویل دهیم. اگر از پروتکل REST برای ورودی خروجی این سرویس ها هم استفاده کنیم ، نیاز به درایور یا واسط خاصی هم نداریم . هر سرویس با فراخوانی یک یوآرال ، خدمتی که نیاز دارد را دریافت می کند.
معرفی WSO2
معرفی WSO2

البته با همه مزایایی که معماری Microservices دارد با مشکلات زیر نیز مواجه هستیم:

  • از آنجایی که برنامه‌های سمت سرور نوشته شده با این معماری به سرویس‌های مختلفی تقسیم میشوند، گسترش و تنظیمات آنها می‌تواند کاری وقت گیر و طاقت فرسایی باشد.
  • از آنجایی که ارتباط بین سرویس‌ها در بستر شبکه انجام می‌شود، انتظار کندی عملکرد سرویس‌ها دور از ذهن نیست.
  • به دلیل ارتباطات شبکه‌ای، احتمال آسیب پذیری‌های امنیتی در این نوع برنامه‌ها بیشتر است.
  • نوشتن سرویس‌هایی که در بستر شبکه با سایر سرویس‌ها در ارتباط هستند سختی و مشکلات خود را دارد. برنامه‌نویس در این شرایط، درگیر برقراری ارتباط، رمزگذاری داده‌ها در صورت نیاز و تبدیل آنها می‌شود.
  • به دلیل مجزا بودن بخش‌های مختلف برنامه، مانیتور کردن و ردیابی عملکرد سرویس‌ها، یکی از کارهای اصلی توسعه دهنده یا استفاده کننده از برنامه است.
  • در مجموع سرعت برنامه‌های نوشته شده با معماری Microservices کندتر از برنامه‌های نوشته شده با معماری Monolithic است. دلیل آن محیط اجرایی برنامه‌ها است. برنامه‌هایی با معماری Monolithic بر روی حافظه سرور پردازش می‌شوند.
لایه های WSO2
لایه های WSO2

از رویکرد های مثبت در رابطه با استفاده از WSO2 میتوان بهرهگیری از فناوری های کانتینر سازی و مشخصا داکر اشاره کرد. چرا که بخشی عمده ای از زیر سرویس ها را میتوان به در بستر های مجازی سازی شده بدست آورد. برای کسب اطلاعات بیشتر به مبحث مربوط به معرفی داکر مراجعه کنید.

داکر و WSO2
داکر و WSO2

WSO2 دارای بخش ها و سرویس های مختلف بوده و گاها این سرویس ها را برای راحتی کار به صورت ویزاردی و گرافیکی ارائه میدهد. از مهمترین سرویس های ارائه شده توسط WSO2 می توان به موارد زیر اشاره نمود.

  • IDENTITY & ACCESS MANAGEMENT: از نکات قوت WSO2 به کنترل دسترسی و ACL قدرتمند آن اشاره کرد که مبتنی بر استاندارد SSO کار میکند
  • INTEGRATION: این یک ابزار ESB یا گذرگاه تبادل اطلاعات در اختیار میگذارد.
  • API MANAGEMENT: مدریت ارتباطات با سرویس های دیگر را عهده دار خواهد بود.
  • ANALYTICS: ابزار های تحلیل داده را در اختیار استفاده کنندگان قرار میدهد
  • INTERNET OF THINGS: اینترنت اشیاء
  • API CLOUD: ارتباط با کلود
  • IOT: اینترنت اشیاء و امکان برنامه نویسی با موبایل را فراهم میکند.
  • WSO2 Carbon: سکوی میان افزار سازمانی
  • MSF4J (Micro service Framework for Java): فریم ورک ساخت نرم افزار های میکرو سرویسی برای جاوا
  • WSO2 Stratos: سکوی میان افزار ابری
معرفی WSO2
معرفی WSO2

در ادامه هر یک از موراد بالا مورد بررسی قرار خواهد گرفت.

IDENTITY & ACCESS MANAGEMENT:

از نکات قوت WSO2 به کنترل دسترسی و ACL قدرتمند آن اشاره کرد که مبتنی بر استاندارد SSO کار میکند.  SSO مخفف Single Sign On به عمل وارد شدن یک کاربر به سایتها و برنامه‌های مختلف تنها با یک نام کاربری و گذرواژه یکسان میگویند.به این معنی که اطلاعات مربوط به اعتبار سنجی و تائید هویت کاربر یعنی user name و password ، در یک ناحیه امن بصورت موقت نگهداری میشود و از آن پس این کاربر بمنظور ورود به سایتها و بخشهای مختلف)دسترسی به برنامه‌های متعدد) نیازی نیست مجدداً Login نماید.

این سیستم قابلیت متمرکز کردن احراز هویت انواع سیستمهای نرم‌افزاری، فارغ از مکانیزم مورد استفاده برای احراز هویت را در خود دارد. در ساختار SSO کاربر صرفا یک نام کاربری و رمز عبور یکتا در شبکه دارد که بلافاصله بعد از اینکه وارد یک سیستم در ساختار SSO شود میتواند از تمامی منابعی که برای وی در شبکه تعریف شده است استفاده کند، بدون نیاز به اینکه برای هر منبع اطلاعاتی نام کاربری و رمز عبور جدیدی وارد کند.

قابلیت Single Sign On یا SSO برای برطرف کردن مشکل ورود کاربر با نامهای کاربری و رمزهای عبور متعدد به سیستم های مختلف برای دسترسی به منابع را برطرف می کند. یک کاربر برای پیدا کردن دسترسی به منابع مختلف در شبکه مجبور است تعداد زیادی رمز عبور را حفظ باشد و یا آنها را در جایی یادداشت کند که این رمز ها فراموش نشوند ، معمولا همین رمز ها هستند که توسط مهاجمین مورد سوء استفاده قرار می گیرند . در ساختار SSO کاربر صرفا یک نام کاربری و رمز عبور یکتا در شبکه دارد که بلافاصله بعد از اینکه وارد یک سیستم در ساختار SSO شود می تواند از تمامی منابعی که برای وی در شبکه تعریف شده است استفاده کند ، بدون نیاز به اینکه برای هر منبع اطلاعاتی نام کاربری و رمز عبور جدیدی وارد کند .

در SSO امنیت کلمه عبور بسیار حائز اهمیت است و اکانتهایی که بین سیستمها انتقال پیدا مینمایند باید بصورت رمزنگاری شده بکار گرفته شوند. سهولت در ویرایش اکانتها)مثل تغییر رمز عبور) و حذف حسابهای کاربری در مدیریت سیستمها، از مزیتهای SSO به شمار میایند.

ساختار پیاده‌سازی SSO از مراحل زیر تشکیل شده است:

  • استفاده از دایرکتوری مرکزی جهت Authentication
  • تصدیق کاربران بر اساس این دایرکتوری
  • تعیین مجوزهای کاربران بر اساسCredential های مربوطه

پیاده‌سازیSSOبه روشهای مختلفی صورت میپذیرد که دو روش آن در زیر آورده شده است:

  • اسکریپت: در این روش، اسکریپت اطلاعات اکانت کاربر را بصورت رمزگذاری شده به سیستم تشخیص هویت ارسال میکند و پس از تائید هویت، کاربر وارد سیستم میشود.
  • کوکی: در این روش کوکیهای سیستم کاربر به سروری که کاربر میخواهد به آن وارد شود ارسال میشود. در واقع سیستمهای نرم‌افزاری تحت وبی که دامنه(Domain) مشابه دارند، اما بر روی چند سرور قرارگرفته‌اند، جهت تشخیص هویت کاربر از کوکیهایی استفاده مینمایند که بصورت رمزنگاری‌شده هستند و بر روی سیستم کاربر قرارگرفته‌اند. به این ترتیب هویت کاربر در تمامی سرورها تائید میشود.

INTEGRATION (WSO2 ESB)

این محصول دارای کامپوننت‌های مختلفی می‌باشد که به صورت توزیع‌شده، نصب و راه‌اندازی می‌شود و هر کامپوننت وظیفه خاص خود را انجام می‌دهد. برای نمونه این ابزار برای هر یک از قابلیت‌های امنیت، مدیریت جریان کاری و ثبت سرویس، کامپوننت جدایی ارائه نموده است، که این کامپوننت‌ها به صورت مستقل نیاز به دانش و راه‌اندازی دارد. این محصول راه‌حلی را به جای JBI ارائه کرده است و از JBI پشتیبانی نمی‌کند.

با توجه به نبود مستندات مناسب و وجود کامپوننت‌های متفاوت برای قابلیت‌ها، راه‌اندازی و استفاده از آن کار دشواری می‌باشد. با بررسی‌های انجام‌شده این نتیجه حاصل شد که این ابزار برای برطرف نمودن نیازمندی‌های خاص خود توسعه داده شده است. در ادامه  قابلیت WSO2 INTEGRATION با ESB های دیگر مورد مقایسه قرار گرفته است.

Forrester’s Weighting Fuse Source IBM (WESB) Mule Soft Oracle Progress Software Red Hat Software AG Tibco Software WSO2
CURRENT OFFERING ۵۰% ۴٫۶ ۳٫۶۸ ۴٫۳۵ ۴٫۷۴ ۴٫۷۸ ۳٫۲۱ ۴٫۸۹ ۴٫۷۱ ۴٫۴۷
Architecture ۴۰% ۴٫۸۸ ۳٫۹۲ ۴٫۷ ۴٫۵۸ ۵ ۲٫۹ ۴٫۸۸ ۵ ۴٫۴۸
Orchestration ۱۰% ۵ ۳ ۲٫۵ ۵ ۵ ۲٫۵ ۵ ۴ ۴
Mediation ۲۰% ۳٫۸۹ ۳٫۷۷ ۴٫۱۴ ۴٫۷۶ ۴٫۲۷ ۳٫۹۸ ۴٫۶۹ ۴٫۶۳ ۴٫۷۵
Connection ۱۰% ۴٫۷ ۴٫۶ ۵ ۴٫۶ ۴٫۶ ۳٫۳۳ ۵ ۴٫۶ ۴٫۲۶
Change and control ۲۰% ۴٫۵۲ ۲٫۹۹ ۴٫۴۷ ۵ ۴٫۸۴ ۳٫۳۷ ۵ ۴٫۶ ۴٫۴۹
STRATEGY ۵۰% ۳٫۴۸ ۳٫۱ ۲٫۷۸ ۴٫۲ ۴٫۰۵ ۳٫۰۵ ۴٫۶ ۴٫۴۵ ۲٫۹۵
Product strategy ۵۰% ۴٫۲ ۳٫۶ ۳٫۲ ۵ ۴٫۷ ۳٫۷ ۵ ۴٫۷ ۴٫۵
Strategic alliances ۱۰% ۱٫۸ ۵ ۳٫۸ ۵ ۵ ۴ ۵ ۵ ۳
Customer reference checks ۴۰% ۳ ۲ ۲ ۳ ۳ ۲ ۴ ۴ ۱
MARKET PRESENCE ۰% ۲٫۲ ۳٫۴۵ ۱٫۷۳ ۴٫۵۵ ۳٫۲۳ ۱٫۴۵ ۴٫۷۸ ۴٫۶۳ ۱٫۰۳
Installed base ۴۰% ۲٫۵ ۳ ۱٫۵ ۵ ۳ ۱ ۵ ۵ ۰٫۵
New customers ۳۰% ۲ ۲٫۵ ۲ ۴ ۳ ۱ ۵ ۵ ۱
Delivery footprint ۳۰% ۲ ۵ ۱٫۷۵ ۴٫۵ ۳٫۷۵ ۲٫۵ ۴٫۲۵ ۳٫۷۵ ۱٫۷۵
معرفی WSO2
معرفی WSO2

WSO2 Stratos: سکوی میان افزار ابری

WSO2 stratos یک بستر مبتنی بر ابر برای میزبانی برنامه های مبتنی بر معماری سرویس گرا و بستر بعنوان سرویس (PaaS) است. سرویس هایی مثل Dropbox جزو همین دسته قرار میگیرند.یا آفیس گوگل هم به همین صورت هست. استراتوس چند نوع سرویس مختلف را ارائه میدهد که هرکدام برای نوع فعالیت خاصی مناسبند .چند نمونه از کاربردهای استراتوس را میشود در قالب چند مثال نشان داد بعنوان مثال:
استراتوس فقط با چند کلیک به کاربرای خودش این امکان رو میدهد تا بتوانند یک بستر مبتنی بر(SOA) کامل را برای خودشان ایجاد کنند که شامل سرویسهایی مثل مخزن وب سرویس، ESb، موتور جریان کار،Registry و BAM هست.کاربران ممیتوانند یا فقط یک سرویس مشخص (بعنوان مثال Registry) داشته باشند، یااینکه تعدادی سرویس را انتخاب، یا سرویسهای فعلی را بعدا گسترش بدهند.

تمام این سرویس ها با هم یکپارچه شده و کاربر را، از فعالیتهایی مربوط به تنظیم و یکپارچه سازی آنها بی نیاز میکند. مهمتر از این، استراتوس از برنامه های مبتنی بر معماری شی گرا (SOA) معمولی پشتیبانی می کند؛ در نتیجه، مدل برنامه نویسی مبتنی بر(SOA) بدون تغییر حفظ میشد.

بعنوان مثال، با استراتوس یک کاربر میتواند آرشیو وب سرویس فعلی خودش را بدون هیچ تغییراتی پیاده سازی کند و یا نمونه دیگه اینکه حتی رابط های کاربری در کنسول تحت وب استراتوس همون ویژگی ها و شکل و شمایل معمولی ای که در ورژن مستقل وجود دارد حفظ میشود. در نتیجه در صورت استفاده از استراتوس هم انتقال آسانی داریم و هم مطالب بسیار کمی برای یادگیری نیاز هست .

استراتوس با نظارت بر روی بار وارده به برنامه ها از مقیاس بندی خودکار برای اون ها و تخصیص خودکار منابع به آنها پشتیبانی می کند. با اینکار منابع محاسباتی بصورت بهینه مورد استفاده قرار میگیرند و نیاز به تنظیمات و مدیریت پیچیده خوشه بندی و کلاسترینگ در سرور از بین میرود.
علاوه بر اینها ، مقیاس بندی خودکار این اجازه را کاربر نهایی میدهد تا با امکانات ابتدایی و کم شروع کند و بعد بر اساس نیاز خودش منابع رو بطور تدریجی افزایش بدهد و به این صورت فقط برای چیزی که مصرف میکند تنها هزینه پرداخت کند و هم از آنجایی که منابع بر اساس نیازموجود از طریق قابلیت چند مستاجره ای اختصاص داده میشود، هزینه پیاده سازی یک برنامه بر روی استراتوس در پایین ترین سطح ممکن قرار میگیرد. منطق چند مستاجره بطور خیلی ساده به معنای این هست که چند فرد روی یک بستر (با بطور خیلی ساده سرور) قرار دارند و اینطور هزینه ها برای اینها سرشکن میشود.

WSO2 Carbon: سکوی میان افزار سازمانی

Wso2 Carbon یک فریم ورک مبتنی بر کامپوننت برای ساخت سرور های مبتنی بر معماری شی گراست که ما به اختصار به آن (SOA)میگوییم،.WSO2 Stratos کارکردهایی که بستر کربن بعنوان یک سرویس ارائه می کند ارائه میدهد و خودش هم با استفاده از بستر کربن ساخته شده و سرویس هایی نظیر میزبانی وب سرویس،امنیت،ذخیره سازی داده،رابط های کاربری رو بعنوان سرویس های اصلی فراهم می کند.

کربن مفاهیمی مثل میزبانی وب سرویس،وساطتت، مدیریت سرویس ،ورود و فهرست سرویس ها و … را بعنوان اجزاء کربن ایجاد کرده و کاربرای نهایی میتوانند این گونه سرورهای (محصولات) خودشون رو با ترکیب زیرمجموعه از ویژگی ها با هم تعریف کنند. مثلا یک کاربر میتواند یا یک سرور فعلی را گسترش بده و یا محصولش را با ترکیب ویژگی های مختلف ایجاد کند. البته قابل ذکر است که این بستر صرفا سرویس گرا هست و مبتنی بر میکرو سرویس نمی باشد لذا پیشبینی میشود که در آینده توسعه آن متوقف و بجای آن یک روش مبتنی بر  میکرو سرویس ارائه شود.

 معرفی WSO2
WSO2

منابع:

https://jaxenter.com/performance-advantages-wso2-microservices-framework-for-java-2-0-to-spring-128340.html

http://wso2.com/products/data-services-server/

http://wso2.com/products/business-process-server/

http://www.faragostar.net/sso-authentication/

http://forum.ustmb.ir/thread2564.html

https://security.itpro.ir/articles/232/%D8%B4%D9%86%D8%A7%D8%B3%D8%A7%DB%8C%DB%8C-%D9%88-%D8%A7%D8%AD%D8%B1%D8%A7%D8%B2-%D9%87%D9%88%DB%8C%D8%AA-%D9%82%D8%B3%D9%85%D8%AA-%D8%AF%D9%88%D9%85-sso-%D9%88-kerberos-%D9%88-sesame-%D9%88-kryptonite

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *