Lailio to zaufany łotewski partner IT, który od 2008 roku pomaga firmom w modernizacji ich systemów informatycznych. W ramach tego projektu Dział Utrzymania i Serwisu IT Lailio ściśle współpracował z firmą Rīgas Satiksme w celu zaprojektowania, dostarczenia i wdrożenia procesu DevOps, a także zapewnienia ciągłego utrzymania platformy Odoo. System ten na co dzień obsługuje około 3000 użytkowników. Opracowane rozwiązanie opiera się na podejściu open source, łącząc je ze współczesną konteneryzacją i nowoczesnymi praktykami dostarczania oprogramowania.
Architektura platformy
Technologiczny fundament platformy Odoo został zbudowany w oparciu o nowoczesną i elastyczną architekturę, która zapewnia bezpieczeństwo systemu i precyzyjną izolację usług. Infrastruktura jest logicznie podzielona na trzy odrębne środowiska: deweloperskie, testowe i produkcyjne. Taki podział architektury jest solidną gwarancją, że wszelkie zmiany w kodzie lub aktualizacje systemu są najpierw dokładnie weryfikowane w kontrolowanych warunkach. Dopiero po pomyślnych testach trafiają one do środowiska produkcyjnego, udostępnianego użytkownikom końcowym. Skutecznie eliminuje to nieoczekiwane zakłócenia w środowisku produkcyjnym. Ponadto architektura open source zapewnia znaczną niezależność technologiczną, pozwalając zespołowi IT na przeprowadzanie zaawansowanych modyfikacji zgodnie ze specyficznymi potrzebami biznesowymi Rīgas Satiksme.
Proces DevOps z wykorzystaniem Azure DevOps
Głównym motorem napędowym procesu rozwoju i dostarczania systemu jest Azure DevOps, który służy jako centralne narzędzie dla repozytoriów i potoków CI/CD. Stworzony proces jest w pełni zautomatyzowany: gdy tylko programiści wprowadzają zmiany w kodzie do repozytorium, natychmiast rozpoczyna się ustandaryzowany cykl dostarczania i weryfikacji. W pierwszej kolejności przeprowadzany jest przegląd kodu, aby zespół mógł upewnić się co do jakości oprogramowania i jego zgodności z wewnętrznymi standardami. Następnie automatycznie uruchamiane są zautomatyzowane testy. Nowe wersje są dostarczane do środowiska produkcyjnego przez ten sam potok, dzięki czemu każde wydanie jest powtarzalne i identyfikowalne.
Kubernetes i skalowanie
Aby skutecznie zarządzać zasobami obliczeniowymi i zapewnić niezmiennie stabilne działanie nawet przy zmiennym obciążeniu, infrastruktura platformy została wdrożona na platformie kontenerowej Kubernetes. Kubernetes automatycznie zarządza kontenerami aplikacji i monitoruje ich stan zdrowia w czasie rzeczywistym. Jeśli jeden z kontenerów systemu Odoo przestanie odpowiadać lub zacznie działać z opóźnieniem, Kubernetes automatycznie go zrestartuje, nie wymagając przy tym ręcznej interwencji administratora systemu. Technologia ta pozwala również na skalowanie platformy: w przypadku większego obciążenia można dodać dodatkowe kontenery Odoo bez konieczności wprowadzania zmian w samej aplikacji.
Autoryzacja i dostęp
Podstawą bezpieczeństwa systemu i jego danych jest scentralizowane uwierzytelnianie użytkowników oraz rygorystyczne zarządzanie prawami dostępu. Biorąc pod uwagę fakt, że z platformy korzysta na co dzień około 3000 użytkowników o różnych rolach, z różnych działów i o różnym stopniu odpowiedzialności, wdrożenie nowoczesnej autoryzacji było absolutnie kluczowe. Wprowadzony scentralizowany system gwarantuje, że po zalogowaniu każdy pracownik ma dostęp tylko do tych funkcji systemu, które bezpośrednio odpowiadają jego obowiązkom na danym stanowisku. Znacznie zmniejsza to wewnętrzne ryzyko bezpieczeństwa i zapobiega nieautoryzowanemu dostępowi do poufnych informacji biznesowych.
Wydajność Odoo przy dużym obciążeniu
Standardowa architektura oprogramowania Odoo nierzadko boryka się z poważnymi wyzwaniami w zakresie wydajności w sytuacjach, gdy w systemie aktywnie działają tysiące użytkowników w tym samym czasie. Aby platforma mogła bezbłędnie sprostać obsłudze dużej liczby klientów w intensywnych warunkach, zespół Lailio wykonał dogłębną pracę inżynieryjną. Oryginalny kod Odoo został przepisany i znacznie zoptymalizowany. Te istotne zmiany w kodzie uporządkowały strukturalnie procesy przetwarzania danych oraz zoptymalizowały zapytania do bazy danych, pozwalając systemowi na bardzo szybką reakcję. W rezultacie system jest przystosowany do pracy w warunkach z wieloma jednoczesnymi użytkownikami i wysokim zagęszczeniem zapytań.
Kopie zapasowe i odtwarzanie danych
W infrastrukturze stworzono rygorystyczny i w pełni zautomatyzowany proces tworzenia kopii zapasowych oraz odtwarzania danych. System regularnie tworzy kopie zapasowe wszystkich baz danych, a także repozytoriów plików. Proces ten obejmuje również procedurę odtwarzania: w jaki sposób i w jakiej kolejności dane są odzyskiwane z kopii zapasowej, tak aby w przypadku awarii system mógł zostać przywrócony w sposób przewidywalny i kontrolowany.
Utrzymanie i monitorowanie
W ramach projektu Dział Utrzymania i Serwisu IT Lailio zapewnia ciągłe, codzienne utrzymanie platformy oraz wsparcie techniczne. Aby to utrzymanie miało charakter wysoce proaktywny, z infrastrukturą zintegrowano kompleksowe monitorowanie, a także inteligentne powiadomienia. Platforma monitorująca nieustannie gromadzi w czasie rzeczywistym ważne dane metryczne dotyczące klastra Kubernetes, zasobów kontenerów oraz ogólnej wydajności aplikacji Odoo. Gdy tylko system wykryje jakiekolwiek błędy lub nietypowe zużycie zasobów obliczeniowych, inżynierowie IT natychmiast otrzymują zautomatyzowane powiadomienia. Dzięki tak wczesnemu wykrywaniu, obsługa incydentów jest niezwykle skuteczna.
Korzyści z wdrożenia
Opracowany proces DevOps i starannie zbudowana baza techniczna znacznie ułatwiają zarządzanie biznesem na dużą skalę. Przepisany i zoptymalizowany kod Odoo, w połączeniu z elastycznym skalowaniem zapewnianym przez Kubernetes, pozwala platformie stabilnie i płynnie obsługiwać około 3000 użytkowników dziennie. Strategia open source, wraz ze zautomatyzowanymi procesami kodowania, testowania i integracji w środowisku Azure DevOps, zapewnia kontrolowane i identyfikowalne dostarczanie nowych funkcjonalności. Owocuje to wydajnym, szybkim i innowacyjnym rozwiązaniem IT do obsługi klientów na dużą skalę, które nieustannie rozwija się wraz z potrzebami klienta.