ForkTex Cloud, Deployment Declarativ
România
Propria noastră platformă de deployment: un manifest descrie un sistem, iar platforma îl provizionează, îl rutează, îl securizează și mută traficul fără downtime.
- Client
- ForkTex
- Industrie
- Infrastructură Cloud
- Perioadă
- iun. 2024 — În desfășurare
Rezultate
8
Stive de producție lansate prin ea
- Lansări
- Blue-green, peste Docker
- Infrastructură
- Hetzner, europeană
Situația
Orice proiect are nevoie de un loc unde să ruleze, cu TLS, o bază de date, backup-uri și o metodă de a face deploy fără downtime. A închiria asta de la o platformă gestionată e răspunsul evident, și a fost și al nostru o vreme.
Ce am construit
Manifestul
Un forktex.json descrie serviciile, infrastructura de care au nevoie și strategia de deployment. Fiecare serviciu poartă un tip, compute, persistență sau daemon, și tipul e ceea ce raționează platforma. Stratul de proxy e generat din lista de servicii, nu scris de mână.
Provizionare
Servere Hetzner, DNS Cloudflare și certificate Let's Encrypt, provizionate prin Ansible. Secretele sunt referențiate, nu incluse direct, și rezolvate la momentul deployment-ului, astfel încât manifestul e sigur de comis în repository.
Deployment
Blue-green peste Docker. Slotul nou trece verificările de sănătate înainte ca proxy-ul să se mute, apoi slotul vechi se golește pe o perioadă de grație și se oprește.
Ce a contat
Proprietatea care contează nu e zero downtime, ci faptul că rollback-ul e doar o schimbare de proxy. Când revenirea înseamnă o reconstrucție, echipele fac deploy mai rar, în loturi mai mari, ceea ce face fiecare deploy mai riscant.
Rezultat
Opt stive de producție fac deploy prin ea, inclusiv acest site. Ne asumăm backup-urile, patch-urile și provizionarea pe care o platformă gestionată le-ar absorbi; costul ăsta se amortizează doar pentru că aceeași platformă rulează fiecare proiect.
Lecturi conexe
Pornește orice platformă de la zero
Un inginer nou ar trebui să ajungă la un sistem funcțional cu o singură comandă, pe oricare dintre proiectele noastre, fără să citească o pagină de wiki învechită de opt luni.
Producție declarativă
Un repository ar trebui să declare cum rulează într-un singur fișier pe care o mașină îl poate citi. Altfel, fiecare consumator al acelui fapt îl re-deduce, iar unul dintre ei greșește.