علیرضا هاشمی

کارشناس ارشد مهندسی فناوری اطلاعات گرایش تجارت الکترونیک

علیرضا هاشمی

کارشناس ارشد مهندسی فناوری اطلاعات گرایش تجارت الکترونیک

معرفی راهکار ESB WSO2

مقدمه

یکی از مشکلات مشترک فناوری اطلاعات اکثر سازمان ها در کشور، بحث عدم یکپارچگی سرویس های نرم افزاری و بانک های اطلاعاتی است. حتی تحقیقات جهانی نشان می دهد که این مشکل فقط مخصوص به ایران نیست به طوری که در ارزیابی صورت گرفته از مدیران فناوری اطلاعات شرکت های بزرگ جهانی مشخص شده که بالاترین اولویت کاری اکثر آنها " یکپارچه سازی و سرویس گرایی " بوده است. برای انجام یکپارچه سازی تاکنون چندین روش و فناوری در طی سالها توسعه یافته است که کامل-ترین و جدیدترین آنها گذرگاه خدمات سازمانی (Enterprise Service Bus) است.

گذرگاه خدمات سازمانی (ESB) از یک سو، SOA برنامه ها و ویژگی های کسب وکار را به عنوان سرویس از طریق یک رابط پیدا می کند. از سوی دیگر ESB میتواند از این رابط استفاده کند. الگوی SOA و همزمانی با یکدیگر، سیستم های پیچیده ای را به دنبال استانداردهای باز تشکیل میدهند که برای کسب و کارها از اهمیت حیاتی برخوردار است.

به عنوان یک راه حل برای یکپارچه سازی برنامه های کاربردی ناهمگن به دنیا آمده و بنابراین نشان داده شده که یک راه حل یکپارچه سازی قوی بر اساس استانداردهای باز و به عنوان مبنایی برای محیط های پیچیده SOA می باشد.

در زمینه شبکه های توزیع شده و کاربردهای وابسته به شل که توسط SOA ارائه شده، یک روش جدید برای یکپارچه سازی است، همچنین به عنوان یک لایه میان افزار دیده می شود که امکان یکپارچه سازی برنامه های کاربردی ناهمگن را فراهم می کند.

 

ویژگی های اساسی ESB

·      مجازی سازی : مجازی سازی به عنوان یک Proxy برای ارائه دهنده سرویس عمل می کند و درخواست های مشتری را مدیریت می کند. مشتری می تواند اعتبار، اجازه و حسابرسی را مدیریت کند، بنابراین ارائه دهنده سرویس میتواند صرفاً بر منطق تجاری تمرکز کند.

·      میانجی گری : میانجی گری یا انتقال پیام؛ در این نقش، شرکت کنندگان قابلیت دریافت درخواست ورودی و انتقال بار مفید پیام، قبل از ارسال آن به سرویس وب نهایی را دارند.

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

این ویژگی ها به عنوان ویژگی های اصلی یک برنامه کاربردی شناخته شده اند و باید ادغام شوند.

 

انواع میان افزارهای ESB

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

1.   سطح اول،  ESB ها، میان افزارهایی هستند که صرفا برای یکپارچه سازی نرم افزارهای سازمان استفاده می شوند و اصطلاحاً به آنها Integration Frafnework می گویند. برای یکپارچه سازی استانداردهای مختلفی وجود دارد که از Splitter وContentbase Routers می توان به عنوان نمونه هایی از این الگوهای استاندارد نام برد.

2.   سطح دوم، سطح گسترده تری از Integration Framework ها هستند که به آن" گذرگاه خدمات سازمان " یا همان ESB گفته می شود. این گروه از ابزارها امکانات مناسبی برای Develop و مانیتورینگ و مدیریت (Administration) در زمان اجرا را فراهم می کنند و محیط گرافیکی آنها بستر بسیار کارآمدی را برای پیاده سازی سناریوهای مختلف یکپارچه سازی فراهم میآورد.

3.   سطح سوم،  ابزارها که به آن Integration Suite می گویند، ترکیبی از ESB ها و BPMS ها هستند که علاوه بر یکپارچه سازی نرم افزارهای سازمان، قابلیت یکپارچه کردن فرآیندهای سازمان را نیز با نرم افزارها فراهم می کند به طوری که در سازمان، می توان یکپارچگی کامل ایجاد نمود.

 

شناسایی نیاز به سفارش پیغام

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

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

