The Optimization Server is a container-based modularized application.
On the following diagram, you will find different clients on the top, the master in the middle
and the workers on the bottom.
Master and workers exchange events through messaging (using AMQP over RabbitMQ) and other data through HTTP REST. Workers are automatically discovered by the master, as soon as they are started. Master uses MongoDB to store Optimization Server internal data. Both RabbitMQ and MongoDB are infrastructure, and should be transparent for a user of Optimization Server. More details about how the master works are given in Section Master.
Moreover, keycloak has to be used to securely access master API. Keycloak can handle complex authentication use cases, more details are given in the dedicated section.
A typical workflow is the following: