Preskočiť na obsah
$ invictus-solutions
EN SK
← Späť na všetky prípadové štúdie

Fintech startup

Z dvoch VM na HA Kubernetes — CI/CD pre feature vetvy a deploye bez výpadku

Webová platforma bežala na dvoch samostatných linuxových VM: jedna pre aplikáciu, jedna pre databázu. Každý deploy znamenal výpadok, staging bol úzke hrdlo a lokálny vývoj sa líšil od produkcie. Presunuli sme ju na HA Kubernetes s produkčnými Docker image, preview prostrediami pre feature vetvy, GitLab CI/CD, MariaDB Galera a docker-compose konfiguráciou, ktorá kopíruje produkciu.

Trvanie
10 týždňov
Odvetvie
Fintech startup
Technológie
Kubernetes Docker docker-compose GitLab CI GitLab Agent (KAS) Kustomize MariaDB Galera Prometheus Grafana Loki Elasticsearch Kibana

Problém

Webová platforma bežala na dvoch samostatných linuxových VM — jeden aplikačný server, jeden databázový. Každý release znamenal výpadok, pretože jediné webové VM bolo produkciou. Viacerí vývojári nemohli pracovať na rôznych funkciách paralelne: existovalo jedno zdieľané staging prostredie a fronta naň. Lokálny vývoj používal iný stack než produkcia, takže časť chýb sa ukázala až po deployi. Obidve VM boli single point of failure.

Riešenie

Desaťtýždňová spolupráca: kontajnerizácia, Kubernetes platforma, CI/CD pipeline, presun databázy a observabilita.

Kontajnerizácia a parita s lokálnym vývojom

  • Pripravené produkčné Docker image pre aplikáciu: rovnaký základ, rovnaké runtime verzie, rovnaký tvar konfigurácie ako v produkcii
  • Tie isté image bežia lokálne cez docker-compose — vývojár na notebooku vidí rovnaký runtime, aký posiela do produkcie
  • Sessions, uploady súborov a iný zdieľaný stav presunuté z aplikačného kontajnera do backing services, takže každý pod je zameniteľný

Kubernetes platforma

  • HA klaster s rolling-update Deploymentmi za Ingressom, PodDisruptionBudgetmi a HPA na aplikačnej vrstve
  • Workloady dimenzované podľa reálnych dát z pôvodných VM, nie odhadom
  • Pôvodné VM bežali paralelne dva týždne pred dekomisáciou

Databáza

  • MariaDB Galera multi-master nahradila jediné DB VM
  • Logické aj binlog zálohy na úrovni databázy, replication-lag a slow-query alerty zapojené od prvého dňa
  • Releasy so schémovými zmenami ostávajú v plánovanom okne — sú to jediné releasy, ktoré majú výpadok — pretože online schema change s Galerou je samostatná disciplína a do tejto spolupráce sa nevošla

CI/CD s feature branchami

  • GitLab CI buildne image raz pre každý commit; ten istý artefakt beží v každom prostredí
  • GitLab Agent (KAS) sťahuje Kustomize overlays pre jednotlivé prostredia z repozitára — prod, staging a dočasné prostredia pre feature vetvy — a pri každej zmene ich aplikuje do klastra; vývojár dodáva mergom do repozitára
  • Každá feature vetva dostane pri pushi dočasný namespace a DNS subdoménu — dvaja vývojári môžu pracovať na dvoch vetvách naraz bez toho, aby si liezli do cesty
  • Merge-request pipeline spúšťa integračné testy voči reálne buildnutému image, nie voči vývojárskemu hostu

Observability

  • Prometheus, Grafana, Loki v klastri pre metriky a aplikačné logy
  • Aplikačné metriky + golden signals + metriky DB vrstvy (replication lag, slow queries, connection saturation)
  • Access logy z webu a ingressu idú do Elasticsearch a sú vizualizované v pripravených Kibana dashboardoch — podľa statusu, endpointu, histogramov latencie a top klientov
  • SLO alerting s runbookami priamo z každého alertu — žiadny spam, žiadne alerty bez vlastníka

Výsledok

  • Rolling deploy bez výpadku pre aplikačné zmeny — bežný release prejde nepovšimnuto
  • Releasy s DB migráciou ostávajú v plánovanom okne, otvorene zaznamenané v release runbooku
  • Dva single-VM SPOF preč — webová vrstva škáluje horizontálne, databáza je Galera klaster
  • Paralelná práca na feature vetvách: každý merge request má vlastné preview prostredie; čakanie na frontu a bolesť z merge konfliktov výrazne klesli
  • Lokálny stack zhodný s produkciou: docker-compose dev prostredie odhalí chyby v konfigurácii a runtime skôr, než sa dostanú do reálneho prostredia

Čoho som sa zámerne nedotkol

Existujúci zdroj pravdy (GitLab) a identity stack ostali na mieste — spolupráca bola o presune aplikácie na HA kontajnerovú platformu, nie o prestavbe všetkého okolo nej.