اگر چه به بسیاری از تکنیک‌‌های دستور دهنده پیام توصیه می شود که از نرم‌‌افزار اختصاصی استفاده کنند مانند تغییر Proxy و اضافه کردن برچسب‌‌ها. یک روش کلی‌‌تر برای سفارش دادن پیام، روش بهینه برای کاهش سربار با اجرای رابطه وابستگی فوری IDR است که در حقیقت، می‌‌تواند تحویل پیام‌‌ها در ارتباطات گروهی را تضمین کند و به طور قابل توجهی مقدار اطلاعات کنترلی را کاهش دهد؛ اطلاعات در هر پیام برای حفظ تمامیت داده‌‌ها انجام می‌‌شود.

 

معرفی WSO2

این فناوری یک تکنولوژی متن باز و میان‌‌ابزاری (Middle ware) با زبان جاوا است که در مارس 2016 ارائه شده است. تکنولوژی WSO2 به صورت یک چهارچوب‌‌کاری و مبتنی بر میکروسرویس (WSO2 MSF4J) است و پلت‌‌فرمی برای توسعه نرم‌‌افزارهای جدید می‌باشد. ادعای این فناوری توسعه سریع و آسان نرم‌‌افزار، کارایی بالا میکروسرویس و پشتیبانی از کانتینرها است. WSO2 برای ساخت بسیار سریع برنامه‌‌ها و کدنویسی و تولید نرم‌‌افزار به سبک‌‌های بسیار سریع استفاده می‌‌شود. WSO2 در کنار ویژگی‌‌های زیادی که دارد به طور گسترده‌‌ای پشتیبانی از چارچوب Spring را نیز انجام می‌‌دهد. طبق ادعایی که از WSO2 می‌‌کند در موارد زیر نسبت به Sprin Boot برتری دارد‌‌:

  •                    Throughput
  •                    Memory Consumption
  •                    Latency

 

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

 

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

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

 

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

·      از آنجایی که برنامه‌های سمت سرور نوشته شده با این معماری به سرویس‌های مختلفی تقسیم می‌‌شوند، گسترش و تنظیمات آن‌‌ها می‌تواند کاری وقت‌‌گیر و طاقت‌‌فرسا باشد.

·      چون ارتباط بین سرویس‌ها در بستر شبکه انجام می‌شود، انتظار کندی عملکرد سرویس‌ها دور از ذهن نیست.

·      به دلیل ارتباطات شبکه‌ای، احتمال آسیب پذیری‌های امنیتی در این نوع برنامه‌ها بیشتر است.

·      نوشتن سرویس‌هایی که در بستر شبکه با سایر سرویس‌ها در ارتباط هستند سختی و مشکلات خود را دارد. برنامه‌ نویس در این شرایط، درگیر برقراری ارتباط، در صورت نیاز رمزگذاری داده‌ها و تبدیل آن‌‌ها می‌شود.

·      به دلیل مجزا بودن بخش‌‌های مختلف برنامه، مانیتورکردن و ردیابی عملکرد سرویس‌ها، یکی از کارهای اصلی توسعه دهنده یا استفاده کننده از برنامه است.

·      در مجموع سرعت برنامه‌‌های نوشته شده با معماری میکروسرویس کندتر از برنامه‌های نوشته شده با معماری Monolithic است. دلیل آن محیط اجرایی برنامه‌ها است. برنامه‌هایی با معماری Monolithic بر روی حافظه سرور پردازش می‌شوند.

 

قابلیت های کلیدی سیستم WSO2 :

·      سبک وزن، کارایی بالا و جامع، 100% منبع باز.

·      به طور موثر استانداردهای ادغام را مورد بررسی قرار می­دهد.

·      از تمامی الگوهای ادغام پشتیبانی می­کند، قابلیت همکاری بین سیستم ­های ناهمگن مختلف و برنامه­ های تجاری را فراهم می­آورد.

·      تنها فروشنده­ای است که مجموعه کاملی را ارائه می­دهد که براساس یک پایه کد و یک محیط توسعه منفرد است.

·      قابلیت توسعه و سفارشی­ سازی را فراهم می­کند و آزادی از قفل شدن را تضمین می­کند.

·      به عنوان یک رهبر Forrester Wave درگزارش Q4 2018 ‌برگزیده شده است.

·      یکی از مزایای استفاده از سیستم WSO2 این است که یکپارچه و ایمن است و توسعه سریع و نوآورانه را که متناسب با نیازهای یک توسعه دهنده ایجاد می­ کند، تشویق می­ کند و از آن جا که این برنامه روی ابر است توسعه دهندگان می­ توانند از آن برای کار مشترک و سریع در محیط­ های در خواستی استفاده کنند.

 

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

 

 


معرفی لایه های سیستم WSO2

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

