Deploy to AWS Beanstalk with LoadBalancer

I’m trying to figure out a relatively painless way to deploy a .WAR to a load balanced beanstalk environment. The tutorial video published by Haulmont was very informative but only discussed a single instance deployment. Two possibilities come to mind:

A) Deploy a single .WAR to each instance. The down side being that this creates a much larger number of middleware instances than is needed.
B) Create two beanstalk applications: 1 for web clients and one for middleware. Then the web clients would only need to point to the load balancer of the core environment.

In both configurations, I don’t fully understand the implications of having the multiple middleware instances without explicitly listing them in the .WAR? Like, how would it affect the task scheduler?

Some clarification would be appreciated.

As a sidenote, the reason I’m trying to use the load balanced environment is that I want to easily leverage Amazon’s certificate manager.


i a while ago wrote an article series about a similar AWS deployment. It also contains discussions and information about the load balancing part:

In particular the third article deals with the deployment behind a load balancer.
It is a little bit outdated, but perhaps you find some information in it.

What needs to be established is the cluster communication between the core application instances. You can read more about it in the docs: Setting up a Middleware Cluster - CUBA Platform. Developer’s Manual

In this case I would think twice about it. I know the ACM is quite neat to use, but on the other hand a load balancing deployment with multiple instances and cluster sync should be established because the HA requirements are really that high. Because it is still infrastructure complexity associated with it.

Perhaps you also think about Heroku as a deployment option: WAR Deployment to Heroku - CUBA Platform. Developer’s Manual. It solves your HTTPS problem and is just less infrastructure to deal with. Under the hood is also runs on AWS.


For the Cuba team, what would the implications be for these situations?


  1. You should study the Application Scaling - CUBA Platform. Developer’s Manual documentation section if you plan to deploy application as a cluster. It mentions both A and B cases you’ve described. We would be happy to answer any more specific questions if those arise.

Sorry, I don’t feel this represents a reason for a cluster deployment. Even if you are using AWS load balancer, couldn’t you assign just one backend node for the LB target group?
Cluster deployment is more complex and more expensive than one-node deployment, so one should avoid doing it unless there is a requirement from business (high availability, zero downtime updates).