Következő fejezet: 2. Függőségek kezelése
Korábban már volt szó róla, de annyira érdekes tárháza az információknak a 12 tényezős alkalmazás fejlesztése, hogy érdemes végigmenni a tényezőkön. A módszertant olyan közreműködők hozzák össze, akiknek nagy tapasztalatuk van összesen többszáz alkalmazás fejlesztésében és telepítésében, és mivel a Herokunál dolgoznak, több százezer alkalmazás üzemeltetésében.
A módszertant szerintük bármilyen programozási nyelven (C, Ruby, Java, C#, stb.) és bármilyen futtató-környezetben (Windows, Linux, stb.) lehet használni.
Segítségével hármas egyensúlyt lehet kialakítani egy alkalmazás fejlesztésének és üzemeltetésének teljes életciklusa alatt. Különös figyelmet tudunk fordítani az alkalmazás időben történő természetes növekedésére és fejlődésére, a kódbázison dolgozó fejlesztők együttműködésének a dinamikájára, és el tudjuk kerülni a költséges szoftverpusztulást.
Az első pont a listán a kódbázis.
Tanácsuk röviden: egy alkalmazáshoz egy kódbázis tartozik, amit mindig verziókövető adatbázisban (kódtárban) kell tárolni (például subversion, git, mercurial vagy tfs, stb.), és minden változat telepítése (teszt, fejlesztő, éles, stb.) innen történik. Tehát:
A kódbázishoz (kódtárhoz) egyértelműen megfeleltethető pontosan egy alkalmazás, és ugyanez igaz visszafelé is.
- Ha több kódbázis van, akkor az nem lehet egy alkalmazás. Ebben az esetben elosztott rendszerről beszélünk több összetevővel. Ilyenkor tekintsünk minden összetevőt egy-egy alkalmazásnak, és ezek az alkalmazások külön-külön már alkalmasak arra, hogy a 12 tényezős alkalmazásfejlesztés követelményeinek megfeleljenek.
- Ha több alkalmazás ugyanazt a kódot megosztja (például ugyanazt a függvényt használják, ugyanazt a konstans/modell kódot tartalmazzák stb.), akkor ezek az alkalmazások megsértik a 12 tényezős alkalmazásfejlesztés előírásait. Ebben az esetben a megoldás az, hogy a megosztott kódot például egy könyvtárba ki kell szervezni, és az egyes alkalmazások közötti függőségek feloldásának mechanizmusával (ld. később, egy következő blog bejegyzésben) felhasználni ahol szükség van rá.
Minden kódbázishoz tehát pontosan egy alkalmazás tartozik, azonban ezt az alkalmazást több környezetben és változatban is lehet telepíteni. A telepítés az alkalmazásnak egy futó példánya. Ilyen például az éles (produkciós) környezet, különböző tesztelési környezetek, illetve, minden fejlesztő gépére kerül egy-egy fejlesztői másolat is az alkalmazásból.
A kódbázis azonos minden példánynál akkor is, ha nem minden telepítés azonos kód verzióból készült. A fejlesztőknél lehetnek olyan módosítások, amiket a tesztkörnyezet(ek)re még nem telepítettünk, és a tesztkörnyezeteken is olyan változatot tesztelünk, aminek nem minden változása van az éles telepítésben. De minden telepítés ugyanazt a kódbázist (kódtárat) használja, innen ismerjük fel, hogy ezek ugyanannak az alkalmazásnak a különböző telepítései.