معصومه کوهستانی
معصومه کوهستانی
خواندن ۶ دقیقه·۳ سال پیش

ESB (Enterprise Service Bus)

ESB
ESB

مقدمه

گذرگاه سرویس سازمانی (Enterprise Service Bus or ESB) معماری ارتباطات بین برنامه‌های نرم‌افزاری (که با هم در تعاملند) در یک معماری مبتنی بر سرویس (Service-Oriented Architecture) را نمایش می‌دهد.‌ به عبارتی برنامه‌های سازمانی را مستقل از ارائه‌دهنده، یکپارچه‌ می‌کند. ESB‌ یک معماری نرم‌افزار برای محاسبات توزیع‌شده و یک نمونه‌ی خاص از مدل کلی client-server است که هر برنامه‌ای به عنوان سرور یا کلاینت رفتار می‌کند. ESB باعث تقویت چابکی و انعطاف‌پذیری می‌شود. در واقع مجموعه‌ای از قوانین و اصول برای یکپارچه‌سازی برنامه‌های متعدد بر پایه‌ي یک زیربنای شبه-گذرگاه می‌باشد.

تاریخچه

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

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

ویژگی‌ها و کارکرد هر یک [2]

استعلام:‌ پشتیبانی از پروتکل‌های انتقال همزمان و ناهمزمان، نگاشت سرویس‌ها (پیدا کردن و متصل کردن)
مسیریابی: قابلیت آدرس‌دهی، مسیریابی ثابت / قطعی، مسیریابی مبتنی بر محتوا، مسیریابی مبتنی بر قوانین، مسیریابی مبتنی بر سیاست
پادرمیانی:‌ آداپتورها، تبدیل پروتکل‌ها، نگاشت سرویس‌ها
پیام رسانی:‌ پردازش پیام، تبدیل پیام و توسعه پیام
طراحی هماهنگی فرآیندها: اجرای فرایندهای پیچیده تجارت
ارکستراسیون سرویس: هماهنگی سرویس‌های پیاده‌سازی متعدد که به عنوان یک سرویس واحد و تجمیع شده در معرض دید قرار دارند.
پردازش رویداد پیچیده: تفسیر رویداد، همبستگی، تطبیق الگو
کیفیت خدمات دیگر:‌ امنیت (رمزگذاری و امضا)، تحویل قابل اعتماد، مدیریت تراکنش
مدیریت:‌ نظارت، ممیزی، لاگ برداری، اندازه‌گیری، کنسول مدیریت، مدیریت فعالیت‌های تجاری BAM (BAM یک توانایی مدیریت نیست به عبارت دیگر ESB به یک آستانه خاص واکنش نشان نمی‌دهد. این یک قابلیت خدمات تجاری است که برای کاربران نهایی ظاهر می‌شود).
مقید نبودن: مقید نبودن عمومی به سیستم‌عامل‌ها و زبان‌های برنامه‌نویسی. به عنوان مثال، باید قابلیت همکاری بین جاوا و برنامه‌های دات نت را فراهم آورد.
تبدیل پروتکل: پشتیبانی جامع از استانداردهای سرویس مربوط به پروتکل‌های ارتباطی موضوعی
الگوهای تبادل پیام:‌ پشتیبانی از چندین MEP (الگوهای تبادل پیام). به عنوان مثال: درخواست/پاسخ همزمان، درخواست/پاسخ ناهمزمان، ارسال و فراموش کردن، انتشار/اشتراک.
آداپتورها:‌ آداپتورهای پشتیبانی از یکپارچگی با سیستم‌های قدیمی، احتمالاً براساس استانداردهایی مانند JCA
امنیت:‌ یک مدل امنیتی استاندارد برای اجازه دادن، احراز هویت و حساب‌رسی استفاده از ESB
دگرگونی: تسهیل دگرگونی قالب‌ها و مقادیر داده‌ها به یکدیگر، از جمله سرویس‌های دگرگونی (اغلب از طریق XSLT یا XQuery) بین قالب‌های برنامه ارسال کننده و برنامه دریافت کننده
اعتبارسنجی: اعتبارسنجی در برابر اسکیماهای ارسال و دریافت پیام
حکم‌روایی: توانایی اعمال قوانین تجاری به‌طور یکنواخت
غنی‌سازی: غنی‌سازی پیام از منابع دیگر
تقسیم و ادغام: تقسیم و ترکیب چندین پیام و مدیریت استثناها
انتزاع - مفهوم - برداشت: ارائه یک انتزاع واحد در چندین لایه
مسیریابی و تحول: مسیریابی یا تبدیل پیام‌ها به‌طور مشروط، براساس سیاست غیر متمرکز (بدون نیاز به موتور اصلی قوانین)
خدمات کالا: بسته‌بندی سرویس‌های پرتقاضا به عنوان سرویس‌های اشتراکی بسته به زمینه

ویژگی‌های نام‌برده بسیار جزئی هستند ولی برنامه‌نویس‌ها به دنبال این همه جزئیات نیستند و از ESBهای سبک‌تر استفاده می‌کنند.

معماری و پیاده‌سازی

هدف از این معماری کشف یک مفهوم استاندارد، ساخت‌یافته و عام‌منظوره برای توصیف پیاده‌سازی کامپوننت‌های نر‌م‌افزاری که با درجه‌ی کمی بهم وابسته‌ هستند (سرویس‌ها) که انتظار می‌رود به صورت مستقل، ناهمگن و جدا از هم در یک شبکه دیپلوی و اجرا شوند. ESB یک الگوی پیاده‌سازی رایج برای معماری‌های مبتنی بر سرویس نیز می‌باشد. [1]

