Fintech / Krypto trading

R-team: z ručně spouštěných Windows serverů na GitOps platformu v Kubernetes, o 40 % levněji

R-team, firma obchodující s kryptoměnami na vlastní účet, provozovala své boty, příjem tržních dat a exekuční jádro jako procesy spouštěné ručně na třech Windows serverech. Obchoduje se nepřetržitě, takže jsme nemohli nic zastavit ani my. Kubernetes platformu jsme postavili vedle starých serverů, nechali obě běžet souběžně, dokud se výsledky neshodovaly, produkci přepnuli během jednoho večera podle scénáře a potom převedli všechny služby na GitOps.

Klient: R-teamObor: Fintech / krypto tradingCloud: DigitalOceanSpolupráce: od února 2025, pokračujeTým na naší straně: managed DevOps tým

Výchozí stav

Nepřetržitý byznys na procesech, které nikdo nesepsal

R-team obchoduje nonstop na několika burzách. Jeho stack rostl tak, jak tradingové stacky obvykle rostou: zhruba osmnáct procesů v Pythonu (boty, websocketové přijímače tržních dat, exekuční jádro, kontrola rizik a reporty) na třech Windows serverech, spouštěných ručně z batch souborů. Žádná infrastruktura jako kód, žádný centrální monitoring a přehled o tom, co kde běží, existoval hlavně v hlavách lidí.

Dokud byl tým malý, fungovalo to. S každou další strategií to ale přestávalo stačit: nový bot znamenal další ruční spuštění, oprava na jednom serveru se mohla zapomenout na druhém a nikdo nedokázal s jistotou říct, co v produkci právě běží. Otázka zněla, jak převést byznys, který nikdy nezavírá, na moderní platformu a nevsadit přitom obchodní pozice na migraci.

Jedna platforma popsaná v kódu

Každý server, cluster, databáze i služba definované v Gitu. Stav produkce si přečtete, nemusíte si ho pamatovat.

Migrace, která nesmí prodělat

Nová platforma se musela proti staré osvědčit na skutečných obchodních datech dřív, než převzala jedinou pozici.

Samoobsluha pro tradingový tým

Vývojáři strategií mají nasadit nového bota, aniž by čekali na infrastrukturního inženýra.

Co jsme postavili

Platforma vrstvu po vrstvě

Všechno je definované jako kód a prochází revizí v pull requestech. Změny infrastruktury se plánují v pull requestu a aplikují se jen záměrným spuštěním pipeline.

Cloudový základDigitalOcean
Terraform pro cluster, VM, databáze a úložištěVzdálený stav v objektovém úložištiPlán v pull requestu, aplikace po schválení
Výpočetní vrstvaspravovaný Kubernetes
Jeden produkční clusterSamostatné node pooly pro každý typ zátěžeTainty oddělují boty, tržní data a reportyUpgrade přes tři verze Kubernetes
Datapodle zátěže
ClickHouse pro tržní data, spravovaný operátoremMySQL se zálohami do objektového úložištěSpravovaný RedisUzavřené veřejné endpointy databází a logů
TajemstvíVault
HashiCorp Vault s Kubernetes autentizacíExternal Secrets OperatorPolitika jen pro čtení, jedna cesta na aplikaciCI nevytváří žádná tajemství
NasazováníGitOps
GitHub Actions se znovupoužitelnými šablonami pipelinePrivátní registr artefaktů a imageSdílené knihovny s verzemi, aktualizuje je RenovateArgo CD app-of-appsJeden Helm chart, jeden values soubor na bota
ObservabilitaGrafana stack
Metriky, logy a trasy v GrafaněLogy v Loki na objektovém úložištiOpenTelemetry pro exekuční jádroAlerty jako kód, posílané do týmového chatuRunbooky s promptem pro AI analýzu

Jak jsme migrovali

Postavit vedle, ověřit, pak přepnout

01

Nejdřív rozplést monolit

Služby žily v jednom repozitáři a spouštěly se jako skripty. Rozdělili jsme je do vlastních repozitářů s vlastními pipeline a image.

  • Sdílený tradingový kód se stal verzovanými knihovnami v privátním registru.
  • Renovate otevírá pull requesty s aktualizacemi ve všech projektech, které je používají.
02

Obě platformy souběžně

Kubernetes platforma běžela vedle Windows serverů na samostatném obchodním účtu se stejnými tržními daty.

  • Vlastní reporty R-teamu (plán vs. skutečnost) obě platformy porovnávaly.
  • Produkce se přesunula, až když se výsledky téměř shodovaly (zhruba z 95 %).
03

Přepnutí za jeden večer podle scénáře

Přechod proběhl podle sepsaného plánu o třinácti krocích v klidném obchodním okně.

  • Zastavit boty, skriptem uzavřít pozice, přepnout produkční přístupy, znovu nasadit, sledovat.
  • Windows servery zůstaly jako testovací prostředí a po několika týdnech skončily.
Highlight

Živé tradingové služby pod GitOps, aniž bychom na ně sáhli

