„Cloud-native” se za poslední rok dostal z konferencí do reálných zadání. Co to doopravdy znamená? Pro nás je to soubor principů, které dělají aplikaci provozovatelnou, škálovatelnou a odolnou. 12-factor app je dobrý startovní bod.
12-factor app — co z toho má smysl¶
III. Config ve env vars. Žádné konfigurační soubory v gitu. Na Kubernetes ConfigMaps a Secrets.
VI. Stateless processes. Session v Redis, soubory v object storage, sdílená cache. 10 replik, load balancer je rozhodí kamkoliv.
XI. Logs as event streams. Aplikace loguje na stdout. Infrastruktura (Fluentd) sbírá a posílá do Elasticsearch.
Health checks — readiness vs. liveness¶
Liveness: „Je živá?” — Kubernetes restartuje. Readiness: „Přijímá traffic?” — vyřadí z load balanceru. Špatný liveness timeout → restart loop pod zátěží. Spring Boot Actuator to řeší elegantně.
Graceful shutdown¶
SIGTERM → přestat přijímat requesty → dokončit rozpracované → exit. Pre-stop hook (sleep 5) dává load balanceru čas vyřadit pod. Pozor na batch joby (checkpoint/resume), DB pool (drain), message consumers.
Observability — tři pilíře¶
- Metriky (Prometheus): RED method — request rate, error rate, duration
- Logy (ELK/Loki): strukturované JSON s correlation ID
- Tracing (Jaeger): distribuované trasování přes služby — game changer
Immutable infrastructure¶
Žádné SSH na produkci. Žádné quick fixy na podu. Změna = nová verze přes CI/CD. Pod je cattle, ne pet. Kulturní změna víc než technická.
Cloud-native je mindset¶
Není to jen „běží na cloudu”. Je to stateless, observable, resilient, automated. Můžete být cloud-native i on-premise s Kubernetes. A v cloudu nebýt cloud-native (lift and shift VM).