KamoCRM

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 bez pojedynczego komponentu, którego awaria odejmuje resztę. Aktualizacje są dostarczane kilka razy dziennie jako wdrożenia toczenia, więc zwolnienie nie kosztuje dostępności. Tysiące metryek są śledzone na żywo, a inżynier nakładów słucha o anomalii w ciągu kilku sekund. To właśnie znajduje się za liczbą 99,9%.

Drużyna Kamo

Ludzie, którzy piszą kod