See the hardware requirements for the requirements of each application and the services.
The server and delivery are both applications written in node.js. Node.js is single threaded, but it can handle concurrency through the asynchronous event loop. If a node.js process crashes, it has to be restarted and it is not able to accept requests during startup.
For a production setup, node.js processes should always be redundant to prevent downtime in case of crashes.
We recommend to use Docker as we provide Dockerfiles for every application and service. Compatibility is ensured with every release.
Both elasticsearch and postgres will need a persistent volume mounted. Any custom configuration, as well as the supported versions for elasticsearch and postgres are visible in the respective Dockerfile.
The applications are stateless and follow the 12 factor app methodology. Any system level dependency and the required environment variables are visible in the respective Dockerfile.
Both the containers for server and editor are stateless. The elasticsearch and postgres containers data directory needs to be mounted to the host on with a data volume.
Editor: HTTP GET /version.json, Port 9000
Server: HTTP GET /status, Port 9090
Postgres: TCP, Port 5432
Elasticsearch: TCP, Port 9200
We recommend building docker images on CI and pushing them to the registry. Deployment can be done manually or triggered by CI continuously.