Blog na blogu

Inżynieria10 marca 20266 min czytaj

Architektura za 99,9% czasu

Uptime nie jest dla nas wskaźnikiem marketingowym. Jest to ograniczenie inżynieryjne, które kształtuje każdą decyzję, którą podejmujemy. Kiedy cała Twoja firma działa na jednej platformie, przestoje nie są niedogodnością. To jest pełny przystanek. Ta odpowiedzialność jest czymś, co traktujemy poważnie i znajduje odzwierciedlenie w każdej warstwie architektury KamoCRM, od bazy danych do load balancer.

W fundacji prowadzimy YugabyteDB jako główny sklep danych. YugabyteDB to rozproszona baza danych SQL, która replikuje dane w wielu węzłach z automatycznym przekazowaniem failover. Jeśli węzeł ulegnie awarii, klaster kontynuuje działanie bez utraty danych lub ręcznej interwencji. Ponadto nasza warstwa aplikacji składa się z ponad 64 bezstanowych mikroserwisów działających na Kubernetes za pośrednictwem RKE2. Ponieważ każda usługa jest bezpaństwowa, każdy przykład można wymienić lub skalować bez wpływu na inne.

Komunikacja w czasie rzeczywistym dodaje kolejną warstwę złożoności. Konferencje wideo, wiadomości i rozmowy telefoniczne wymagają trwałych połączeń i niskiego opóźnienia. Zajmiemy się tym z Janus WebRTC dla mediów i NATS JetStream do pośrednictwa wiadomości, oba wdrożone w wysoce dostępnych konfiguracjach w naszym klastrze. Nawet nasza warstwa pamięci masowej plików, zasilana przez MinIO, jest skonfigurowana z usuwaniem kodowania dla trwałości danych.

Rezultatem jest system, w którym żaden pojedynczy składnik nie jest punktem awarii. Wdrażamy aktualizacje wiele razy dziennie za pomocą wdrożeń kroczących, które zapewniają zerowy czas przestoju. Nasz stos monitorujący śledzi tysiące wskaźników w czasie rzeczywistym, a nasz zespół inżynierów nawołowych jest powiadamiany w ciągu kilku sekund od wszelkich anomalii. To jest inżynieria stojąca za liczbą 99,9% czasu niesprawnego czasu, a my nieustannie dążymy do tego, aby było jeszcze lepiej.

Drużyna Kamo

Budowanie przyszłości działalności biznesowej