امروزه، سیستمهای نرمافزاری، از مقیاس بالاتر، ابعاد و پیچیدگی بیشتر، نسبت به سالهای گذشته برخوردار میباشند. علت این افزایش پیچیدگی، میتواند افزایش تمایل به استفاده از سیستم نرمافزاری، در کاربردها و حوزههای بیشتر نسبت به گذشته باشد. اگر بعنوان هدف بخواهیم کاربردهای بیشتری را با استفاده از یک نرمافزار پوشش دهیم، یعنی نیازمندیهای بیشتری تعریف خواهد شد، و هرچه نیازمندی بیشتر تعریف شود، طراحی معماری مناسب و پاسخگو، سختتر خواهد شد.
در طراحی معماری مناسب برای سیستمهای نرمافزاری بزرگ، روشها و پیشنهادهای بسیاری ارائه شده است. بسیاری از این چارچوبها پیشنهاد میکنند تا برای پیادهسازی، رهاندازی و نگهداری بهتر سیستم، معماری سیستم نرمافزاری از لایهها، مولفهها و سرویسهای مجزا از هم تشکیل شود. زمانی که امکان تقسیم یک سیستم کلان، به بخشهای کوچکتر وجود داشته باشد، تصمیم گرفتن در روند طراحی، و مدیریت آن، سادهتر خواهد بود.
در شرایطی که سیستم از اجزا مختلف تشکیل شده باشد، لازم است تا امکان ایجاد ارتباط بین اجزا فراهم شود. در سیستمهای نسبتا بزرگ، ایجاد بستری مناسب برای برقراری ارتباط بین لایههای درونی سیستم، میتواند تبدیل به چالش شود. برای این امر، راه حلهایی ارائه شده است که شاید معمولترین آنها استفاده از گذرگاه خدمات سازمانی یا همان ESB است.
لایه ESB یک ساختار در معماری سیستمهای نرمافزاری است که به عنوان یک لایه یا مولفه میانی در نظر گرفته میشود که ارتباط بین مولفهها و کارکردهای مختلف سیستم را فراهم میکند. این لایه عملکردهایی نظیر برقراری ارتباط بین دو مولفه، تبدیل و تبادل داده، مسیریابی و پردازش درخواستها را شامل میشود. ESB شامل مجموعهای از قوانینی است که ارتباط بین این مولفهها را تعریف مینماید. استفاده از ESB به کاهش وابستگی ( decoupling ) نیز کمک میکند، زیرا با استفاده از این ساختار، مولفههای مختلف برای برقراری ارتباط با یک دیگر، لزومی به دانش از محتوای یکدگیر ندارند.
استفاده از esb در سیستم، به نوعی سیستم نرمافزاری را به یک موجودیت قابل اتصال ( pluggable ) تبدیل میکند که ارتباط مولفههای جدید با آن را سادهتر و سریعتر میکند. به همین جهت، علاوه بر افزایش مقیاس پذیری سیستم، چابکی سازمان نیز افزایش میابد.
به طور کلی، استفاده از گذرگاه یکپارچه برای ارتباط بین اجزا، اتصال و ارتباط بین مولفهها در سیستم را، سادهتر میکند و این ساده سازی را، با تعریف استانداردهایی انجام میدهد که مولفهها از آن پیروی میکنند.
معماریهای سرویس گرا معماریای هستند که در آن توسعه و نگهداری هر سرویس به صورت کاملا مجزا از هم انجام میشود. به عبارت دیگر، هر سرویس برای ارتباط با یک سرویس دیگر، نیازی با اطلاع در مورد محتوای سرویس مقصد ندارد. در چنین سیستمهایی وجود ESB امری ضروری است.
زمانی که تعداد سرویسها در یک سیستم افزایش میابد، مدیریت ارتباط بین آنها نیز پیچیدهتر میشود. هر سرویس برای ارتباط با یک مولفه، باید پروتکل و استانداردهای لازم مولفه مقصد را رعایت کند. به همین جهت در صورت عدم وجود یکپارچهساز، لازم است تا هر مولفه برای ارتباط با دیگر سرویسها، ابزار لازم برای ترجمه و تبادل ارتباط با آن را داشته باشد. بدین ترتیب، علاوه بر پیچیدگی مدیریت ارتباط، مقیاس پذیری نیز کاهش خواهد یافت. در این شرایط ESB علاوه بر ایجاد بستری مناسب برای برقراری ارتباط بین دو مولفه، با برخورداری از آداپتورها و مترجمهای لازم، میتواند فرایند ترجمه و تبادل داده را نیز بهبود بخشد.
لایه ESB میتواند وظایف بیشتری نیز داشته باشد. مثلا در مورد مسائل مربوط به امنیت سیستم میتوان از ESB استفاده کرد. بعنوان مثال، میتوان امن بودن دادههایی که تبادل میشود را در گذرگاه بررسی کرد و به همین ترتیب از حملاتی مانند sql injection جلوگیری نمود. و یا مواردی مانند احراز هویت و یا بررسی سطح دسترسی را نیز میتوان در این لایه بررسی کرد.
به طور کلی، سیستمهایی که شامل مولفههای مجزا هستند، میتوانند لایهای جدا برای ارتباط در نظر بگیرند. عدم استفاده از ESB در شرایطی که ارتباط بین این مولفهها کارایی را دچار چالش نمیکند میتواند فاقد اهمیت باشد، اما در شرایطی، استفاده نکردن از ساختار مناسب برای برقراری ارتباط میتواند سبب افزایش چشمگیر هزینهها شود. به طور کلی در شرایط زیر پیشنهاد میشود از ESB استفاده شود.
تعداد سرویسهای زیاد
زمانی که یک سیستم شامل سرویسها و مولفههای زیادی باشد، برای مدیریت ارتباط بین هر مولفه استفاده از ESB پیشنهاد میشود.
تعداد بخشهای زیاد یک سازمان
در سازمانهایی که از بخشهای داخلی متعدد تشکیل شدهاند، و هر بخش کارکردی مجزا دارد، برخورداری از ESB میتواند مفید باشد.
لزوم به برقراری مستمر بین سرویسدهنده و سرویسگیرنده
در شرایطی که ارتباط بین مولفهها اهمیت زیادی دارد، و این ارتباط به صورت مستمر برقرار است، وجود یک لایه میانی برای مدیریت ارتباط، میتواند در بهبودی ویژگیهای کیفی تاثیر داشته باشد.
استفاده از مولفههای بیرونی ( پلاگین )
در شرایطی که سیستم نیاز به استفاده از مولفههای جدید و بیرونی داشته باشد، وجود یک ESB مناسب میتواند این امکان را با کارایی بالاتر فراهم کند.
اهمیت زیاد مقیاسپذیری
وجود لایه گذرگاه در سیستم، مقیاسپذیری را افزایش میدهد. به همین جهت در سیستمهایی که این ویژگی اهمیت بالایی دارد، برخورداری از این امکان میتواند تاثیر خوبی داشته باشد.
افزایش مقیاسپذیری
با برخورداری از یک گذرگاه مناسب، امکان افزودن مولفه جدید و برقراری ارتباط با دیگر مولفهها با سرعت بیشتری فراهم میشود.
قابلیت پشتیبانی از پروتکلهای ارتباطی بیشتر
برای پشتیبانی از یک پروتکل جدید، کافیست وابستگیهای لازم و مترجمهای لازم در ESB توسعه یابد و نیازی به پیادهسازی جدا گانه در هر سرویس نیست. بدین ترتیب توسعه سیستم برای پشتیبانی از پروتکلهای جدید سادهتر و سریعتر خواهد شد.
افزایش امنیت
با توجه به این که بخش بسیار زیادی از اطلاعات از یک لایه عبور میکند، نظارت و مدیریت آن برای موارد امنیتی، سادهتر خواهد بود.
سهولت در مانیتورینگ
با برخورداری از یک لایه برای برقراری ارتباط، نظارت بر ارتباط بین مولفهها ساده تر خواهد بود.
استفاده از ESB در کنار مزایا فراوان، چالشهایی نیز دارد. مهمترین ایراد این رویکرد این است که در صورتی که از گذرگاه مناسب استفاده نشود، ESB میتواند تبدیل به گلوگاه سیستم شود و کارکرد سیستم را تحت تاثیر قرار دهد. پس نظارت بر آن و استفاده از تکنیکهای برای جلوگیری از وقوع خطا در استفاده از ESB ضروری است.
با توجه به این که بسترهای زیادی بعنوان esb توسط شرکتهای مختلف ارائه داده شده است، انتخاب یک گزینه مناسب میتواند برای سازمان چالش باشد. برای انتخاب گزینه مناسب، میتوان موارد زیر را در نظر گفت.
مدیریت ساده
پیچیدگی و سبک وزن بودن یک بستر، میتواند اهمیت زیادی در انتخاب آن بعنوان esb داشته باشد. استفاده از یک گذرگاه با وزن زیاد، میتواند چابکی کلی سیستم را کاهش دهد. در مقابل مدیریت یک ESB سبک وزن نیز ساده تر خواهد بود.
مقیاسپذیر بودن
با توجه به این که یکی از مهمترین ویژگیهای سیستمهای نرمافزاری، مقیاس پذیری است، پس برخورداری از یک ESB که خود قابلیت مقیاسپذیری داشته باشد نیز امری ضروری است.
امنیت
در سیستمهایی مانند سیستمهای سرویس محور، بخش بسیار زیادی از داده از ESB عبور میکند، حفظ امنیت و یکپارچگی دادهها، ویژگیای است که در هنگام انتخاب پلتفرم مناسب باید در نظر داشت.
وابستگی
در انتخاب یک بستر مناسب، در نظر داشتن این که نصب و راهاندازی ESB مورد نظر، تا چه میزان نیاز به وابستگیها و ابزارهای پیشنیاز دارد، میتواند در انتخاب آن تاثیر گذار باشد.
همچنین عدم برخورداری از یک ESB مناسب و بروز نیز میتواند چالشهایی ایجاد کند. وجود گذرگاه نامناسب، میتواند مدیریت ارتباط بین مولفهها را پیچیده و زمانبر تر کند. همچنین در صورت قدیمی بودن ESB حفظ امنیت اطلاعات نیز میتواند با چالش مواجه شود.
استفاده از ESB نامناسب میتواند ویژگیهای کیفی را نیز تحت تاثیر قرار دهد. مثلا استفاده از گذرگاه نامناسب، قطعا مقیاس پذیری سیستم را تحت تاثیر قرار خواهد داد. همچنین این امر میتواند سبب کاهش کارایی کلی سیستم شود زیرا ESB با کارایی پایین میتواند به راحتی تبدیل به گلوگاه سیستم شود.
ابزار MULE ESB
این ابزار، بستری بر پایه java میباشد که در سال ۲۰۰۳ معرفی شده است. استفاده از این بستر در محیطهایی که با تعداد بالا و متفاوت پروتکل ارتباطی مواجه است میتواند مفید باشد. در این پلتفرم، پشتیبانی از بیش از ۵۰ پروتکل متفاوت مانند UDP, TCP, JDBC و … پیاده سازی شده است. هم چنین ساختار این پلتفرم به نوعی طراحی شده است که برای سیستمها با مقیاسپذیری بالا گزینه مناسبی باشد.
برای مراجعه به سایت کلیک کنید.
ابزار WSO2 ESB
این ابزار یک پروژه متنباز است که با استفاده از یک مدل سرویس محور، خدمت ارائه میکند. این پلتفرم در سال ۲۰۰۵ ارائه شده است و از تکنولوژی جاوا بهرهمند است. این بستر از Apache Axis 2 برای وب سرویسها و Apache Synsapse برای مولفههای میانی استفاده میکند. ویژگی این پلتفرم، مقیاسپذیری بالا، و ماژولار بودن آن است. این ابزار بسیاری از پروتوکلهای مطرح مانند JMS، FIX ،SOAP ،REST ،OAGIS و غیره را پشتیبانی میکند. برای مراجعه به سایت کلیک کنید.
شرکت پلتکو
یکی از شرکتهایی که تجربه ارائه خدمات ESB را دارد، شرکت پلتکو میباشد. کارشناسان و متخصصان این شرکت با بررسی تخصصی معماری سازمان مد نظر، چالشهای سازمان را شناسایی، و متناسب با آن خدمت ارائه میکنند. برای مراجعه به سایت کلیک کنید.
شرکت آیکن
یکی دیگر از شرکتهای داخلی ارائه دهنده ESB، شرکت آیکن میباشد. این شرکت با ارائه زیرساخت مناسب، امکاناتی مانند، مدیریت پیامهای درونی سیستم، مانیتورینگ، کنترل سطح دسترسی، تعیین پروتکلهای ارتباطی و .. را فراهم میآورد. برای مراجعه به سایت کلیک کنید.
شرکت داده پرداز پویای شریف
این شرکت با ارائه بستری توسعه پذیر، محیطی برای مدیریت جریان اطلاعات و ارتباط بین بخشهای مختلف را فراهم میکند. برخورداری از متخصصان با تجربه از مزیتهای این پلتفرم محسوب میشود.
برای مراجعه به سایت کلیک کنید.
1.https://blog.seeburger.com/ipaas-vs-esb-which-integration-approach-is-best-for-your-organisation/
2.https://open-source-guide.com/en/Solutions/Development-and-intermediate-layers/Esbs
3.https://www.ibm.com/topics/esb
4.https://www.mulesoft.com/resources/esb/what-esb
5.https://en.wikipedia.org/wiki/Enterprise_service_bus
این مطلب، بخشی از تمرینهای درس معماری نرمافزار در دانشگاه شهیدبهشتی است.