Когда бы вы использовали служебную служебную шину и интегрированную среду, такую ​​как Apache Camel? - PullRequest
1 голос
/ 26 июня 2019

Я пытался исправить ситуацию, когда использование Apache Camel было бы уместно и неуместно читать эту статью - https://dzone.com/articles/when-use-apache-camel. В статье упоминается, что когда количество сервисов невелико, использование интегрированной среды, такой как Camel, может оказаться излишним, что имеет смысл. Но я был смущен этим предложением

Хотя FuseSource предлагает коммерческую поддержку, я бы не стал использовать Apache Верблюд для очень крупных интеграционных проектов. ESB - правильный инструмент для этой работы в большинстве случаев. Он предлагает множество дополнительных функций, таких как БПМ или БАМ. Конечно, вы также можете использовать несколько отдельных платформ или продукты и «создать» свой собственный ESB, но это пустая трата времени и деньги (на мой взгляд).

Это потому, что в инфраструктуре интеграции отсутствуют компоненты, предоставляемые ESB? Если да, то что это?

Ответы [ 4 ]

2 голосов
/ 27 июня 2019

На функциональном уровне Apache Camel делает все, что делают все остальные ESB, и является отличным выбором практически для любой работы по интеграции. Он имеет соединители (компоненты на верблюжьей речи) для каждого транспорта, который вы можете придумать, имеет дело с кластеризацией, может предоставить JMS-брокера и все, что вам нужно для интеграции.

Он не имеет хороших UI и IDE, чем другие инструменты (Tibco, webMethods, Boomi и т. Д.), Что является большим преимуществом. Разработчики могут написать модульные тесты, если вы используете Camel :) Я, конечно, шучу, разработчики интеграции никогда не пишут модульные тесты.

С точки зрения «веса» сам верблюд не слишком раздутый. Его можно использовать как автономную среду выполнения или просто использовать возможности интеграции в виде библиотеки в другом приложении. Он интенсивно использует пружину и может запускать большое количество потоков, поэтому требует разумного объема памяти (нижняя граница - ~ 512 Мб кучи JVM), но его нетрудно использовать. Это не будет бороться с вами.

JBoss Fuse - это полноценная корпоративная ESB с поддержкой Red Hat. Он основан на Camel, но в качестве среды выполнения использует apache karaf, который является контейнером OSGi. Это тяжелый вес, но дает вам очень мощную среду выполнения ESB, модель развертывания и интерфейс управления, и вы можете купить коммерческую поддержку Fuse и ActiveMQ у Red Hat. Это более традиционная платформа "ESB", но в глубине души все функции интеграции исходят от Camel.

0 голосов
/ 10 июля 2019

За последние 10 лет я работал с различными продуктами, которые используются для реализации ESB: Apache Camel, Mule, Oracle Service Bus, IBM Integration Bus (WebSphere Message Broker), Spring Integration, FUSE и т. Д. Я могу сказать, чтоВы отличаетесь от разных точек зрения, но самое главное, что вы должны понять, это то, что ESB - это абстрактное понятие - по сути, «шина» с точки зрения шаблонов интеграции, которая соединяет различные услуги в рамках предприятия.По этой причине вы можете создать ESB с продуктом, который нацелен на эту конкретную потребность (например, IIB), или вы можете создать его с помощью чего-то гораздо более общего (например, SpringIntegration).

Точка зрения управления:

Лучшие коммерческие продукты (те, которые вы называете "ESB"), такие как продукты от Oracle или IBM, хорошо подходят дляэта работа.У них есть хорошие пользовательские интерфейсы, которые предназначены для реализации шаблона шины.На рынке рабочей силы вам потребуется найти (может быть, простой или нет) сертифицированных специалистов для работы с этими продуктами.За этими продуктами вы получите поддержку крупных компаний, с которыми у предприятия уже могут быть действующие контракты.Часто эти продукты имеют очень специфические разъемы, которые могут (или нет, с точки зрения разработчика) облегчить вашу жизнь.В качестве примера, продукт IBM будет иметь очень эффективные соединители для IBM MQ или Mainframe CICS.Они также предлагают готовые интеграции с другими продуктами, такими как BPM.При создании более крупных реализаций ESB проекты строятся на том факте, что не все может быть сделано в таком продукте - это означает, что у вас меньше риск, но меньше гибкость.С точки зрения управления проблемами вы относительно безопасны, потому что обвиняете большую компанию, которая поддерживает вас.В отношении более «открытых» продуктов / фреймворков, таких как FUSE, Mule, Camel и т. Д., Вы начнете получать очень гибкое программное обеспечение, которое также может быть дешевле в качестве стартовой цены.Для работы с ним вам понадобятся общие профили, но вам также понадобятся разработчики программного обеспечения для разработки вашего продукта, потому что ничто не заставляет вас создавать потоки сообщений определенным образом.В определенный момент вам понадобятся, по крайней мере, некоторые очень опытные разработчики, потому что вы можете не получить эффективную поддержку, в зависимости от выбранного вами продукта.С точки зрения управления проблемами, вы несете полную ответственность за этот выбор.

