I. Kod Tabanı

Sürüm kontrol sistemi üzerinde tek bir kod tabanı, birden fazla dağıtım

On iki faktör bir uygulama her zaman Git, Mercurial veya Subversion gibi bir sürüm kontrol sistemiyle izlenir. Bu sürüm kontrol sistemindeki dosya veritabanına kod deposu (İng. code repository) veya kısaca depo (İng. repo) denir.

Bir kod tabanı, tek bir depo (Subversion gibi merkezi sürüm kontrol sistemi) ya da kök commit paylaşan birden fazla depodan (Git gibi merkezi olmayan sürüm kontrol sistemi) oluşur.

Bir kod tabanı bir çok dağıtımla eşlenir

Kod tabanı ve uygulama arasında her zaman birebir ilişki vardır:

Uygulamanın sadece bir kod tabanı vardır fakat birden fazla dağıtımı olacaktır. Bir dağıtım, uygulamanın çalışan bir örneğidir. Bu dağıtımlar genelde bir canlı yayın (İng. production) ve bir veya birkaç test ortamıdır. Ayrıca her geliştiricinin kendi yerel geliştirme ortamında çalışan bir kopyası vardır ve bunların her biri aynı zamanda dağıtım olarak nitelendirilirler.

Dağıtımlarda anlık olarak farklı sürümler etkin olabilir fakat kod tabanı tüm dağıtımlarda aynıdır. Örneğin, bir geliştirici henüz commit’lemediği değişiklikleri çalıştırıyor olabilir, veya test ortamında henüz canlı yayına dağıtılmamış bir sürüm çalışıyor olabilir. Bu nedenle hepsi ayrı dağıtım olarak tanımlanır ama kod tabanı aynıdır.