Tempo de trabalho não é uma métrica de marketing para nós. É uma restrição de engenharia que molda cada decisão que tomamos. Quando todo o seu negócio opera em uma única plataforma, o tempo de inatividade não é um inconveniente. É uma paragem total. Essa responsabilidade é algo que levamos a sério, e é refletida em cada camada da arquitetura KamoCRM, desde o banco de dados até o balanceador de carga.
Na fundação, executamos o YugabyteDB como nossa principal loja de dados. YugabyteDB é um banco de dados SQL distribuído que replica dados em vários nós com failover automático. Se um nó cair, o cluster continua operando sem perda de dados ou intervenção manual. Além disso, nossa camada de aplicação consiste em mais de 64 microservices sem estado rodando em Kubernetes via RKE2. Como cada serviço é apátrida, qualquer instância pode ser substituída ou escalonada sem afetar os outros.
A comunicação em tempo real adiciona outra camada de complexidade. As videoconferências, mensagens e telefonemas requerem conexões persistentes e baixa latência. Lidamos com isso com Janus WebRTC para mídia e NATS JetStream para corretagem de mensagens, ambas implantadas em configurações altamente disponíveis em nosso cluster. Mesmo nossa camada de armazenamento de arquivos, alimentada pela MinIO, é configurada com codificação de apagamento para durabilidade de dados.
O resultado é um sistema onde nenhum componente único é um ponto de falha. Implantamos atualizações várias vezes por dia usando implantações que garantem zero tempo de inatividade. Nossa pilha de monitoramento rastreia milhares de métricas em tempo real, e nossa equipe de engenharia de plantão é alertada em segundos de qualquer anomalia. Esta é a engenharia por trás do número 99,9% uptime, e estamos continuamente empurrando para torná-lo ainda melhor.