·      Identity & Access Management : از نکات قوت WSO2 می توان به کنترل دسترسی و ACL قدرتمند آن اشاره کرد که مبتنی بر استاندارد SSO کار می کند به طوریکه با متمرکز نموده اطلاعات کاربری از طریق سرویس Active Directory یا سایر ماژول های مدیریت کاربران سیستم های سازمان ، کاربران WSO2 می توانند با کاربری های خود و بدون نیاز به تعریف کاربری های جدید با استفاده از روشهای اسکریپت یا کوکی اطلاعات کاربری خود را ارسال و وارد سیستم شوند.

·      Integration : یک ابزار ESP یا گذرگاه تبادل اطلاعات را در اختیار می گذارد. این سیستم دارای اجزای مختلفی می باشد که به صورت توزیع شده نصب و راه اندازی می شود و هر جزء وظیفه خاص خود را انجام می دهد. این سیستم برای هر یک از قابلیت های امنیت، مدیریت جریان کاری و ثبت سرویس، اجزای جدایی ارائه نموده است که این اجزاء به صورت مستقل نیاز به دانش و راه اندازی دارد. این سیستم راه حلی را به جای JBI ارائه کرده است و از JBI پشتیبانی نمی کند. با توجه به نبود مستندات مناسب و وجود کامپوننت های متفاوت برای قابلیت ها، راه اندازی و استفاده از آن کار دشواری می باشد. با بررسی های انجام شده این نتیجه حاصل شد که این ابزار برای برطرف نمودن نیازمندی های خاص خود توسعه داده شده است. در ادامه قابلیت WSO2 Integration با  ESB های دیگر مورد مقایسه قرار گرفته است.

 

·      API Management : مدیریت ارتباطات با سرویس های دیگر را عهده دار خواهد بود.

·      Analytics : ابزارهای تحلیل داده را در اختیار استفاده کنندگان قرار می دهد.

·      Internet of Things : قابلیت اتصال و بهره برداری سرویس های اینترنت اشیاء و امکان برنامه نویسی با موبایل را فراهم می نماید.

·      API Cloud : سرویس API فضای ابرای را فراهم می نماید.

·      Micro service framework for java : با استفاده از MSF4J فریم ورک ساخت نرم افزارهای میکروسرویسی را برای جاوا فراهم می نماید.

·      WSO2 Stratos : سکوی میان افزار ابری را فراهم می نماید. برخی از کاربردهای این سکوی میان افزار به شرح ذیل می باشد:

 

ü       قابلیت WSO2 stratos یک بستر مبتنی برابر برای میزبانی برنامه های مبتنی بر معماری سرویس گرا و بستر بعنوان سرویس (Paas) است. سرویس هایی مثل Dropbox جزو همین دسته قرار می گیرند.

ü       Stratos با چند کلیک به کاربران اش این امکان را می دهد تا بتوانند یک بستر مبتنی بر SOA کامل را برای خودشان ایجاد کنند که شامل سرویس هایی مثل مخزن وب سرویس ، ESB ، موتور جریان کار، Registry و BAM می باشد.

ü       کاربران می توانند یک سرویس مشخصص (بعنوان مثال Registry) داشته باشند یا اینکه تعدادی سرویس را انتخاب نمایند.

ü       قابلیت یکپارچه سازی سرویس های مختلف به طوریکه کاربر را از فعالیت های مربوط به تنظیم و یکپارچه سازی آنها بی نیاز می کند.

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

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

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

 

 

·      WSO2 Carbon : به منظور پاسخگویی به حجم تبادل ترافیک بالا و مدیریت حافظه موقت ، با استفاده از قابلیت، سکوی میان افزار سازمانی را فراهم می کند. این قابلیت یک Framework مبتنی بر اجزاء برای ساخت سرورهای مبتنی بر معماری شی گرا (SOA) است. این قابلیت کارکردهایی که بستر Carbon به عنوان یک سرویس ارائه می دهد را ارائه داده و خودش هم با استفاده از بستر Carbon ساخته شده و سرویس های نظیر میزبانی وب سرویس ، امنیت، ذخیره سازی داده ، رابط های کاربری را به عنوان سرویس های اصلی فراهم می کند.

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

 

نتیجه گیری

از بین راهکارهای ESP موجود ، سیستم WSO2 کامل‌‌ترین و جدیدترین روش، گذرگاه خدمات سازمانی (ESB) است که 100% متن باز، سبک و بسیار مقیاس پذیر می باشد. این راهکار در طول سال‌‌ها به منظور برآورده کردن نیازهای گرایش‌‌های ابر و کانتینر، تکامل ‌یافته‌‌ است.


 

علیرضا هاشمی

کارشناس ارشد مهندسی فناوری اطلاعات گرایش تجارت الکترونیک

 

نظرات 0 + ارسال نظر
برای نمایش آواتار خود در این وبلاگ در سایت Gravatar.com ثبت نام کنید. (راهنما)
ایمیل شما بعد از ثبت نمایش داده نخواهد شد