Optimization Server is a lightweight tool that allows to execute tasks remotely, and to get results back, in real time.
A typical use case is the following. A (web-based) application needs to optimize a given problem. As optimization implies CPU and memory intensive computations, optimization jobs may worth being deported to remote server(s). Thus, this application creates an optimization model to be solved remotely, and sends it to Optimization Server through HTTP. This optimization model to be solved is called a “job”. Jobs submitted to Optimization Server are queued and executed as soon as possible, and the results are streamed in real-time to the application during the solving process.
Optimization jobs are natively handled by Optimization Server (using IBM ILOG Cplex solvers), but any kind of jobs can be handled as well. For example, machine learning jobs could worth being executed remotely too. Jobs submitted to Optimization Server are easy to monitor, thanks to the web console. This web console also allows to create and run jobs. Optimization Server is packaged with Docker, and thus easy to deploy on any platform and Kubernetes / OpenShift ready (see deployment). Extending Optimization Server capabilities and integrating it in existing applications is easy, because it is modular, and we provide libraries that handle communication between components. More details about Optimization Server architecture are given in the next sub-sections.