Přeskočit obsah

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.