12-Factor App Nedir?
İngilizce: The Twelve-Factor App
12-Factor App, bulut ortamında taşınabilir SaaS ürünleri kurmak için kod, bağımlılık, yapılandırma ve süreçleri ayıran 12 ilkedir.
12-Factor App Nedir?
12-Factor App, Heroku ekibinin bulut üzerinde çalışacak servisleri tutarlı biçimde tasarlamak için derlediği on iki uygulama geliştirme ilkesidir. Amaç, kodun nerede çalıştığından bağımsız olarak aynı davranışı vermesi ve yeni ortamlara taşınırken özel sunucu ayarlarına bağımlı kalmamasıdır.
Bu yaklaşımda kod tabanı tek kaynak depoda tutulur, bağımlılıklar açıkça tanımlanır, yapılandırma ortam değişkenleriyle yönetilir ve servisler birbirine gevşek bağlanır. Uygulama süreçleri durum tutmaz; kalıcı veriler PostgreSQL, Redis veya nesne depolama gibi ayrı servislerde saklanır. Loglar dosyaya gömülmek yerine çıktı akışına yazılır, böylece platform onları merkezi izleme sistemine yönlendirebilir.
12 İlke Ne Sağlar?
- Dağıtım tekrarlanabilirliği: Geliştirme, test ve üretim ortamları aynı bağımlılık bildirimiyle ayağa kalkar.
- Konfigürasyon güvenliği: Şifreler ve API anahtarları koda gömülmez; ortam değişkeni veya secret manager üzerinden verilir.
- Yatay ölçekleme: Web, worker ve zamanlanmış görevler ayrı süreç tipleri olarak çoğaltılabilir.
- Hızlı kurtarma: Uygulama instance’ları geçici kabul edildiği için yeniden başlatma ve yer değiştirme normal operasyon olur.
İş Dünyasında Kullanımı
12-Factor ilkeleri özellikle SaaS ürünlerinde, çok müşterili panellerde ve düzenli release alan API servislerinde işe yarar. Bir ekibin staging ortamını üretime benzetmesi, müşteri bazlı konfigürasyonu ayırması ve DevOps süreçlerinde otomatik dağıtım yapması kolaylaşır.
Buna rağmen 12-Factor bir kontrol listesi gibi kör uygulanmamalıdır. Büyük dosya işleme, yerel cache veya uzun süren batch işleri olan sistemlerde bazı ilkeler ek altyapı gerektirir. Yeni bir SaaS web uygulaması tasarlanırken bu kararları en başta netleştirmek ilerideki taşıma ve ölçekleme maliyetini düşürür.