Heroku zveřejnilo manifest dvanácti faktorů pro moderní aplikace. Čteme ho jako checklist pro naše projekty — a zjišťujeme, kolik pravidel porušujeme.
Klíčové faktory¶
I. Codebase: Jeden repozitář = jedna aplikace. Sdílený kód patří do knihoven. III. Config: Konfigurace v environment proměnných, ne v kódu. Žádné hardcoded URL. IV. Backing services: Databáze, cache, messaging jako připojitelné resources. VI. Processes: Stateless procesy. Session data do externího store (Redis).
Závislosti a porty¶
II. Dependencies: Explicitně deklarované (Maven pom.xml). Žádné „je to na serveru”. VII. Port binding: Aplikace exportuje HTTP jako službu na portu. Embedded server (Spring Boot). VIII. Concurrency: Škálujte přes procesy, ne vlákna. Horizontální škálování.
Deploy a provoz¶
V. Build, release, run: Striktní oddělení fází. Build produkuje artefakt, release přidá config. IX. Disposability: Rychlý start, graceful shutdown. Kontejnery to podporují přirozeně. X. Dev/prod parity: Minimální rozdíly mezi prostředími. Docker to řeší. XI. Logs: Logujte na stdout, nechte infrastrukturu sbírat. XII. Admin processes: One-off admin tasks jako součást codebase.
12-Factor jako kompas¶
Nemusíte dodržet všech dvanáct faktorů od prvního dne. Ale znát je a směřovat k nim — to je rozdíl mezi moderní aplikací a legacy od prvního commitu.