Springboot service multiple instances updated with RestAPI deployment

Scenario - I want to run multiple camunda springboot services all pointing same DB and during runtime there might be possible that multiple horizontal instances will be created based on application load. Now during runtime when I deploy new BPMN process using Rest API - would this new process be visible and available for other running Springboot services and their instances as well.

Thanks
Praveen

Yes - when deploying a new model, it’s send through one node and directly into the database where all of the other nodes will pick it up.

Thanks Niall.

Will this new process be effective immediately or any specific wait time defined?

Deployment via the rest api is synchronous so, sa soon as the rest call returns successfully the process will be available.

Thanks for the answer.

Appreciate your quick response.

@praveen.nagle In addition to @Niall’s input I would suggest you to read about camunda cluster setups for process execution across nodes.

@praveen.nagle Based on the proposed architecture, I can see the segregation between camunda webapps and process execution and that’s a heterogeneous cluster, so make sure that you disable the job executors in the camunda webapps instances.

1 Like

Thank you @aravindhrs

@Niall @aravindhrs
Based on the Heterogeneous cluster documentation, I got little confused. Please calrify.

To prevent the job acquisition on node 1 from picking jobs that belong to node 2, the process engine can be configured as deployment aware, by the setting following property in the process engine configuration:

<process-engine name="default">
  ...
  <properties>
    <property name="jobExecutorDeploymentAware">true</property>
    ...
  </properties>
</process-engine>

Now, the job acquisition thread on node 1 will only pick up jobs that belong to deployments made on that node, which solves the problem. Digging a little deeper, the acquisition will only pick up those jobs that belong to deployments that were registered with the engines it serves."

What if multiple instances running for a particular Springboot Camunda service and if I do deploy using LB URL then it would hit any one one of the instance (random pick) and make the deployment - So now this new “deployed process” would be available for all other instances of same Springboot Camunda service?.

Are you using client side load balancing? Netflix Ribbon or other server side LB servers been using?

Service side application load balancer for Spring service app running in AWS ECS fargate cluster
(Not the client side)

@praveen.nagle I haven’t tried with server side LB, but strategy might be same if you able to set parameters for type of service at instance level.

For example, In client side load balancing with Netflix ribbon, we can configure affinity based rule to set type of instance groups when the microservice registers itself in service registry. When we do client side load balancing we get instance level metadata and based on the affinity rule we can route the request to the specific instances.

If same is possible with server side load balancing, you can try it out.