Codarius

Środowisko infrastrukturalne dla wielu sklepów działających na platformie Codarius

O projekcie

Środowisko infrastrukturalne dla wielu sklepów działających na platformie Codarius.

Projekt obejmował reorganizację infrastruktury platformy e-commerce Codarius poprzez rozdzielenie sklepów działających wcześniej w jednym wspólnym stacku Dockerowym na oddzielne instancje aplikacji.

Celem było zwiększenie niezależności działania poszczególnych sklepów oraz poprawa stabilności całego środowiska. Nowa architektura umożliwia również łatwiejsze zarządzanie zasobami oraz rozwój platformy o kolejne sklepy w przyszłości.

Środowisko zostało wdrożone na nowym serwerze dedykowanym oraz oparte na kontenerach Docker zarządzanych przy użyciu Docker Compose.

Cel DevOps

Głównym celem projektu było uruchomienie sklepów działających wcześniej w jednym środowisku jako osobnych instancji aplikacji.

Rozwiązanie miało zapewnić:

  • większą niezależność działania poszczególnych sklepów
  • zwiększenie stabilności środowiska produkcyjnego
  • łatwiejsze skalowanie infrastruktury
  • możliwość wdrażania zmian bez wpływu na inne instancje systemu
Wyzwania projektowe

Największym wyzwaniem było przeniesienie sklepów do nowej infrastruktury oraz uruchomienie ich jako osobnych instancji przy minimalnej przerwie w działaniu systemu.

Ze względu na charakter platformy e-commerce kluczowe było ograniczenie downtime, aby uniknąć strat finansowych klientów korzystających ze sklepów.

Dzięki zastosowaniu strategii blue-green deployment oraz odpowiednio zaplanowanej migracji infrastruktury udało się przeprowadzić cały proces w sposób bezpieczny i praktycznie niezauważalny dla użytkowników końcowych.

CI/CD i proces wdrożeń

Proces wdrożeń został zautomatyzowany przy użyciu Jenkins oraz strategii blue-green deployment.

Pipeline obejmuje:

  • budowanie obrazu Docker aplikacji
  • publikację obrazu do prywatnego repozytorium Harbor
  • uruchomienie nowej instancji aplikacji z aktualną wersją kodu
  • przełączenie ruchu na nową instancję systemu

Dzięki temu nowe wersje aplikacji mogą być wdrażane praktycznie bez zauważalnego downtime dla użytkowników.

Architektura infrastruktury i systemu

Architektura infrastruktury

Infrastruktura została uruchomiona na serwerze dedykowanym w polskiej serwerowni.

Decyzja ta została podjęta ze względu na:

 

  • szybkie wsparcie techniczne dostępne w lokalnym centrum danych
  • pełną kontrolę nad środowiskiem serwerowym
  • przewidywalność kosztów infrastruktury
  • elastyczność konfiguracji własnej maszyny

Całość środowiska została oparta na kontenerach Docker zarządzanych przy użyciu Docker Compose.

Architektura systemu

System składa się z następujących komponentów działających w środowisku kontenerowym:

 

  • aplikacja Symfony
  • baza danych MySQL
  • silnik wyszukiwania Elasticsearch
  • warstwa cache Redis
  • webserver Nginx

Wszystkie komponenty uruchamiane są w ramach jednego stacku Docker Compose.

Ruch sieciowy obsługiwany jest przez reverse proxy Nginx działające bezpośrednio na hoście, które odpowiada za przekierowanie zapytań do właściwych kontenerów aplikacyjnych.

Monitoring, bezpieczeństwo i utrzymanie

Monitoring infrastruktury oparty jest na zestawie narzędzi:

  • Prometheus – zbieranie metryk systemowych
  • Grafana – wizualizacja danych monitoringowych
  • Loki + Promtail – agregacja i analiza logów
  • Uptime Kuma – monitorowanie dostępności usług

System alertów został zintegrowany z Microsoft Teams, dzięki czemu zespół otrzymuje natychmiastowe powiadomienia o potencjalnych problemach. W zakresie backupów wykonywane są:

  • dumpy baz danych
  • kopie plików statycznych

Kopie zapasowe przesyłane są na serwer SFTP w innym centrum danych.

Dodatkowo utrzymywana jest druga instancja sklepów na osobnym serwerze dedykowanym, z:

  • replikacją baz danych
  • synchronizacją plików statycznych przez rsync
  • automatycznym deploymentem kodu przy użyciu Jenkins

Porozmawiajmy o Twoim projekcie

Opisz swoje potrzeby, a my wrócimy z propozycją dopasowaną do Twojego biznesu.

Porozmawiajmy