KamoCRM

Blog

Inginerie10 martie 20266 min citește

Arhitectura din spatele a 99,9% Uptime

Uptime nu este un indicator de marketing pentru noi. Este o constrângere inginerească care modelează fiecare decizie pe care o luăm. Când întreaga afacere funcționează pe o singură platformă, timpul liber nu este un inconvenient. Este o oprire completă. Această responsabilitate este ceva ce luăm în serios şi se reflectă în fiecare strat al arhitecturii KamoCRM, de la baza de date până la balanţa de încărcare.

La fundaţie, conducem YugabyteDB ca magazin de date primare. YugabyteDB este o bază de date SQL distribuită care reproduce date prin mai multe noduri cu o eroare automată. Dacă un nod cade, grupul continuă să funcționeze fără pierderi de date sau intervenții manuale. Pe deasupra, stratul nostru de aplicare constă din peste 64 de microservicii apatride care rulează pe Kubernetes prin RKE2. Deoarece fiecare serviciu este apatrid, orice caz poate fi înlocuit sau extins fără a le afecta pe celelalte.

Comunicarea în timp real adaugă un alt nivel de complexitate. Conferinţele video, mesajele şi apelurile telefonice necesită conexiuni persistente şi latenţă scăzută. Ne ocupăm de acest lucru cu Janus WebRTC pentru mass-media și NATS JetStream pentru intermedierea de mesaje, ambele implementate în configurații foarte disponibile în cadrul grupului nostru. Chiar și stratul nostru de stocare a fișierelor, alimentat de MinIO, este configurat cu ștergerea codării pentru durabilitatea datelor.

Rezultatul este un sistem cu nici o singură componentă al cărui eșec ia restul în jos. Actualizează nava de mai multe ori pe zi ca derulări de rulare, astfel încât eliberarea nu costă disponibilitatea. Mii de indicatori sunt urmăriți în direct, și inginerul de gardă aude despre o anomalie în câteva secunde. Aceasta este ceea ce se află în spatele cifra 99.9%.

Echipa Kamo

Oamenii care scriu codul