Hlavní
Úvod¶
V moderní době je software často dodáván jako služba, což označujeme pojmem webová aplikace nebo software-as-a-service (SaaS). Twelve-factor metodika slouží pro vytváření (SaaS) aplikací, které:
- Používají deklarativní formáty pro nastavení automatizace, což vede k minimalizaci času a nákladů potřebných pro začlenění nových vývojářů do projektu;
- Mají jasný kontrakt s operačním systémem ve kterém běží, čímž je umožněna maximální přenositelnost mezi různými běhovými prostředími;
- Jsou vhodné pro nasazení na moderních cloudových platformách, což eliminuje potřebu správy serverů a podpůrných systémů;
- Minimalizují rozdíly mezi vývojovým a produkčním prostředím, čímž umožňují průběžné nasazovaní a maximální flexibilitu;
- Umožňují vyškálování bez výrazných změn v nástrojích, architektuře nebo vývojových postupech.
Twelve-factor metodiku lze použít na aplikace napsané v jakémkoliv programovacím jazyce a používající libovolnou kombinaci podpůrných služeb (databáze, fronty, vyrovnávací paměť atd.).
Pozadí¶
Přispěvatelé tohoto dokumentu se přímo podíleli na vývoji a nasazení stovek aplikací a byli svědky vývoje, provozu a škálování stovek tisíc aplikací prostřednictvím své práce na platformě Heroku.
Tento dokument shromažďuje všechny naše zkušenosti a postřehy týkající se široké škály aplikací typu software-as-a-service v divočině. Jedná se o sadu ideálních postupů pro vývoj aplikací se zvláštní pozorností věnovanou dynamice organického růstu aplikace v průběhu času, dynamice spolupráce mezi vývojáři pracujícími na kódu aplikace a vyhýbání se nákladům na erozi softwaru.
Naší motivací je zvyšovat povědomí o některých systémových problémech, které jsme zaznamenali v moderním vývoji aplikací, poskytnout společnou slovní zásobu pro diskusi o těchto problémech a nabídnout rozsáhlou sadu koncepčních řešení těchto problémů s doprovodnou terminologií. Formát je inspirován knihami Martina Fowlera Patterns of Enterprise Application Architecture a Refactoring.
Kdo by měl číst tento dokument?¶
Každý vývojář pracující na aplikaci, která běží jako služba. Systémoví inženýři, kteří takové aplikace nasazují nebo spravují.
The Twelve Factors¶
I. Zdrojový kód¶
Mějte jeden zdrojový kód ve verzovacím systému a mnoho nasazení.
II. Závislosti¶
Explicitně deklarujte a izololujte závislosti.
III. Konfigurace¶
Konfigurace ukládejte do prostředí.
IV. Podpůrné služby¶
Nakládejte s podpůrnými službami jako s připojenými zdroji.
V. Sestavení, vydání, spuštění¶
Striktně oddělte fáze sestavení, vydání a spuštění.
VI. Procesy¶
Spouštějte aplikaci jako jeden nebo více bezestavových procesů.
VII. Vazba s portem¶
Exportujte služby pomocí vazby na port.
VIII. Souběh¶
Škálujte do šířky použitím proces modelu.
IX. Zahoditelnost¶
Maximalizujte robustnost pomocí rychlého spouštění a korektního vypnutí.
X. Podobnost Vývoj/Produkce¶
Udržujte si co nejmenší rozdíly mezi vývojovým, testovacím a produkčním prostředím.
XI. Logy¶
S logy zacházejte jako s proudy událostí.
XII. Admin procesy¶
Spouštějte administrativní úlohy jako jednorázové procesy.