Hi,

What is the problem you are trying to solve? If the issue are the dependencies 
that are difficult to manage, I do not really think it matters exactly on what 
platform you host your services. What you need to reflect on are the 
dependencies and how to better de-couple the services. In method B you mention 
events but in method A you talk just about messages, but I would expect you can 
achieve the same level of de-coupling in both scenarios.

The basic idea of an ESB is (as you undoubtedly know) to provide Mediation 
which would mean that you put the ESB as an intermediate layer for all your 
integrated systems. In your case it sounds like you have control of the 
lifecycle of the source systems, the formats and transfer protocols which makes 
this mediation less of an argument or even pointless. If this is the case the 
main driver to replace tomcat with ServiceMix would be arguments related to 
performance, fault tolerance, service availability, ease of maintenance etc.

For example, if you use an embedded queue manager for messaging the system will 
likely have better fault tolerance as there is only one JVM involved and no 
network hops in order for your service to produce or publish messages. Thus, if 
a dependent system is temporarily down the queues will work perfectly in their 
capacity as a buffer between your service and the other services, without a 
risk of failing because an externally hosted queue manager is not available. If 
this is a valid argument in your scenario, hosting on ServiceMix makes a lot of 
sense as you get the embedded queue manager out of the box.

Another reason related to availability and fault tolerance is that if you 
convert your web applications to OSGI modules you are at least in theory 
capable of achieving zero downtime during servicing (upgrades). On the other 
hand you can already achieve this by using a load balancer with failover 
capability and bouncing servers in a controlled fashion. Also for really 
working properly your OSGI modules have to be properly designed. (We learnt 
this the hard way…) I don’t think Jetty or Tomcat makes a big difference, the 
difference is really between using OSGI modules versus a WAR file in a JEE web 
container.

As of ease of maintenance I believe pulling all your dependencies from a Maven 
repository could make a big difference for managing the development-deployment 
cycle. Sure there are scripts for deploying on Tomcat, it just that you have a 
finer grained control and potentially get smother upgrades.

Cheers,

Chris

On 17 jan 2014, at 08:57, apara <[email protected]> wrote:

> Hi,
> 
> I am just starting with ServiceMix and would like to better understand
> preferred deployment model.  Currently, we have a number of REST WebServices
> which are being hosted by Tomcat spread among multiple machines running
> different JVM(s).  These services have dependencies on each other, and thus
> create a network of dependencies which at times is difficult to manage.
> 
> We would like to simplify and externalize these dependencies and looking at
> ServiceMix to host these integrations.
> 
> I see two possible methods of integrating ServiceMix into our existing
> infrastructure:
> 
> Method A: Host services inside of Service Mix
> 
> 1) Instead of hosting services in Tomcat, host them inside of ServiceMix
> using Jetty.
> 2) Using the Network of Brokers configuration, network all the ServiceMix
> boxes together using ActiveMQ
> 3) Emit messages from the services which are then placed on queues/topics of
> ActiveMQ
> 4) Deploy routes to handle processing of these messages 
> 
> Method B: Host services independently of Service Mix
> 
> 1) Start up a few instances of Service Mix servers mostly for High
> Availability scenario
> 2) Using Network of Brokers link all the Service Mix instances together
> using ActiveMQ
> 3) Update our existing services to emit events (which could be routed via
> embedded camel to ActiveMQ queues/topics hosted by the network of ServiceMix
> boxes setup in step 1)
> 4) Have the ServiceMix boxes host routes that will be used to handle the
> messages while making REST calls to the other services as needed.
> 
> These methods are very similar with exception of where the web services
> actually hosted and how many ServiceMix JVM(s) are deployed.  Which is the
> preferred method for ServiceMix deployment/integration?
> 
> Thanks.
> -AP_
> 
> 
> 
> 
> --
> View this message in context: 
> http://servicemix.396122.n5.nabble.com/Integrating-ServiceMix-into-existing-architecture-tp5718755.html
> Sent from the ServiceMix - User mailing list archive at Nabble.com.

Attachment: signature.asc
Description: Message signed with OpenPGP using GPGMail

Reply via email to