Postitus on vanem kui üks aasta, seega osa infost võib olla aegnud.
1. Koodibaas
- Ühes koodi repositoorimis asub üks rakendus, millest saab teha palju versioone - tootmine, testmine jne.
- Muutatused koodibaasis saavad alati mõjutada ainult 1 rakendust. Kui muudatusi on vaja tagasi võtta on lihtne ajaloost aru saada.
2. Sõltuvused
- ei tohiks sõltuda välistest ja kaudsetest deklareerimata sõltuvustest (näiteks keskkonda paigaldatud NodeJs serverist).
- kõik sõltuvused tuleks defineerida tarkvara koodis ja panna rakendusega kaasa. Docker lähtub sellest konseptsioonist.
3. Konfiguratsioon
- rakendus ja konfiguratioon oleksid eraldi.
- konfiguratiooni väärtusi saaks muuta ilma tarkvara uuesti kokkuehitamiseta.
- kui konfiguratioon ei asu rakenduses, siis saab seda kergelt liigutada ka uutele keskkondadele ilma lähtekoodi muutamata.
4. Toetavad tugiteenused
- kõik osapooled, kes ei paku põhifunktsionaalsust, peaks olema käsitletud kui väljavahetatavad liidesed. Näiteks andmebaasid, järjekorrad, välised salvestusruumid, kolmandate osapoolte veebiteenused.
- Tuginteenuseid peaks saama konfiguratiooniga välja vahetada. See võimaldab käivituskeskkonnas tugiteenuseid asendada.
5. Ehita rakendus, tooteversioon, jooksuta
- rakenduse ehituse, tooteversiooni loomine ning jooksutamise etapid tuleks rangelt lahus hoida. Ehituse faasis kompileeritakse tarkvara kood. Tooteversiooni loomise faasis lisatakse ehitatud rakendusele konfiguratioonid. Joksutamise faasis paigaldatakse tooteversioon keskkonda ning käivitatakse see.
- Sammude lahus hoidmine võimaldab vahetulemite versioneerimist. See omakorda annab ülevaate, et milline tarkvara on reaalses kasutuses.
6. Protsessid
- iga rakendus oleks eraldi protsess, millel ei ole sisemist olekut või seisu. See võimaldab rakendusest teha jooksvalt palju koopiaid või olemasolevaid protsesse vajadusel ära tappa ilma, et tekkiks andmekadu.
- Olek mida on vaja säilitada peab asuma väljaspool rakenduse protsessi (andmebaasi, kõvakettal, puhverserveris).
- Manifest
- 12 Factor App