Előző fejezet: 4. Háttérszolgáltatások
Következő fejezet: 6. Folyamatok
Egyértelműen válasszuk külön a forráskód futtathatóvá alakítását (BUILD), telepítését (RELEASE) és telepített alkalmazásunk futtatását (RUN).
A kódbázis három szakaszban formálódik át telepített alkalmazássá:
- Az előállítási (BUILD) szakasz az a transzformáció, amikor a forráskód átalakul futtatható alkalmazássá. A forráskódnak vesszük azt a változatát, amit a fejlesztési eljárás elhelyezett a kódtárban, hozzávesszük a különbözó függőségeket és elkészítjük futtatható alkalmazást valamint a szükséges hozzávalókat (képek, egyéb bináris állományok, stb.).
- A telepítési (RELEASE) szakaszban vesszük a BUILD szakaszban előállított futtatható alkalmazást, és kombináljuk az aktuális telepítési konfigurációkkal. Az eredményül kapott kiadás (RELEASE) tartalmazza a futtatható állományokat plusz a megfelelő konfigurációt, és azonnal alkalmas arra, hogy a futtatókörnyezetben futtassuk.
- A végrehajtási (RUN) szakaszban (nevezhetjük "runtime"-nak is) a megfelelő kiadást használva folyamatokat elindítva futtatjuk az alkalmazást a végrehajtási környezetben
A 12 tényezős alkalmazásfejlesztés élesen elkülöníti tehát az előállítási, telepítési és végrehajtási szakaszokat. Például kizárja, hogy valaki a végrehajtásban lévő kódon változtasson, mert aztán lehetetlen ezeket a változtatásokat a fordítási szakaszba visszaküldeni.
Általában a telepítési segédeszközök kínálnak kiadási verziókat kezelő eszközöket is, legalábbis lehetőséget adnak arra, hogy egy telepített változatról visszaálljunk egy korábban telepítettre. Például a Capistrano a kiadási változatokat a releases
, nevű alkönmyvtárban tárolja, ahol az éppen aktuális változat egy szimbolikus link a megfelelő könyvtárra. Arollback
parancs így egyszerűen vissza tud állni az előző kiadási változatra.
Minden kiadási változatnak egyedi azonosítóval (ID) kell rendelkeznie, mint például a készítésének időpontja (tehát 2011-04-06-20:32:17
) vagy egy folyamatosan növekvő sorszám (mint a v100
).
A kiadási változatok összesége tulajdonképpen egy folyamatosan bővülő főkönyv. A kiadási változatok létrejöttük után már nem változhatnak. Bármilyen változáshoz új kiadást (Release) kell készíteni.
A fordítási szakaszt az alkalmazás fejlesztői kezdeményezik, amikor új kódot tárolnak be a kódtárba. A végrehajtás pont fordítva: automatikus indítható, ha a szerver újraindul vagy az összeomlott folyamatatot a folyamatkezelő újraindította. Ezért aztán a végrehajtásnak olyan kevés elemből kell állnia, amennyire csak lehetséges, hiszen az éjszaka közepén kialakuló probléma esetén a fejlesztők nem állnak mindig rendelkezésre. A fordítási folyamat már lehet összetett, mivel a hiba visszaszáll a fejlesztőre, aki az adott változatért felel.