El tiempo de trabajo no es una métrica de marketing para nosotros. Es una restricción de ingeniería que da forma a cada decisión que tomamos. Cuando todo su negocio opera en una sola plataforma, el tiempo de intemperia no es un inconveniente. Es una parada completa. Esa responsabilidad es algo que tomamos en serio, y se refleja en cada capa de la arquitectura KamoCRM, desde la base de datos hasta el equilibrador de carga.
En la fundación, manejamos YugabyteDB como nuestra tienda de datos principal. YugabyteDB es una base de datos SQL distribuida que replica datos a través de múltiples nodos con failover automático. Si un nodo cae, el clúster continúa operando sin pérdida de datos o intervención manual. Además, nuestra capa de aplicación consiste en más de 64 microservicios apátridas que se ejecutan en Kubernetes a través de RKE2. Debido a que cada servicio es apátrida, cualquier caso puede ser reemplazado o escalado sin afectar a los demás.
La comunicación en tiempo real añade otra capa de complejidad. Las videoconferencias, mensajería y llamadas telefónicas requieren conexiones persistentes y baja latencia. Manejamos esto con Janus WebRTC para medios de comunicación y NATS JetStream para la intermediación de mensajes, ambos desplegados en configuraciones altamente disponibles en todo nuestro clúster. Incluso nuestra capa de almacenamiento de archivos, alimentada por MinIO, está configurada con codificación de borrado para durabilidad de datos.
El resultado es un sistema sin un solo componente cuyo fallo derriba el resto. Actualiza el barco varias veces al día como despliegues de rodadura, por lo que liberar no cuesta disponibilidad. Miles de métricas son rastreadas en vivo, y el ingeniero de guardia oye hablar de una anomalía en cuestión de segundos. Eso es lo que se sitúa detrás de la cifra del 99,9%.
