I. Codebase

Una sola codebase sotto controllo di versione, tanti deploy

Un’app conforme alla metodologia twelve-factor è sempre sotto un sistema di controllo di versione, sia essa Git, Mercurial, o Subversion. Una copia della codebase è detta code repository, oppure più in breve code repo o repo.

Una codebase è quindi un singolo repository (in un sistema centralizzato come Subversion), oppure un set di repo che condividono una root commit (in un sistema di controllo decentralizzato come Git).

Una codebase, N deployment

C’è sempre una relazione uno-ad-uno tra codebase e applicazione:

Quindi: una sola codebase per applicazione, ma ci saranno comunque tanti deployment della stessa app. Per deploy si intende un’istanza dell’applicazione. Può essere il software in produzione, oppure una delle varie istanze in staging. Ancora, un deploy può essere la copia posseduta dal singolo sviluppatore nel suo ambiente locale.

La codebase rimane comunque sempre la stessa su tutti i deployment, anche se potrebbero essere attive diverse versioni nello stesso istante. Si pensi per esempio a uno sviluppatore che possiede dei commit in più che non ha ancora mandato in staging. Nonostante questo, comunque, rimane la condivisione della stessa codebase, nonostante la possibilità di avere più deploy della stessa app.