The Twelve-Factor App

Úvod

V modernej dobe sa zvyčajne softvér dodáva ako služba: nazýva sa webová aplikácia, alebo software-as-a-service. Dvanásť faktorová aplikácia je metodológia na budovanie software-as-a-service aplikácií, ktoré:

Dvanásť faktorová metodológia sa dá použiť na aplikácie písané v akomkoľvek programovacom jazyku, ktoré používajú akúkoľvek kombináciu podporných služieb (databáza, fronta, pamäťová cache, atď).

Background

The contributors to this document have been directly involved in the development and deployment of hundreds of apps, and indirectly witnessed the development, operation, and scaling of hundreds of thousands of apps via our work on the Heroku platform.

This document synthesizes all of our experience and observations on a wide variety of software-as-a-service apps in the wild. It is a triangulation on ideal practices for app development, paying particular attention to the dynamics of the organic growth of an app over time, the dynamics of collaboration between developers working on the app’s codebase, and avoiding the cost of software erosion.

Our motivation is to raise awareness of some systemic problems we’ve seen in modern application development, to provide a shared vocabulary for discussing those problems, and to offer a set of broad conceptual solutions to those problems with accompanying terminology. The format is inspired by Martin Fowler’s books Patterns of Enterprise Application Architecture and Refactoring.

Kto by si mal prečítať tento dokument?

Každý vývojár pracujúci na aplikácii, ktorá beží ako služba. Systémoví administrátori, ktorý také aplikácie nasadzujú.

The Twelve Factors

I. Zdrojový kód

Jeden zdrojový kód vo verzionovacom systéme, veľa nasadení

II. Závislosti

Explicitne deklarované a izolované závislosti

III. Konfigurácia

Konfigurácia uložená v prostredí

IV. Podporné služby

Podporné služby sú pripojené zdroje

V. Build, release, run

Jasne oddelené fázy budovania, vydani a behu

VI. Procesy

Aplikácia sa vykonáva ako jeden alebo viac bezstavových procesov

VII. Port binding

Export služieb cez porty

VIII. Concurrency

Škálovanie pomocou modelu procesov

IX. Disposability

Maximalizácia robustnosti rýchlym štartom a vhodným vypnutím

X. Dev/prod parity

Vývojové, testovacie a produkčné prostredie sú čo najpodobnejšie ako sa dá

XI. Logy

Logy sú prúdy udalostí

XII. Admin procesy

Spúštanie administrátorských/správcovských úloh ako jednorazových procesov