سپهر اویسی
سپهر اویسی
خواندن ۹ دقیقه·۳ سال پیش

معرفی و موارد استفاده Enterprise Service Bus

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

گذرگاه سرویس سازمانی (ESB) چیست؟

کلمه ESB مخفف Enterprise Service Bus و به معنی گذرگاه سرویس سازمانی است. گذرگاه سرویس سازمانی یک میان افزار است که برای ادغام سیستم‌ها و برنامه‌های مختلف سازمان استفاده می‌شود و جایگزین ارتباط نقطه به نقطه وب سرویس‌های سازمان می‌شود. در واقع گذرگاه سرویس سازمانی رویکردی در معماری نرم‌افزار است. گذرگاه سرویس سازمانی یک لایه انتزاعی است، که به عنوان یک مترجم سراسری در حوزه وب سرویس‌ها عمل می‌کند و  برقراری ارتباط بین چندین سیستم را ممکن می‌سازد دارد که با زبان متفاوت صحبت می‌کنند. هنگامی که یک سیستم پیامی برای انتقال دارد، ESB این پیام را ترجمه کرده و به گیرنده مورد نیاز انتقال می‌کند. گذرگاه خدمات سازمانی به طور چشمگیری فرآیند یکپارچه‌سازی چندین محیط و سیستم  ناهمگن را ساده می‌کند. یک ESB برای ادغام برنامه‌های کاربردی مختلف با یکدیگر بر روی زیرساخت‌های «باس مانند» طراحی شده است.

نمودار زیر یک معماری معمولی ESB را نشان می‌دهد که در آن چندین سیستم و برنامه از طریق یک لوله پیام رسانی متمرکز (Bus) یکپارچه شده‌اند. هر سیستم یکپارچه ممکن است به عنوان نقش تولید کننده یا مصرف کننده (یا هر دو) عمل کند.

قابلیت‌های گذرگاه سرویس سازمانی

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

  • مسیریابی:

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

  • تنظیم و ارکستراسیون:

لایه ESB همچنین مسئول ارائه عملکرد ارکستراسیون است که در آن از چندین سرویس برای دستیابی به یک کار انبوه/ترکیبی استفاده می‌کند. برای مثال، یک ESB می‌تواند از خدمات ماژول‌ها/برنامه‌های مختلف بانکی در یک محیط بانکی استفاده کند و خدمات ترکیبی را بر اساس نیازهای تجاری ارائه دهد.

  • ترجمه

هر سیستم یکپارچه به زبان خود صحبت می‌کند و قالب‌های خود را دارند، که ممکن است لزوماً مشابه سیستم یکپارچه دیگری نباشد. این مسئولیت ESB است که تمام تبدیل‌ها و ترجمه‌های ضروری بین قالب‌های داده و مشخصات مختلف را انجام دهد تا اطمینان حاصل شود که سیستم‌ها می‌توانند به درستی یکدیگر را درک کنند.

  • میانجیگری

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

کارکرد ESB چگونه است؟

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

این ESB‌ها برای ساده‌سازی آشفتگی‌هایی ساخته شده‌اند که ممکن است زمانی که فرمت‌های مختلف، از سرویس‌ها و برنامه‌ها می‌خواهند با یکدیگر ادغام شوند، ایجاد می‌شود. با این حال، سوال این است که ESB دقیقا چگونه کار می کند؟

  • کانال خدمات سازمانی مجموعه‌ای از سوئیچ‌ها است که پیام مستقیمی را در یک مسیر خاص بین برنامه و/یا اجزا ارسال می‌کند.
  • هر سازمانی یک خط مشی تجاری خاص دارد که تعیین می‌کند ESB این پیام‌ها را در کدام مسیر طی خواهد کرد.

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

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

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

روش دیگری که ESB ها کار می‌کنند، به عنوان یک پروکسی سرویس است. به عنوان مثال، اگر یک برنامه کاربردی یک سرویس Java RMI را در معرض دید قرار دهد، اما بقیه شبکه بر روی دات نت اجرا شود، بنابراین نمی‌تواند مستقیماً سرویس RMI را فراخوانی کند. با استفاده از ESB، یک شرکت می‌تواند به راحتی یک سرویس پروکسی را در جاوا پیاده سازی کند که می‌تواند یک سرویس RMI را فراخوانی کند. سپس یک رابط وب سرویس، مانند SOAP و WSDL را از طریق ESB در معرض برنامه‌های NET قرار می‌دهد.

