در یک جمله گذرگاه سرویس سازمانی (ESB) یک معماری است. در حقیقت ESB مجموعه ای از قوانین و اصول برای یکپارچگی برنامه های کاربردی متعدد بر روی یک زیرساخت گذرگاه مانند است. محصولات ESB کاربران را قادر میسازد تا این نوع معماری را ایجاد کنند، اما در نحوه ی انجام آن و قابلیتهایی که ارائه میدهند، متفاوت هستند. مفهوم اصلی معماری ESB این است که برنامه های مختلف را با قرار دادن یک گذرگاه ارتباطی یکپارچه کرد و سپس هر برنامه را قادر ساخت تا با این گذرگاه تعامل برقرار کند. این معماری سیستمها را از یکدیگر جدا میکند و به آنها اجازه میدهد بدون وابستگی یا آگاهی از وجود سیستمهای دیگر بتوانند در گذرگاه ارتباط برقرار کنند. مفهوم ESB در نتیجه ی نیاز به فاصله گرفتن از شیوه ی یکپارچگی point-to-point که مدیریت آن به مرور زمان دشوار میشد، متولد گردید. یکپارچگی point-to-point منجر به گسترش کد یکپارچه سازی سفارشی در بین برنامه ها بدون وجود هیچ راه مرکزی برای نظارت یا عیب یابی می شد. این موضوع اغلب تحت عنوان "کد اسپاگتی" شناخته می شود و قابل مقیاس نمی باشد زیرا موجب وابستگی شدید بین برنامه ها می گردد.
جایگاه ESB (گذرگاه خدمات سازمانی) در معماری زیر ساخت سازمان بدین صورت است که بعنوان یک واسط، بین وب سرویسهای سازمان و سرویس گیرندگان قرار میگیرد (سرویس گیرندگان میتواند داخل یا خارج سازمان باشند) و از ارتباط point-to-point که عامل بسیاری از مشکلات است جلوگیری میکند. البته این جداسازی به معنای دور کردن سامانهها از حالت یکپارچه نیست و اتفاقاً ESB باعث تسهیل فرآیند یکپارچهسازی سامانهها و مستحکم سازی معماری سازمان میشود.
پس از استقرار ESB یا همان گذرگاه سرویسهای سازمانی، فراخوانی کلیه وب سرویسها و سرویس گیرندگان از طریق ESB انجام میشود و کلیه درخواستها به ESB زده میشود و ESB درخواستها را به منبع انتقال داده و پاسخ آنها را پس از دریافت به سرویس گیرندگان تحویل میدهد.
چرا از ESB استفاده می کنیم؟
افزایش چابکی سازمانی یکی از رایج ترین شیوه هایی است که در نتیجه ی آن شرکت ها ESB را به عنوان ستون فقرات زیرساخت فناوری اطلاعات خود پیاده سازی می کنند. معماری ESB با ارائه یک سیستم ساده، به خوبی تعریف شده و "قابل اتصال" که مقیاس بسیار خوبی دارد، این امر را تسهیل می بخشد. علاوه بر این، یک ESB با استفاده از قابلیتهای ارتباطی و تبدیلی خود، راهی برای استفاده از سیستمهای موجود و قرار دادن آنها در معرض برنامههای جدید فراهم می سازد.
پیاده سازی
معماری ESB دارای اصول کلیدی است که امکان چابکی و مقیاس را در کسب و کارها فراهم می کند. تمرکز اصلی در این معماری بر روی این موضوع است که در حالی که به سیستم ها اجازه می دهیم به روشی سازگار و قابل مدیریت با یکدیگر در ارتباط و تعامل باشند، آنها را از هم جدا کنیم.
· مفهوم "گذرگاه" برنامه ها را از یکدیگر جدا می کند. این امر معمولاً با استفاده از یک سرور پیام رسان مانند JMS یا AMQP به دست می آید.
· داده هایی که در گذرگاه جابجا می شوند دارای فرمت متعارف و معمولا XML هستند.
· یک "آداپتور" بین برنامه کاربردی و گذرگاه وجود دارد که داده ها را بین دو طرف تنظیم می کند.
· آداپتور مسئول تعامل با برنامه کاربردی و تبدیل داده ها از فرمت برنامه به فرمت گذرگاه است. آداپتور همچنین می تواند مجموعه ای از فعالیت های دیگر مانند مدیریت تراکنش مسیریابی پیام، امنیت، نظارت، رسیدگی به خطا و غیره را انجام دهد.
· ESB ها عموماً stateless هستند. وضعیت در پیام هایی که از گذرگاه عبور می کنند تعبیه شده است. فرمت استاندارد پیام قراردادی بین سیستم ها است. فرمت استاندارد به این معنی است که یک فرمت ثابت پیام در گذرگاه وجود دارد که به موجب آن برنامه ها در گذرگاه می توانند با یکدیگر ارتباط برقرار کنند.
معرفی دو ابزار Open Source در زمینه ی ESB:
بیایید نگاهی به نحوه نگاشت معماری ESB به پنج قاعده ی اصلی یکپارچه سازی شرکت Mule بیندازیم:
Orchestration:
تلفیق چندین مولفه ی ریزدانه ی موجود در یک سرویس ترکیبی با مرتبه ی بالاتر است. از این کار می توان برای دستیابی به "دانه دانه کردن" مناسب سرویس ها و ترویج راهکاراستفاده مجدد و مدیریت مولفه های اساسی استفاده کرد.
Transformation:
تبدیل داده بین فرمت های داده استاندارد و فرمت های داده خاص نیازمند کانکتور ESB است. یک مثال از این موضوع می تواند تبدیل بین فرمت های CSV، Cobol copybook یا EDI به SOAP/XML یا JSON باشد. فرمتهای داده ی استاندارد میتوانند الزامات تبدیل های مربوط به پیادهسازی بزرگ ESB را که مصرف کنندگان و ارائه دهندگان زیادی که هر کدام فرمت ها و تعاریف داده خاص خود را دارند، تا حد زیادی سادهسازی کنند.
Transportation:
مذاکره ی پروتکل Transport بین چندین فرمت (مانند HTTP، JMS، JDBC). توجه: Mule با تبدیل کردن JDBC به transport (یا endpoint) دیگری که در آن می توان به داده ها دسترسی داشت، با پایگاه داده مانند یک «سرویس» دیگر رفتار می کند.
Mediation:
ارائه چندین رابط به منظور الف) پشتیبانی از چندین نسخه از یک سرویس برای سازگاری به عقب یا به طور متناوب، ب) اجازه دادن به چندین کانال برای اجرای یک مؤلفه اجرایی. نیاز دوم ممکن است شامل ارائه چندین رابط برای یک مؤلفه، یک رابط قدیمی (flat file) و یک رابط سازگار با استانداردها (SOAP/XML) باشد.
Non-functional consistency:
شامل سازگاری در مورد نحوه اعمال و اجرای سیاست های امنیتی و نظارتی میباشد. علاوه بر این، اهداف مقیاسپذیری و دسترسی پذیری را میتوان با استفاده از نمونههای متعدد یک ESB جهت افزایش توان عملیاتی (مقیاسپذیری) و حذف تکنقطههای شکست (SPOFs)، که هدف کلیدی سیستمهای بسیار در دسترس است، به دست آورد.
انتخاب پلت فرم ESB
پلتفرم های ESB زیادی از فروشندگان بزرگ اختصاصی گرفته تا فروشندگان داخلی و منبع باز، وجود دارد. در این قسمت نکاتی را ذکر میکنیم که باید هنگام انتخاب ESB در نظر گرفت:
سبک وزن
Mule سبکترین پلتفرم یکپارچهسازی موجود است که توزیع کامل بارگذاری شده ی آن 40 مگابایت وزن دارد. از نظر طراحی ماژولار است، بنابراین در صورت نیاز به کاهش footprint، می توان ماژول های ناخواسته را حذف نمود. همچنین هزینه ی ایجاد تغییرات، در یکپارچگی های موجود وهمچنین مقدار سنگینی که برای ایجاد تغییرات باید اعمال کرد، می باشد. Mule run-time ماژولارسازی و استقرار سریع و همچنین یک مدل پیکربندی را ارائه می دهد که سفارش مجدد و اضافه یا تغییر functionality را آسان می کند.
فقط یک واسط نیست!
اکثر فروشندگان ESB را صرفاً واسطی بین سیستم ها می دانند و محصولات جداگانه ای برای میزبانی منطق کسب و کار و سرویس ها ارائه می کنند. شرکت Mule این امر را یک پیچیدگی غیر ضروری می داند. Mule یک کانتینر سرویس مقیاس پذیر و سبک برای انتشار سرویس های REST و SOAP ارائه می دهد. از آنجایی که Mule به خوبی با Spring یکپارچه می شود، در نتیجه توسعه دهندگان می توانند از قابلیت های Spring برای پیاده سازی منطق کسب و کار استفاده کنند.
قابل دسترسی - هر توسعه دهنده ای می تواند Mule را یاد بگیرد!
Mule از ابزارهای رایجی استفاده می کند که همه توسعه دهندگان جاوا با آن آشنا هستند، از جمله Maven، Eclipse، JUnit و Spring. Mule از یک مدل پیکربندی XML (شبیه به Spring) برای تعریف منطق استفاده می کند که کد سفارشی را می توان به زبان های مختلفی از جمله جاوا، Groovy، JavaScript، Ruby یا Python نوشت. همچنین، Anypoint Studio به توسعه دهندگان جدید کمک می کند تا در یک محیط توسعه گرافیکی به سرعت پیش بروند.
افزایش مقیاس، کاهش مقیاس
Mule برای مقیاس افقی در سخت افزار طراحی شده است. زمان اجرا Mule به راحتی در یک برنامه تعبیه می شود. همچنین می تواند در سرور برنامه مانند Tomcat، JBoss یا WAS و هم می تواند مستقیماً در خود برنامه تعبیه شود. مهمتر از آن، Mule پشتیبانی JUnit را فراهم می کند تا بتوان آن را در مورد آزمون JUnit تعبیه نمود. این بدین معناست که می توان تستهای واحد تکرار شونده را برای یکپارچه سازی هایی که روی لپتاپ فرد توسعهدهنده اجرا میشوند و قادر هستند در یک ساخت پیوسته تعبیه شوند، ایجاد کرد.
پیام آگنوستیک
یکی از ویژگی های قدرتمند Mule این است که کانتینر پیام آگنوستیک است. این بدان معناست که پیام های XML را به کاربران خود تحمیل نمی کند. در حالی که XML فرمت رایجی است، سناریوهای زیادی وجود دارد که می توان از JSON، flat files، Cobol Copybooks، پیوستهای باینری و فایل، جریانها و اشیاء جاوا استفاده کرد. Mule streaming به توسعه دهندگان اجازه می دهد تا پیام های بزرگ را به شکل موثری پردازش کنند.
موتور زمان اجرا یکپارچگی WSO2 قادر است که نقش های متعددی را در معماری سازمانی ایفا کند. WSO2 میتواند به عنوان یک ESB یا یکپارچه کننده ی میکروسرویس عمل کند. هنگامی که به عنوان یک ESB مستقر می شود، به مسیریابی پیام، تبدیل، واسطه گری پیام، هماهنگ سازی سرویس، و همچنین نیازهای مربوط به میزبانی سرویس و API پاسخ می دهد.
مسیریابی، واسطه و تبدیل داده ها
· مسیریابی مبتنی بر Header، content، rule و اولویت
· پیاده سازی الگوهای یکپارچه سازی سازمانی (EIP)، یکپارچه سازی پایگاه داده، یکپارچه سازی جریان رویداد
· تبدیل پیام ها با XSLT 1.0/2.0، XPath، XQuery و Smooks
· نگاشت داده های بصری
· کانکتورهای تبدیل CSV، JSON و XML
ساخت و یکپارچه سازی سرویس ها و API ها بر اساس استانداردها و پروتکل های باز
· ایجاد API با Open API (Swagger)
· پشتیبانی HTTP، HTTPS، WebSocket، POP، IMAP، SMTP و موارد دیگر
· فرمت های داده مانند JSON، XML، SOAP، EDIFACT، FHIR، ISO 8583 و FIX
· آداپتورهای داخلی برای سیستمهای COTS مانند SAP، IBM MQ، Oracle AQ، MSMQ و Office 365
هر پایگاه داده را به عنوان یک سرویس متصل کرده و در معرض دید قرار می دهد
· از هر صفحه گسترده RDBMS، CSV، Excel، ODS، Cassandra و Google پشتیبانی می کند.
· از پروتکل OData v4 برای هر منبع داده RDBMS و Cassandra پشتیبانی می کند.
· پشتیبانی از MSSQL، DB2، Oracle، OpenEdge، TerraData، MySQL، PostgreSQL/EnterpriseDB، H2، Derby یا هر پایگاه داده با درایور JDBC
· پشتیبانی از پرس و جوهای تو در تو در میان منابع داده
· پیکربندی مبتنی بر XML
اتصال یک چیز به چیز دیگر
· اتصال دهنده ها در دسته های مختلف، مانند پرداخت ها، CRM، ERP، شبکه های اجتماعی یا سیستم های قدیمی می باشند.
· اتصالات تبدیل داده برای CSV، JSON، و XML و موارد دیگر
قابلیتهای ردیابی و مانیتورینگ End to End
· یکپارچگی با مانیتورینگ مبتنی بر Prometheus، Grafana، Jaeger، Fluentbit
· لاگینگ متمرکز با ELK Stack
· مجموعه داخلی و نظارت بر دسترسی، performance و آمار استاندارد برای همه ی انواع مصنوعات
· پشتیبانی از یکپارچگی با enterprise logging systems
گزینه های استقرار Hybrid
· یکپارچه سازی بومی با Docker، Kubernetes، و انواع دیگر پلتفرمهای مدیریت کانتینر
· استقرار بر روی VM یا bare metal
شرکت های ایرانی ارائه دهنده ی ERP
شرکت پلتکو
پلتکو یک شرکت ایرانی ارائه دهنده ی انواعسرویس های سازمانی، خدمات یکپارچه سازی و مدیریت وب سرویس مانند ESB و API MANAGER و ... می باشد که محور فعالیت های آنها در تصویر زیر خلاصه شده است:
شرکت داده پرداز پویای شریف
پلتفرم ESB داده پرداز یکی از راهکارهای یکپارچه سازی انواع سرویسها در سازمانهای بزرگ و مدیریت نمودن جریان اطلاعات در آنهاست. پلتفرم ESB دادهپرداز تا به امروز در سامانههای بزرگی همچون سامانه فروش بلیط بن ریل، اپلیکیشن خدمت در محل همراه یار، پورتال دولت الکترونیک و ... به کاربرده شده و ویژگی اصلی آن، توانایی برقراری ارتباط با ماکروسرویسهای بزرگ و برقراری جریان امنیت اطلاعات و مدیریت آنهاست.
ویژگیهای پلتفرم ESB دادهپرداز
· توسعه پذیری و چابکی
· کاهش هزینه های توسعه و پشتیبانی نرم افزارها
· افزایش بهره وری سامانه ها
· امکان اتصال به انواع وب سرویس ها و پایگاه های داده
· دارای زیرساخت توسعه پذیر
· پشتیبانی از تعداد زیاد کاربر به صورت همزمان
· ایجاد ارتباط و بهینه سازی سیستم ها
جمع بندی
گذرگاه سرویس سازمانی (ESB) لایه ای انتزاعی است، که به عنوان “یک مترجم سراسری” در حوزه وب سرویسها عمل میکند و برقراری ارتباط بین چندین سیستم را ممکن میسازد دارد که با “زبان” متفاوت صحبت میکنند. هنگامی که یک سیستم پیامی برای انتقال دارد ، گذرگاه خدمات سازمانی این پیام را ترجمه کرده و به گیرنده صحیح هدایت میکند. این قابلیت مهم باعث میشود که سازمانها به راحتی بتوانند وب سرویسهای قدیمی (legacy) خود را بدون نیاز به توسعهی سامانههای قدیمی به شکل استاندارد و مطلوب خود درآورده و در اختیار سرویس گیرندگان قرار دهند. گذرگاه خدمات سازمانی به طور چشمگیری فرآیند یکپارچهسازی چندین محیط و سیستم ناهمگن را ساده می کند.
منابع:
https://www.mulesoft.com/resources/esb/what-esb
https://platco.ir/services/integration-web-services/enterprise-service-bus/
https://wso2.com/products/enterprise-service-bus/