آشنایی با Enterprise Service Bus) ESB)

مقدمهگذرگاه سرویس سازمانی یا ESB که مخفف Enterprise Service Bus است، یک الگوی معماری است که امکان ارتباط بین برنامه های مختلف را در معماری سرویس گرا (SOA) فراهم می کند. در واقع به جای اینکه ارتباط بین برنامه ها به صورت مستقیم و با روش های متفاوت پیغام رسانی انجام شود، پیغام ها به گذرگاه سرویس ارسال شده و پاسخ نیز از گذرگاه دریافت می شود. ESB تبدیل مدل های داده و پروتکل های ارتباطی را انجام می دهد، ارتباطات را مدیریت می کند، مسیریابی پیام را به عهده دارد و به طور کلی ترکیب درخواست های متعدد را مدیریت می کند. گذرگاه سرویس سازمانی می تواند این ادغام ها و تبدیل ها را به عنوان یک رابط سرویس برای استفاده ی مجدد توسط برنامه های کاربردی جدید در دسترس قرار دهد.در ادامه به توضیح بیشتر در مورد ESB و کاربرد آن می پردازیم.توضیح ESB و کاربرد آنفرض کنید دو سرویس در یک سازمان وجود دارد که نیاز به تبادل داده دارند. تیم های فنی راه حلی را طراحی و اجرا می کنند که امکان تعامل این سرویس ها با یکدیگر را برقرار می کند. مدتی بعد، سازمان چندین سامانه دیگر را مستقر می کند که نیاز به تعامل با یکدیگر و همچنین ارتباط با دو سرویس موجود دارند. به توافق رسیدن همه ی تیم های توسعه دهنده برای پیدا کردن بهترین راه حل برای تعامل این سرویس ها با هم مشکل است.شکل ۱- پیچیدگی ارتباطات بین application های مختلف در یک سازماناستفاده از سرویس ها و برنامه های مختلف در یک سازمان ممکن است باعث ایجاد آشفتگی و بی نظمی شود. در ارتباطات نقطه به نقطه سرویس‌های سازمان عملکرد در میان سرویس‌ها انتشار می‌یابد و هیچ روش مرکزی برای نظارت و مدیریت آن وجود ندارد که باعث بروز مشکلات زیادی می شود. این موضوع را اغلب به عنوان کد اسپاگتی می شناسند که باعث ایجاد وابستگی شدید بین سرویس‌ها می‌شود.هدف از استفاده ی ESB در یک سازمان، کاهش این آشفتگی ها است. در معماری زیر ساخت یک سازمان ESB به عنوان یک واسط بین سرویس ها و سرویس گیرندگان قرار می گیرد و باعث ادغام و یکپارچگی سامانه های مختلف نرم افزاری یک سازمان می شود. در واقع گیرندگان سرویس با یک گذرگاه ارتباطی تعامل می کنند و به جای اینکه درخواست خود را به طور مستقیم به سرویس ارسال کنند، همه ی درخواست ها به ESB فرستاده می شوند و در ESB پس از پردازش محتوای درخواست، فیلتر، تغییر و تبدیل پیام و رویداد نگاری، مسیریابی به سرویس مقصد انجام می شود و پس از دریافت پاسخ آن را در اختیار سرویس گیرنده قرار می دهد. همچنین ESB نقش مدیریت تراکنش ها را نیز به عهده دارد و هماهنگی تراکنش های توزیع شده ای که چند سرویس با آن ها درگیر هستند را انجام می دهد.شکل ۲-شمای کلی ESBافزایش چابکی سازمان،کاهش زمان ورود به بازار، جلوگیری از بروز خطاها، صرفه جویی‌های مالی و زمانی یکی از رایج ترین دلایلی است که سازمان ها از ESB در زیر ساخت فناوری اطلاعات سازمان خود استفاده می کنند. همچنین ESB باعث می شود که معماری سازمان منعطف و مقیاس پذیر شود. پیاده سازی ESBدر واقع در ESB تمرکز اصلی این است که سیستم ها را از یکدیگر جدا کنیم. همچنین به آنها این امکان را می‌دهد که بدون وابستگی یا شناخت سیستم‌های دیگر در گذرگاه با هم ارتباط برقرار کنند. مفهوم گذرگاه برنامه ها را از یکدیگر جدا می کند. این کار معمولاً با استفاده از یک سرور پیام رسانی مانند JMS یا AMQP انجام می شود.داده هایی که در ESB جابجا می شوند دارای فرمت متعارفی هستند و تقریبا همیشه XML هستند.یک سازگار کننده (adaptor) بین برنامه کاربردی و گذرگاه وجود دارد که داده ها را بین دو طرف جمع می کند. این سازگارکننده مسئول مکالمه با برنامه کاربردی و تبدیل داده ها از فرمت برنامه به فرمت گذرگاه است. سازگار کننده همچنین می تواند مجموعه ای از فعالیت های دیگر مانند مدیریت تراکنش مسیریابی پیام، امنیت، نظارت، رسیدگی به خطا و غیره را انجام دهد.مزایای استفاده از ESB برخی سازمان ها هنوز از سرویس های قدیمی خود استفاده می کنند که این سرویس های قدیمی برای عملیات شرکت حیاتی هستند. سازمان ها می توانند با استفاده از ESB این سیستم های قدیمی و غیر قابل انعطاف را به شکل استاندارد و مطلوب خود در آورده و به بقیه سرویس ها متصل کنند. گذرگاه خدمات سازمانی به طرز قابل توجهی فرآیند یکپارچه‌سازی چندین محیط و سیستم ناهمگن را ساده می کند.علاوه بر این موضوع می توان به موارد زیر اشاره کرد:۱- فراهم کردن یک نقطه دسترسی واحد: از آنجایی که کار یکپارچه سازی در ESB انجام می شود، می توان یک تیم اختصاصی برای ایجاد، مدیریت و عیب یابی یکپارچه سازی سیستم ها روی ESB داشته باشیم. این کار باعث صرفه جویی در زمان و هزینه می شود. ۲- ساده شدن ارتباطات: یک ابزار ESB می تواند چندین پروتکل را در انتقال داده ها از یک برنامه به برنامه ی دیگر مدیریت کند. در واقع می تواند به عنوان یک مترجم سراسری عمل کند و ارتباط بین چندین سیستم که با زبان متفاوت با هم صحبت می کنند را ممکن می سازد. در واقع باعث استاندارد سازی پیام بین خدمات سراسر سازمان می شود.۳- کمک به توسعه دهندگان: ESB به توسعه دهندگان این امکان را می دهد که یک پیکر بندی ایجاد کنند که می تواند برای هر برنامه ی متصل به گذرگاه سرویس اعمال شود. این مساله به ارتقا سیستم کمک می کند و سرعت اعمال تغییر روی برنامه ها را بهبود می بخشد.۴- افزایش امنیت: از آنجایی که ESB یک نقطه ی ورودی واحد است، می تواند به عنوان دروازه ای برای پروتکل های امنیتی و صدور مجوز عمل کند و از دسترسی های غیر مجاز به سرویس ها جلوگیری کند.۵- مقیاس پذیری:‌ از راهکارهای نقطه ای تا استقرار در کل سازمان را در بر می گیرد.معایب استفاده از ESBعلی رغم آن که ابزارهای ESB روشی قابل اعتماد برای اتصال برنامه‌ها هستند، فناوری آن‌ها با غالب شدن cloud بر اکوسیستم‌های دیجیتالی منسوخ‌تر می‌شود و شرکت‌ها نرخ رشدی را تجربه می‌کنند که به سازگاری سریع‌تر در سیستم‌هایشان نیاز دارد. می توان به موارد زیر به عنوان معایب ESB اشاره کرد:۱- ایجاد bottleneck: از آنجایی که ESB یک سیستم متمرکز از اتصالات است و اغلب توسط یک تیم تخصصی فناوری اطلاعات مدیریت می‌شود، زمانی که تقاضا برای ارتقاء یا اصلاح برنامه‌ها افزایش می‌یابد و درخواست‌های بیشتری در سیستم ارائه می‌شود، برخی از تیم‌ها در صف می‌مانند. این مورد می تواند بهره وری را متوقف کند.۲- نیاز به توسعه دهندگان با تجربه: در حالی که پیکربندی های کمتری در ESB ها نسبت به سیستم های یکپارچه سازی P2P مورد نیاز است، پیچیدگی موجود در مدیریت طولانی مدت یک ESB می تواند به توسعه دهندگان با تجربه نیاز قابل توجهعی داشته باشد. استفاده از این توسعه دهندگان با تجربه هزینه ی زیادی برای سازمان دارد.۳- ایجاد مشکل در گذرگاه: از آنجایی که ESB هسته مرکزی سیستم یکپارچه سازی است، در صورتی که با مشکل مواجه شود، برنامه هایی که به آن متصل هستند نیز در سرویس دهی دچار مشکل می شوند.همچنین در پاسخ به این سوال که ESB برای چه سازمان هایی مناسب است می توان گفت سازمان هایی که در آن ها تعداد سرویس ها زیاد می شود، تعداد زیر مجموعه های داخلی سازمان در حال زیاد شدن است و ارتباط مستمر بین سرویس دهنده و سرویس گیرنده از اهمیت بالایی برخوردار باشد. همچنین سازمان ها باید این نکته را در نظر داشته باشند که اگر خواهان استفاده ساده تر، ثبات محصول و مالکیت هستند، استفاده از ESB های اختصاصی برای آن ها مناسب تر است اما اگر سهولت نصب و کاهش هزینه فاکتورهای مهمی برای سازمان باشند، انتخاب یک ابزار ESB متن باز پیشنهاد بهتری است .در واقع ESB های اختصاصی می توانند گران تر از ESB های متن باز باشند و همچنین نصب آنها دشوارتر است. در همین حال، استفاده از ESB های متن باز می تواند برای ادغام در ارائه دهندگان مختلف در یک سناریوی ترکیب و تطبیق مشکل باشند و همچنین به مهارت و زمان بیشتری برای آزمایش و مدیریت نیاز دارند.ابزارها و فناوری های متن باز ESBاز جمله ابزار های مطرح ESB می توان به Oracle ESB، MuleSoft و WSO2 اشاره کرد. در ادامه به بررسی این ابزارها می پردازیم.ابزار MuleSoftشرکت MuleSoft یک ابزار متن باز برای ESB ارائه داده است که اطلاعات مربوط به آن از طریق لینک زیر قابل دسترسی است.شکل۳- تصویری از محیط ابزار Mule ESBاز مزایای این ابزار می توان به موارد زیر اشاره کرد:این ابزار سبک‌ترین پلتفرم یکپارچه‌سازی موجود است و از نظر طراحی ماژولار است.همچنین هزینه ی ایجاد تغییرات در ادغام های موجود کم است. استقرار این ابزار سریع است. این ابزار یک کانتینر خدمات سبک و مقیاس پذیر برای انتشار خدمات REST و SOAP ارائه می دهد. از آنجایی که Mule به شدت با Spring ادغام می شود، به این معنی است که توسعه دهندگان همچنین می توانند از قابلیت های Spring برای پیاده سازی منطق کسب و کار خود استفاده کنند.هر توسعه دهنده ای می تواند این ابزار را یاد بگیرد زیر ا ابزارهای رایجی استفاده می کند که همه توسعه دهندگان جاوا با آن آشنا هستند، مانند Maven، Eclipse، JUnit.یکی از ویژگی های این است ابزار این است که فرمت پیام های XML را برای مبادله ی پیغام ها به کاربران خود تحمیل نمی کند.علاوه بر این، Mule streaming به توسعه دهندگان اجازه می دهد تا پیام های بزرگ را به طور موثر پردازش کنند.ابزار WSO2ابزار مطرح دیگر که ارائه دهنده ی ESB است، WSO2 می باشد. اطلاعات این ابزار در لینک زیر قابل مشاهده است. همچنین در تصویر زی بخشی از محیط این ابزار را مشاهده می کنید.شکل ۴- محیط نرم افزار WSO2مزایای این ابزار به شرح زیر است:تبدیل پیام ها با XSLT 1.0/2.0، XPath، XQuery و Smooksمسیریابی مبتنی بر سربرگ (header)، محتوا، مبتنی بر قانون و اولویت‌محورپشتیبانی از پروتکل های HTTP، HTTPS، WebSocket، POP، IMAP، SMTP و ...پشتیبانی از RDBMS، CSV، Excel، Cassandraامکان ادغام با Prometheus، Graphana، Jaeger،Fluent Bitامکان ادغام با Docker، Kubernetes و سایر پلتفرم های مدیریت کانتینرمبدل های تبدیل CSV، JSON و XMLابزار Oracle ESBیکی دیگر از ابزارهای مربوط به حوزه ی ESB، ابزار ESB است که متعلق به Oracle است که اطلاعات مربوط به ساختار و نحوه ی استفاده از آن در اینجا قابل مشاهده است. تصویر زیر محیط این ابزار را نشان می دهد.شکل ۵- محیط نرم افزار Oracle ESB شرکت های ایرانی ارائه دهنده خدمات ESBاز جمله شرکت های ارائه دهنده ی خدمات ESB در ایران می توان به شرکت داده پرداز پویای شریف اشاره کرد که یک شرکت دانش بنیان است که در زمینه ی ارائه ی راهکارهای جامع تخصصی تحت وب و موبایل فعالیت می کند. طبق گفته ی این شرکت پلتفرم ESB داده‌پرداز محصولی دانش‌بنیان است که تا به امروز در سامانه‌های بزرگی همچون سامانه فروش بلیط بن ریل، اپلیکیشن خدمت در محل همراه یار، پرتال دولت الکترونیک و ... به کاربرده شده و ویژگی اصلی آن، توانایی برقراری ارتباط با ماکروسرویس‌های بزرگ و برقراری جریان امنیت اطلاعات و مدیریت آنهاست.شکل ۶- مراحل پیاده سازی ESB در داده پردازپلتکو نیز یک شرکت دانش بنیان است که با بهره‌گیری از کارشناسان ارشد حوزه معماری زیر ساخت سرویس ‌های سازمانی، خدمات یکپارچه سازی و مدیریت وب سرویس نظیر ESB و API MANAGER و ... ارائه می‌دهد.شکل ۷- استفاده از پلتفرم پلتکو برای یکپارچه سازی سرویس های سازمانیکی دیگر از شرکت های ارائه دهنده خدمات ESB در ایران شرکت پارس تصمیم است که راه ­حل­ها و خدمات مرتبط با فناوری اطلاعات را ارائه می نماید. این شرکت به طور کلی در زمینه ی ارائه راه حل های جامع در حوزه های مدیریت قوانین سازمانی (BRM)، مدیرت منابع سازمانی (ERP)، گذرگاه سرویس سازمانی (ESB) و ... فعالیت می کند. جمع بندیاستفاده از ESB در یک سازمان علی رغم پیچیدگی هایی که می تواند داشته باشد، مفید است. ESB یک ابزار گسترده است که خدمات متفاوتی را ارائه می دهد. استفاده از ESBها رایج هستند و علیرغم برخی اشکالات، برای تسهیل به اشتراک گذاری خدمات و فرآیندها در سراسر یک شرکت و جداسازی خدمات تجاری از اجرای سرویس بسیار مفید هستند. همچنین سازمان ها برای انتخاب یک پلتفرم یکپارچه سازی برای سازمان خود باید به نیاز های خود توجه داشته باشند و مواردی مانند هزینه، امنیت و مقیاس پذیری ابزار را در نظر داشته باشند.«این مطلب، بخشی از تمرینهای درس معماری نرم‌افزار در دانشگاه شهیدبهشتی است»منابع1- https://www.cleo.com/blog/knowledge-base-enterprise-service-bus-esb2- https://www.interlogica.it/en/insight-en/enterprise-service-bus-what-you-need-to-know/3- https://www.oreilly.com/library/view/enterprise-service-bus/0596006756/ch01.html4- http://www.parstasmim.com/راه-حل-جامع-گذرگاه-سرویس-سازمانی/5- https://dadehpardaz.com/blog/esb/6- https://platco.ir/services/integration-web-services/enterprise-service-bus/7- https://www.faragostar.net/what-is-esb/8- https://www.it.ucla.edu/news/what-esb9- https://en.wikipedia.org/wiki/Enterprise_service_bus10- https://www.mulesoft.com/resources/esb/what-esb11- https://www.ibm.com/cloud/learn/esb12- https://www.tookasoft.com/products/esb/