Po přepnutí se služby pořád nasazovaly přes CI pipeline, které zapisovaly přímo do clusteru a při každém běhu znovu vytvářely tajemství. Git a cluster se rozcházely. Čtyři klíčové služby (kontrolu rizik, přijímače tržních dat, služby botů a exekuční jádro) jsme převedli na Argo CD za jeden den, ve vlnách podle rizika. Jako první šla nejmenší služba, jako kanárek.

Nejdřív Git, potom clusterKaždá služba se nejprve popsala v Gitu přesně tak, jak běžela. Převzetí začalo, až když byl rozdíl proti živému clusteru nulový.
Nejdřív sledovat, potom jednatArgo CD každou službu nejprve jen sledovalo. Automatická synchronizace, mazání a samoopravy se zapnuly, až když ruční synchronizace nic nezměnila.
Čisté předání tajemství23 tajemství, která vytvářely pipeline, přešlo do Vaultu. Osiřelá tajemství a mrtvé záznamy o releasech jsme cestou uklidili.
Cesta zpět v každém krokuKaždá fáze měla sepsaný rollback: git revert, nebo uvolnění služby z Argo CD, aniž by se cokoli smazalo.

O dva dny později následovaly komponenty platformy: telemetrie, logování, metriky a DNS. Infrastrukturních deploy pipeline je místo osmi pět a to, co běží v clusteru, odpovídá tomu, co je v Gitu.

Nasazování

Od strategie do produkce pokaždé stejnou cestou

  1. NapsatVývojář pracuje na strategii nebo službě v jejím vlastním repozitáři.
  2. SestavitZnovupoužitelné šablony pipeline sestaví a otestují image.
  3. PublikovatImage a sdílené knihovny jdou do privátního registru.
  4. OznačitPipeline zapíše novou verzi image do Gitu. Do clusteru nesahá.
  5. SynchronizovatArgo CD změnu nasadí a drží cluster ve shodě s Gitem.
  6. SledovatDashboardy a alerty v týmovém chatu ukážou dopad.

Nový bot je jeden values soubor v jednom chartu. Po předání si vývojáři R-teamu přidávají nové boty sami, bez požadavku na infrastrukturu. Rollback je git revert.

Provoz

Jak to běží den za dnem

Alerty s návodem

Pravidla alertů jsou v Gitu vedle infrastruktury a chodí do týmového chatu. Každé má záznam v runbooku, včetně připraveného promptu pro analýzu s AI asistentem.

Aktuální Kubernetes

Cluster prošel během spolupráce upgradem přes tři minor verze Kubernetes, takže R-team nikdy neběžel na nepodporované verzi.

Menší plocha pro útok

Veřejně dostupné endpointy logů a databází jsme uzavřeli a každá aplikace čte jen svá vlastní tajemství přes politiku jen pro čtení.

Náklady

Levnější provoz než servery, které nahradil

Windows servery byly dimenzované na nejvytíženější hodinu a platily se nonstop. V Kubernetes sdílejí zátěže nody a každý typ zátěže má pool dimenzovaný podle skutečné spotřeby. Náklady na infrastrukturu tím klesly o 40 %.

Výsledky

Kde je R-team dnes

OblastDříveDnes
Kde služby běžíAsi 18 procesů na 3 Windows serverechJeden Kubernetes cluster definovaný v Terraformu
Jak se spouštějíRučně, z batch souborůArgo CD, z Gitu
Co kde běžíZčásti nezdokumentované32 aplikací, všechny viditelné v Gitu
TajemstvíPipeline je při každém běhu vytvářely znovuVault, pro každou aplikaci jen pro čtení
Nový obchodní botRuční nastavení na serveruJeden values soubor, přidají ho vývojáři R-teamu
MonitoringŽádný centrálníMetriky, logy, trasy a alerty jako kód
RollbackRučněGit revert
Náklady na infrastrukturuTři servery dimenzované na špičku−40 %
Únor 2025Terraform a první Kubernetes cluster.
Duben až červenec 2025Služby vyčleněné z monolitu. Privátní registr a Vault.
Červenec 2025Znovupoužitelné šablony pipeline a centrální logování.
Říjen 2025Obchodní boty na GitOps: jeden chart, jeden values soubor na bota.
Únor až květen 2026Souběžný provoz s Windows servery.
Květen 2026Produkce přepnutá na Kubernetes. Klíčové služby a komponenty platformy převedené na GitOps.
Červen 2026Alerty jako kód s runbooky. Windows servery vypnuté.
Červenec 2026Vývojáři R-teamu přidávají nové boty sami.

Co dál

Kam může platforma pokračovat

Další logické kroky: samostatné testovací prostředí přímo v clusteru, aby Windows testovací okruh už nebyl potřeba, převod ingress controlleru a Grafany na Argo CD a AI asistent, který prověří alerty z porovnání plánu se skutečností a zapíše svá zjištění přímo k alertu.

Řešíte něco podobného?

Probereme, jak převést vaši platformu, aniž byste zastavili byznys.

Nebo napište na info@devsecops.cz. Údaje zpracujeme podle zásad ochrany soukromí.