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.
ผลก็คือระบบที่ไม่มีส่วนประกอบเดียว ซึ่งล้มเหลวทําให้ส่วนอื่นลดลง การ ปรับ ปรุง เรือ ให้ ทัน สมัย เมตริกหลายพันตัวถูกติดตามสด และวิศวกรออนไลน์ก็ได้ยินเรื่องความผิดปกติภายในไม่กี่วินาที นั่นคือสิ่งที่อยู่หลังรูป 99.9%.
