0

I want to adopt a solution of EIP for cloud deployment for a web application:

  • The application will be developed in such an approach that each layer (e.g. data, service, web) will come out as a separate module and artifact.
  • Each layer has the opportunity to deployed on a different virtual resource on the cloud. In this regards, web nodes will in a way find the related service nodes and likewise service nodes are connected to data nodes.
  • Objects in the service layer provide REST access to the services in the application. Web layer is supposed to use REST services from service layer to complete requests for users of the application.

For the above requirement to deliver a "highly-scalable" application on the cloud, it seems that solutions such as Apache Camel, Spring Integration, and Mule ESB are of significant options.

There seems to be other discussion such as a question or a blog post on this topic, but I was wondering if anybody has had specific experiences with such a deployment scheme on "the cloud"? I'd be thankful for any ideas and sharing experiences. TIA.

Community
  • 1
  • 1
nobeh
  • 9,784
  • 10
  • 49
  • 66

1 Answers1

1

To me this looks a bit like overengineering. Is there a real reason that you need to separate all those layers? What you describe looks a lot like the J2EE applications from some years ago.

How about deploying all layers of the application onto each node and just use simple Java calls or OSGi services to communicate.

This aproach has several advantages:

  • Less complexity
  • No serialization or DTOs
  • Transactions are easy / no distributed transactions necessary
  • Load Balancing and Failover is much easier as you can do it on the web layer only
  • Performance is probably a lot higher

You can implement such an application using spring or blueprint (on OSGi).

Another options is to use a modern JavaEE server. If this is interesting to you take a look at some of the courses of Adam Bien. He shows how to use JavaEE in a really lean way.

For communicating between nodes I have good experiences with Camel and CXF but you should try to avoid remoting as much as possible.

Christian Schneider
  • 19,420
  • 2
  • 39
  • 64