پترن 𝐄𝐧𝐭𝐞𝐫𝐩𝐫𝐢𝐬𝐞 𝐒𝐞𝐫𝐯𝐢𝐜𝐞 𝐁𝐮𝐬 به عنوان یک M𝐢𝐝𝐝𝐥𝐞𝐰𝐚𝐫𝐞 برای ارتباط بین سرویس های مختلف سازمان استفاده می شود. به عبارت دیگر یک معماری نرم افزار می باشد که مثل یک پل یا یک لایه بین سرویس های مختلف یک سازمان عمل می کند تا سرویس ها بتوانند باهم ارتباط برقرار کنند.
برای مثال شرکت مخابراتی ایرانسل را در نظر بگیرید. می خواهید یک بسته اینترنت خریداری کنید:
1- بعد از خرید بسته اینترنت از طریق 𝐌𝐲𝐈𝐫𝐚𝐧𝐜𝐞𝐥𝐥 درخواست فعال سازی آن به CRM ایرانسل ارسال و ثبت می شود.
2- حال CRM برای فعال سازی باید درخواست را به سرویس های مربوط ارسال کند که به جای ارسال مستقیم درخواست به سرویس ها درخواست خود را از طریق ESB ارسال می کند. ESB بعد از دریافت درخواست مربوط را با توجه به منطق فعال سازی آن را به دو سرویس OSS و Billing ارسال می کند.
3- با توجه به اینکه CRM داده ها را با فرمت JSON ارسال می کند و OSS, Billing فرمت XML قبول می کنند داده ها را نیز تبدیل می کند.
4- حال در این سناریو ممکن می باشد سیستم OSS به هر دلیلی مشکل داشته باشد. در اینجا ESB می تواند درخواست را مجدد ارسال کرده یا پیغام خطا را به CRM باز گرداند.
5- در آخر در صورت انجام موفق و فعال سازی بسته ESB پیام انجام شدن فعال سازی را برای CRM ارسال می کند.
نکته: مثال برای درک بهتر موضوع هستش و ایرانسل دقیقا به این شکل کار نمی کند.
توضیح کوتاه
𝐂𝐑𝐌 (𝐂𝐮𝐬𝐭𝐨𝐦𝐞𝐫 𝐑𝐞𝐥𝐚𝐭𝐢𝐨𝐧𝐬𝐡𝐢𝐩 𝐌𝐚𝐧𝐚𝐠𝐞𝐦𝐞𝐧𝐭):
برای مدیریت اطلاعات و ارتباطات مشتریان با کسب و کار کاربرد دارد.
𝐎𝐒𝐒 (𝐎𝐩𝐞𝐫𝐚𝐭𝐢𝐨𝐧 𝐒𝐮𝐩𝐩𝐨𝐫𝐭 𝐒𝐲𝐬𝐭𝐞𝐦𝐬):
برای مدیریت و نظارت بر موارد فنی و زیرساخت های شبکه کاربرد دارد.
چرا 𝐄𝐒𝐁؟
کاهش پیچدگی (𝐂𝐨𝐦𝐩𝐥𝐞𝐱𝐢𝐭𝐲 𝐑𝐞𝐝𝐮𝐜𝐭𝐢𝐨𝐧): ایرانسل تعداد زیادی سرویس دارد که نیاز دارند باهم ارتباط داشته باشند. اگر هرکدام از سرویس ها بخواهند به صورت مستقیم با سرویس دیگری ارتباط برقرار کنند پیچیدگی ها و چالش های زیادی به وجود خواهد آمد. اما ESB این کار را به صورت متمرکز برای همه سرویس ها مدیریت کرده و باعث کاهش پیچدگی و هزینه های توسعه می شود.
انعطاف پذیری (𝐅𝐥𝐞𝐱𝐢𝐛𝐢𝐥𝐢𝐭𝐲): اگر ایرانسل بخواهد سرویس جدید! اضافه کند به راحتی از طریق ESB بدون نیاز به تغییرات میتواند سرویس جدید را به سرویس های دیگر متصل کند.
ویژگی ها
مسیریابی (𝐑𝐨𝐮𝐭𝐢𝐧𝐠): می تواند درخواست ها را از یک سرویس دریافت و به سرویس مربوط ارسال کند.
تبدیل داده ها (𝐃𝐚𝐭𝐚 𝐓𝐫𝐚𝐧𝐬𝐟𝐨𝐫𝐦𝐚𝐭𝐢𝐨𝐧): در صورت متفاوت بودن فرمت درخواست ها و پاسخ ها بین سرویس های مختلف می تواند آن ها را تبدیل کند.
مدیریت تراکنش ها (𝐓𝐫𝐚𝐧𝐬𝐚𝐜𝐭𝐢𝐨𝐧 𝐌𝐚𝐧𝐚𝐠𝐞𝐦𝐞𝐧𝐭): می تواند تراکنش های توزیع شده و 𝐜𝐨𝐧𝐬𝐢𝐬𝐭𝐞𝐧𝐜𝐲 آن ها را مدیریت کند.
تبدیل پروتکل ها (𝐏𝐫𝐨𝐭𝐨𝐜𝐨𝐥 𝐓𝐫𝐚𝐧𝐬𝐟𝐨𝐫𝐦𝐚𝐭𝐢𝐨𝐧): در صورتی که سرویس ها از پروتکل های مختلف مانند REST, SOAP و... استفاده کنند 𝐄𝐒𝐁 می تواند این پروتکل ها را تبدیل کند.
مدیریت امنیت (𝐒𝐞𝐜𝐮𝐫𝐢𝐭𝐲 𝐌𝐚𝐧𝐚𝐠𝐞𝐦𝐞𝐧𝐭): برای مدیریت موارد امنیتی مانند 𝐀𝐮𝐭𝐡𝐞𝐧𝐭𝐢𝐜𝐚𝐭𝐢𝐨𝐧, 𝐃𝐚𝐭𝐚 𝐄𝐧𝐜𝐫𝐲𝐩𝐭𝐢𝐨𝐧 و... کاربرد دارد.
مانیتورینگ و لاگ (𝐌𝐨𝐧𝐢𝐭𝐨𝐫𝐢𝐧𝐠): برای مانیتور کردن تبادل داده ها و... کاربرد دارد.