How the system is updated in real time (we have, for example, a workflow, where there are three consecutive tasks. On the second task, some tests are performed (endpoints from some microservice are called. At some point, the workflow decided to change and change some Java classes in the microservice that runs the workflow. How does Camunda have such an update? Do you need to stop the process, update everything and restart it? Or can I somehow replace the jar file with the changed classes and the process will pick up the changes? Does Camunda have any function like “refreshComponents()” to update process components at runtime without stopping?)
How can I test the benchmark for bpm processes? Is there support for multi cluster?
I am very grateful in advance for your help!
To answer your first question i’ll explain a little bit about how deployment can work and why real-time updates are quite easy. I’m going to assume that you’re using camunda as part of a spring boot application.
If you implement a service task with a Java Class the process will only go looking for that class in run time when an instance of the process arrives at that task.
If you make a change to a java class you don’t need to do anything to the running instances of the process. You can leave them as they are and when they get to the service task, they’ll run the latest version of the class.
You should always be running Camunda in a cluster. That is 2 or 3 instances of your spring boot application with a shared database for each node.
Given the above setup to update a java class you can use a rolling upgrade to bring down and replace each node one by one, resulting in 0 down time.
For your second question, benchmarking for performance it’s pretty easy (depending on what it is you’re trying to measure) I’d suggest using JMeter or something similar to send requests to start the process and see how many instances can be started per second.