The goal of this document is to recommend Punch deployment practices. This reference architecture conveys a general architecture that should be adapted to accommodate the specific needs of each implementation.
This design is the recommended architecture for production environments, as it provides flexibility and resilience.
It is a major architecture recommendation that the Punch Kibana and operator servers, processing servers are separate from data storage servers.
Processing servers, in charge of running punchlne, can introduce unpredictable resource utilization. Separating processing from data store and administration servers allows each to have a system that can be sized appropriately in terms of CPU, memory and disk.
Elasticsearch and Clickhouse are memory intensive applications and so separating it to its own resources is advantageous to prevent resource contention or starvation. The same holds for Kafka which is IO intensive.
The Punch is designed to handle different failure scenarios that have different probabilities. When deploying a Punch end to end solution, the failure tolerance that you require should be considered and designed for. The minimal recommended number of instances is 3 in a cluster, 4 if you plan to use S3 Minio storage. This number should be an odd number to allow for leadership elections to always resolve.