Deployment considerations
- 2 minutes to read
Stateless or stateful?
All services except Design Editor are stateless. This means that they don't store any significant data on the same machine where they run. They may store logs or temporary files, but all the persistent data is stored in a database.
This means that you may easily run several instances of such services in parallel to one another. For example, they can be located behind the load balancer, or, if you are using Azure, you can run them as an Azure Web App or virtual machines with auto-scaling.
Windows or Linux?
Several services do require Windows:
- Asset Processor
- Design Atoms API
- Design Editor
However, other components, such as Asset Storage or BackOffice, can run on Linux as well.
We recommend considering Linux machines whenever possible. For example, if you are running the system on Azure, Linux machines are way less expensive compared to Windows machines with the same specs.
Cloud environment or physical machines?
We have created this system to be deployed on the Azure platform. This is the recommended platform for deploying Customer's Canvas.
Having said this, you are not limited to Azure. Alternative cloud platforms like Amazon AWS are possible too, although there is not yet much practical experience in this environment.
You may even install the system to a single physical server, although you will lose the benefits of the distributed system in this case. Anyway, a single machine setup is a reasonable solution for backend/QA deployments.
Planning infrastructure
Each web-to-print project is unique and many factors affect the system requirements. It is necessary to take into consideration the expected traffic, the product type (is it a large format banner or a tiny business card), how many graphical elements you typically have, whether you are doing VDP projects, etc.
However, we do have some suggestions that may help you plan your infrastructure.
- For the production environment, it is recommended to deploy each component to a separate machine or App Service.
- The minimal machine size is 2 CPU/8 GB RAM (for low-traffic or non-production use).
- For the average load size or more, you may want to use 8 CPU/32 GB RAM or even 16 CPU/64 GB RAM. When this is not enough, we would recommend horizontal scaling.
- You don't have to provide machines with the same specs for each service. The most resource intensive components are Design Editor and Asset Processor.
- Don't forget about SQL Server and MongoDB. The latter requires a 3-replica set setup.