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.
Optimization Server Global architecture 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:

  • a job creation is requested by a client, being given input(s) and sent to the master
  • the master stores inputs in buckets and forward the job execution through messaging to workers
  • one of the workers executes the job and sends back information to the master, that stores them
  • either clients receive information about this job through STOMP/AMQP/SSE, or they can regularly pull the master through HTTP REST