چالش‌های ESB چیست؟

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

مسائل مربوط به عملکرد لایه ESB می‌تواند مستقیماً بر عملکردهای تجاری بسیاری از سیستم ها و برنامه‌های یکپارچه تأثیر بگذارد. با این حال، این نوع چالش را می‌توان از طریق استقرار خوشه‌ای و توزیع‌شده لایه ESB با تنظیم عملکرد، نظارت و مدیریت مناسب این لایه کاهش داد و برطرف کرد.

با وجود ESB در وسط بسیاری از سیستم‌های یکپارچه، ریسک رگرسیون نیز ارزش بررسی دارد زیرا هر گونه ارتقاء، به‌روزرسانی، تغییر یا سفارشی‌سازی در این لایه می‌تواند اثرات موجی بالقوه و پیامدهای عملکردی برای بسیاری از سیستم‌های یکپارچه داشته باشد.

گذرگاه سرویس سازمانی اختصاصی باشد یا متن باز؟

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

اختصاصی

یک ESB اختصاصی‌ برای شرکت‌هایی که خواهان استفاده ساده‌تر و ثبات در محصول هستند، بسیار منطقی است. برخی از ویژگی های ESB اختصاصی عبارتند از:

  • عملکرد: یک ESB اختصاصی، طیف وسیعی از ویژگی‌های یکپارچه‌سازی و همچنین فهرست گسترده‌ای از ابزارها مانند BAM، EDA و CEP را ارائه می دهند.
  • نگهداری: ابزارهای مدیریت و نظارتی که برای یک ESB اختصاصی در دسترس هستند، سطحی از ثبات و عملکرد را ارائه می‌کنند که قابل مقایسه نیست.

متن باز

از سوی دیگر، ESB های منبع باز نیز مزایا و ویژگی های زیادی را ارائه می‌دهند. از سهولت نصب تا جامعه موجود متن باز، بزرگترین مزیت‌های ESB منبع باز عبارتند از:

  • هزینه: هزینه یک ESB منبع باز می‌تواند به طور تصاعدی کمتر از یک ESB اختصاصی باشد.
  • انعطاف بالا: از آنجایی که یک ESB منبع باز نسبت به فروشنده ناشناس است، شرکت‌ها انعطاف بیشتری برای کار در پلتفرم‌های مختلف دارند.

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

گذرگاه سرویس سازمانی برای چه شرکت‌های مناسب است ؟

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

  • تعداد وب سرویس‌ها زیاد می شود مثل بانک‌ها | موسسات مالی
  • تعداد زیر مجموعه های داخلی سازمان زیاد می‌شود مثل وزارت نفت | وزارت ارتباطات
  • وب سرویس اهمیت استراتژیک دارد مثل بورس | سازمان هواپیمایی کشوری | ستاد انتخابات
  • سازمان از طریق وب سرویس کسب درآمد فراوان لحظه ای دارد مثل همراه اول | ایرانسل
  • ارتباط مستمر وب سرویس بین منبع و سرویس گیرنده مهم می باشد مثل دفتر مرکزی فروشگاه های زنجیره ای با فروشگاه‌ها | گمرک

نتیجه

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

گذرگاهای سرویس سازمانی فعال در ایران

  • اجرای پروژه ESB در پلتکو

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

این مطلب، بخشی از تمرینهای درس معماری نرم‌افزار در دانشگاه شهیدبهشتی است

مراجع:

https://platco.ir/services/integration-web-services/enterprise-service-bus/
https://www.cleo.com/blog/knowledge-base-enterprise-service-bus-esb
https://tutorialspedia.com/esb-introduction-an-overview-of-esb-concepts-capabilities-benefits-challenges/



معماری_نرم_افزار_بهشتی
شاید از این پست‌ها خوشتان بیاید