Architecture
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, master API are secured and require an authentication. 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 it from the master through HTTP using the REST API.