Огляд ESB-систем ServiceMix і Fuse

Представляю вашій увазі невеликий огляд систем ESB (Enterprise Service Bus) на основі Apache Camel: Apache ServiceMix і Red Hat JBoss Fuse. Ці дві системи побудовані на одних і тих же компонентах і володіють схожими можливостями. Більш того, в більшості випадків, вони взаємозамінні. Apache ServiceMix розробляється open-source співтовариством, Red Hat JBoss Fuse компанією Red Hat. Здебільшого, це одні і ті ж люди.


Для початку, розберемося що таке ESB і навіщо системи такого класу використовуються в інформаційній інфраструктурі підприємств. На сучасних підприємствах використовується все більшої додатків різного класу: ERP, CRM, BPM, DWH, ECM і ще безліч трьох-буквених абревіатур. Всі ці програми використовують для інтеграції різні протоколи і формати даних. Для того, щоб зв'язати всі ці системи між собою і використовується ESB.

Отже ESB-системи виконують наступні основні функції:

  • підключення по різних протоколах
  • маршрутизація запитів та повідомлень
  • перетворення даних
Обидві системи Apache ServiceMix і Red Hat JBoss Fuse мають у своїй основі такі компоненти:

Apache Camel реалізує безпосередньо функції ESB на основі патернів EIP (Enterprise Integration Patterns). Apache Camel має свій DSL для завдань інтеграції. Існує кілька його реалізацій: Spring DSL, Blueprint DSL, Java DSL, Groovy DSL, Scala DSL. Так само, до складу Apache Camel входить більше 100 компонент відповідальних за підключення по різних протоколах і перетворення даних.

Apache ActiveMQ   система черг повідомлень. Реалізується різні функції обміну повідомленнями: обмін повідомленнями по моделям відправник-одержувач (sender-receiver), видавець-читач (publish-subscribe), синхронний обмін (request-response), персистентные повідомлення (persistent message), підтримку транзакцій, включаючи розподілені XA-транзакції.

Apache CXF   бібліотека, що реалізує функції веб-сервісів, включаючи SOAP і REST.

Apache Karaf   платформа для запуску додатків на основі OSGi. OSGi дозволяє встановлювати, видаляти і оновлювати різні модулі (bundle) без перезавантаження всієї системи і без зупинки залежних модулів. Це особливо важливо в корпоративній інфраструктурі, де зупинки компонент вкрай небажані, оскільки можуть призвести до прямих фінансових втрат. У системах на основі OSGi все є модулем (bundle): бібліотеки, маршрути інтеграції, підключення до ресурсів.

Red Hat JBoss Fuse існує альтернативний варіант запуску. Замість Apache Karaf Red Hat JBoss EAP.

Обидві системи підтримують відмовостійку (failover) конфігурацію по моделі master-slave.

Постає резонне питання, якщо Apache ServiceMix і Red Hat JBoss Fuse складаються з одних і тих же компонент, що реалізують одну й ту ж функціональність, розробляються одними і тими ж людьми, то навіщо платити більше? Крім зазначених вище компонентів, Red Hat JBoss Fuse включає кілька додаткових, що спрощують роботу адміністратора і дозволяють управляти кластером.

Hawtio   графічна консоль управління, що дозволяє підключати різні плагіни, в тому числі для управління Apache Camel, Apache ActiveMQ Fuse Fabric і т. д… Незважаючи на те, що Hawtio не входить до складу Apache ServiceMix, вона може бути встановлена на будь-яку версію Apache ServiceMix двома командами.

Fuse Fabric   система управління кластером на основі Fabric8. Дозволяє управляти конфігураціями вузлів кластера групами або окремо. Підтримує версіонування конфігурації. Так само як і Hawtio, Fabric8 може бути легко встановлена на Apache ServiceMix. Крім того, для Apache ServiceMix є альтернативний спосіб управління кластером на основі Apache Karaf Cellar.

При придбанні підписки Red Hat JBoss Fuse ви отримуєте підтримку від компанії Red Hat і можливість використовувати інструмент моніторингу Red Hat JBoss Network Operation. Apache ServiceMix RHQ, open-source аналог Red Hat JBoss Network Operation. Як альтернатива, для цілей моніторингу Apache ServiceMix може бути використаний Apache Karaf Decanter.

Apache ServiceMix'у теж є чим похвалитися. До складу останніх версій Apache ServiceMix входить двигун бізнес-процесів Activiti, який дозволяє реалізовувати персистентные інтеграційні процеси. Apache Camel не призначений для реалізації інтеграційних взаємодій рознесених за часом. Якщо при використанні Apache Camel Activiti відбувається збій, то все не надіслані дані будуть втрачені, всі транзакції відкотяться. У той же час, з використанням Activiti ми можемо зберегти стан процесу в БД. Red Hat для рішення подібних задач пропонує використовувати Red Hat JBoss BPM Suite.

Основною перевагою Apache ServiceMix перед Red Hat JBoss Fuse є те, що Apache ServiceMix включає більше нові версії компонент.

Компонент Apache ServiceMix Red Hat JBoss Fuse
Остання версія 6.1.2 6.2.1
Apache Camel 2.16.3 2.15.1
Apache ActiveMQ 5.12.3 5.11.0
Apache CXF 3.1.5 3.0.4
Apache Karaf 3.0.7 2.4
Що вибрати? Універсальної відповіді немає. Якщо у вас є команда професіоналів, які мають досвід роботи з Apache ServiceMix або Red Hat JBoss Fuse, то можна задіяти всі переваги Apache ServiceMix і заплатити при цьому менше. Якщо ж досвід відсутній, то підтримка від компанії Red Hat не буде зайвою.

Крім розглянутих систем, на основі Apache Camel Talend ESB. Але я не мав практичного досвіду роботи з нею, тому огляд вона не включена.
Джерело: Хабрахабр

0 коментарів

Тільки зареєстровані та авторизовані користувачі можуть залишати коментарі.