Точка зрения разработчика:

Топовые коммерческие продукты будут поставляться со встроенными разъемами идругие операторы - быстро построить POC.Однако любая настройка будет проблематичной (например, у вас может быть HTTP-коннектор, но вам может потребоваться переключиться на какой-то новый алгоритм SHA, который не был стандартным на момент установки).Будет возможно ввести специальные пользовательские разъемы, но гораздо сложнее, чем с «открытыми» продуктами.Вы получите хорошие пользовательские интерфейсы, которые будут скрывать код.Это будет означать ряд недостатков для вас, например, использование репозитория кода будет неэффективным (не может различать две версии), модульные тесты трудно писать и т. Д. Интеграция с другими продуктами, такими как BPM, заставит вас использоватьпредварительно выбранный товар, все остальное будет выполнимо, но дорого.Открытые продукты / структуры будут гибкими, каждый в команде быстро поймет продукт (например, при условии, что все знают Spring).Изменение некоторых основных функций может быть очень дешевым.Тем не менее, все может быстро выродиться, если нет контроля со стороны опытных участников, потому что вы можете написать практически любой код.

Точка зрения архитектора:

Тем не менее, есть кое-что о ESB, что вы должны знать заранее.Вы должны четко понимать, что вам нужно делать (скажем, маршрутизация, обнаружение служб, преобразование протоколов и т. Д.).Если вам нужно реализовать что-то сложное в ESB, например, преобразование бизнес-сообщения, это означает, что бизнес-аналитику необходимо будет взаимодействовать с вашим ESB.Так, например, специалист по банковским платежам должен будет написать для вас XSLT.Этот XSLT может быть простым, но он также может вызвать большие проблемы, за которые вы будете нести ответственность.Теперь, если этот человек также должен знать продукт по вашему выбору, это усложняет ситуацию.Следовательно, дополнительная ценность интеграции ESB с BPM, BAM и т. Д. Очень сомнительна.Следует также отметить, что в настоящее время для большинства предприятий ESB не создает конкурентного преимущества, например, веб-страницы.Таким образом, инвестирование в сверхсложную разработку или готовый продукт должно быть проблематичным.

Заключение

Не уверен, было ли это подавляющим или понятным, но в итоге все сводится к имеющимся у вас ресурсам и сложности задачи.

Точно так же, как комментарий, в отличие от другого ответа на этот вопрос, если вы строите что-то сложное:

  1. Обратите внимание на точку зрения архитектора выше.
  2. Вы можете серьезно рассмотреть вопрос об открытых продуктах, потому что по своему опыту я могу сказать вам, что независимо от того, какую поддержку вы оказываете, когда дела идут плохо, у вас лучше работают очень опытные люди и никакой официальной поддержкидействительно спасет вас (кроме вашего лица).
0 голосов
/ 28 июня 2019

Не зацикливайтесь на таких словах, как ESB и фреймворки.Вещи, которые должны решить, какая платформа вам нужна, должны зависеть от:

  1. вашего текущего и будущего системного ландшафта
  2. ваших текущих и будущих требований (технических и нефункциональных)
  3. Ваша внутренняя компетентность
  4. Ваш бюджет

Пройдя через эти шаги, вы сможете оценить и прийти к выводу о том, что вам нужно.лучше всего подойдет для некоторых других платформ.Не зацикливайтесь на таких словах, как ESB и т. Д.

0 голосов
/ 27 июня 2019

В недавней статье по центрированному коду говорится следующее:

Apache Camel - это фреймворк, полный инструментов для маршрутизации данных в приложении.Это среда, которую вы используете, когда полноценная Enterprise Server Bus не нужна (пока).

Полный текст статьи можно найти здесь

...