KamoCRM

Blog

EngineeringMarch 10, 20266 min read

The Architecture Behind 99.9% Uptime

Uptime is not a marketing metric for us. It is an engineering constraint that shapes every decision we make. When your entire business operates on a single platform, downtime is not an inconvenience. It is a full stop. That responsibility is something we take seriously, and it is reflected in every layer of the KamoCRM architecture, from the database to the load balancer.

At the foundation, we run YugabyteDB as our primary data store. YugabyteDB is a distributed SQL database that replicates data across multiple nodes with automatic failover. If a node goes down, the cluster continues operating without data loss or manual intervention. On top of that, our application layer consists of over 64 stateless microservices running on Kubernetes via RKE2. Because each service is stateless, any instance can be replaced or scaled without affecting the others.

Real-time communication adds another layer of complexity. Video conferencing, messaging, and phone calls all require persistent connections and low latency. We handle this with Janus WebRTC for media and NATS JetStream for message brokering, both deployed in highly available configurations across our cluster. Even our file storage layer, powered by MinIO, is configured with erasure coding for data durability.

The result is a system with no single component whose failure takes the rest down. Updates ship several times a day as rolling deployments, so releasing does not cost availability. Thousands of metrics are tracked live, and the on-call engineer hears about an anomaly within seconds. That is what sits behind the 99.9% figure.

The Kamo Team

The people who write the code