یکی از ویژگی‌های مهم ESB رفع وابستگی بین برنامه‌ها می‌باشد. گذرگاه باعث جدایی برنامه‌ها از یکدیگر می‌شود که این کار را همانطور که پیشتر گفتیم از طریق پیام‌رسانی انجام می‌دهد. پیامی که در کل ESB میچرخد یک فرمت ساده و ثابت (XMLی است) دارد. یک آداپتور برای تبدیل پیام‌ها به پیام‌های قابل فهم برای برنامه‌ها وجود دارد. [2]

هیچ استاندارد جهانی برای مفهوم یا پیاده‌سازی ESB وجود ندارد. اکثر ارائه‌دهندگان میان‌افزارهای مبتنی بر پیام، ESB را به عنوان استاندارد معماری مبتنی بر سرویس پذیرفته‌اند. پیاده‌سازی ESB مبتنی بر رخداد و مبتنی بر استانداردهای میان‌افزار‌های مبتنی بر پیام در ترکیب با صف‌های پیام می‌باشد. [1]

سطوح گذرگاه‌ه سرویس سازمانی [2]

  • Integration Framework:

ابزارهای Integration Framework فقط برای پیاده‌سازی الگوهای یکپارچه‌سازی‌ استاندارد برنامه‌های سازمانی (مانند Splitter و Content Base Routers) به کار برده می‌شوند. این الگوها دستورهای API دارند که باعث شفافیت و قابل فهم شدن یکپارچگی برنامه‌ها می‌شوند. استفاده از این ابزار باعث خلاصه‌سازی فعالیت‌های تیمی و افزایش احتمال موفقیت پروژه می‌شوند.

  • ESB:

ابزارهای ESB کمی فراتر از Integration Framework ها هستند و قدرت و توان بیشتری دارند. Integration Framework پایه‌های ESB هستند. علاوه بر یکپارچه‌سازی کارهای دیپلویمنت، مدیریت و پایش در زمان اجرا را هم انجام می‌دهند. به علت داشتن UX راحت، باعث کاهش هزینه و رفع پیچیدگی می‌شوند.

  • Integration Suite:

ابزارهای Integration Suite ترکیبی از ESB و BPMS هستند. یکپارچه‌سازی کامل برنامه‌ها را با فرآیندها را فراهم می‌کند.

کارکرد

  • انتقال پیام‌ها بین سرویس‌ها
  • پایش و کنترل مسیریابی تبادل پیام‌ها بین سرویس‌ها
  • حل اختلاف بین کامپوننت‌های سرویس‌های در ارتباط
  • کنترل دیپلویمنت و نسخه‌بندی سرویس‌ها
  • کنترل استفاده از سرویس‌های تکراری
  • تامین سرویس‌هایی مانند مدیریت رخداد‌ها، تبدیل و نگاشت داده‌ها، صف‌بندی پیام‌ها و رخدادها، مدیریت امنیت و اکسپشن‌ها، تبدیل پروتکل و تحمیل کیفیت مناسب ارتباط سرویس‌ها

یکی از دلایل استفاده از این ابزار نیاز سازمان‌های به چابکی و کاهش زمان ارائه محصول است. ESB این امکان را با فراهم کردن یک سیستم ساده، قابل نصب، مقیاس‌پذیر و well-defined فراهم کرده است.

مزایا

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

معایب

  • سرعت ارتباطات کاهش می‌یابد
  • single point of failure
  • نیازمند تنظیمات زیاد و پیچیدگی نگهداری
  • تاثیر بر ارتباطات سرویس‌های دیگر در نتیجه نیاز به تست
  • افزایش پیچیدگی با افزایش تعداد سرویس‌ها

انواع پلتفرم‌های ESB

  • سبک:‌ حجم کم، هزینه‌ی کم اعمال تغییرات، زمان و سرعت زیاد
  • نه فقط میانجی‌گری
  • یادگیری آسان
  • مقیاس‌پذیری
  • پیام آگنوستیک:‌ امکان تغییر نوع پیام‌ها (برای مثال فقط XML نباشد)
  • مبتنی بر ابر

معرفی ابزارها و فناوریهای متن‌باز

  • Apache Camel

امکان ارسال پیام به فرمت‌های XML و JSON، مناسب معماری میکروسرویس‌های توزیع‌شده، تنظیمات جاوایی و XMLی، ابزارهای لازم برای تست [6]

  • Beats

پیچیدگی کم در استفاده و تنظیمات برای انتقال از ویندوز یا لینوکس، مستقل از پلتفرم، آپشن‌های متنوع برای جمع‌آوری لاگ‌ها [7]


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

مراجع

[1] https://en.wikipedia.org/wiki/Enterprise_service_bus

[2] https://fa.wikipedia.org/wiki/%DA%AF%D8%B0%D8%B1%DA%AF%D8%A7%D9%87_%D8%B3%D8%B1%D9%88%DB%8C%D8%B3_%D8%B3%D8%A7%D8%B2%D9%85%D8%A7%D9%86%DB%8C

[3] https://www.faragostar.net/what-is-esb/

[4] https://www.mulesoft.com/resources/esb/what-esb

[5] https://www.ibm.com/cloud/learn/esb

[6] https://www.g2.com/products/apache-camel/reviews#reviews

[7] https://www.g2.com/products/beats/reviews#reviews

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