Deployment

To deploy a Polytope server, you can do it either manually, or using one of the deployment frameworks supported by polytope-deployment.

Deploying with polytope-deployment

polytope-deployment contains sample deployment environments for the Polytope server. You can always deploy Polytope manually, on an ad-hoc basis, by just launching the services (e.g. python -m polytope_server.frontend), but the resources in this repository help streamline the process.

polytope-deployment has frameworks for deploying locally using supervisord, on Kubernetes, or on Docker Swarm. You can add deployment configuration to the same configuration file as you use to configure polytope-server (under deployment), and the deployment frameworks will intelligently use this merged configuration to create the whole service.

For more details about these deployment frameworks look in polytope-deployment/<framework>. There is a readme which describes the pre-requisites and deployment strategy and a default.yaml configuration which shows you the baseline configuration that you can use to customise the deployment.

Each framework contains a configure.py script which will read the service and deployment configuration and prepare the environment.

Deploying ad-hoc

If deploying polytope-server manually, you need to have:

  • Python >= 3.7

  • jinja2 and polytope-server python modules

  • mongodb and rabbitmq running at a reachable network location

  • a datasource to connect the server to, FDB for example, and the relevant clients installed for those datasources

You then need to put together a Polytope configuration file (see Server Configuration Reference).

Finally you can run each of the microservices with e.g. python -m polytope_server.frontend. This is not too different to the local deployment in polytope-deployment.