Manual service routing

Hello We want to create an architecture, like in the attached diagram.
Operator service must be selected by specific rules.

Example: we want node1 to use operator service with host name general-operator-service.com and node2 to use my-company-operator-service.com.
Next day we want both of them to use second host name.

We can create new service which will be to build HTTP request in each node and send it to operator service. But we would like to call operator service as remote handler of service

Hi @neki , there isn’t really a question… so great! Anything is possible by adding another layer of indirection.

In a Zeebe architecture being orchestrated by the engine, none of those services talk to each other, they talk to the broker, like this: https://docs.zeebe.io/basics/job-workers.html

And the BPMN defines the order of execution. You can create anything in code. However, it looks to me like you are mixing up two different ideas.

Do you have a specific question about this architecture?

It might help if you were to phrase those nodes and services in terms of the Zeebe components that they would map to. Are any of those job workers? Are Nodes VMs?

Josh

1 Like

Each OperatorService instance has its own isolated DB instance. So we want to be able to configure with which OperatorService instance each workflow instance works.
We just started to plane architecture on zebe platform and maybe don’t understand it well.

1 Like

You can’t pin workflows to specific workers without putting them on different brokers.

Is it correct variant pin one worker (operator service) to many brokers?

No, one worker pins to one broker. Any job with the task type for that worker will be serviced by that worker.

You will have a more accurate model for Zeebe by taking the bpmn out of your services in the diagram. The bpmn is in the broker, and orchestrates the workers.

It looks like you are mixing choreography with orchestration, and also have an idea that the broker is embedded.

Put the bpmn at the top, and have the tasks link to a worker for that task type. The workers are stateless. That will give you a Zeebe architecture.

Will the next architecture be more correct?
I don’t draw the broker. The broker will be only one.
The arrows show only resource management.

How can I transfer the tenant ID between the services?
I see only one way - add the tenant id in the process as a variable.

There is no Zeebe broker or BPMN in there.

I’d say to get your Zeebe architecture flat for a single-user use-case first, then tackle multi-tenancy as the next problem, once you are clear on what a Zeebe solution would look like.