The Twelve-Factor App

Ú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é:

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.