# Twelve-Factor App (On İki Faktörlü Uygulama)

Adres: https://softwaredictionary.org/tr/terimler/twelve-factor-app
Kategori: Yazılım Mimarisi
Son güncelleme: 2026-09-30
Okunuşu: tvelv fektır ep

Kısaca: Twelve-factor app, bulutta taşınabilir, dağıtımı kolay ve ölçeklenmesi basit olması için on iki pratiğe göre geliştirilmiş bir web uygulamasıdır.

## Twelve-factor app nedir?

Twelve-factor app, ilk kez 2011'de yayımlanan ve bulut platformlarında iyi çalışan hizmet olarak yazılım (SaaS) uygulamalarının nasıl geliştirileceğini anlatan bir metodolojidir. Bir uygulamayı ortamlar arasında taşınabilir, sürekli dağıtıma elverişli ve daha fazla kopya çalıştırarak ölçeklenebilir kılan on iki faktörü, yani pratiği sıralar. Çoğu container aracından önce ortaya çıkmış olsa da fikirleri modern platformların uygulamalardan beklediği davranışla örtüşür.

On iki faktör şunlardır: sürüm kontrolünde izlenen ve çok sayıda dağıtımı olan tek bir kod tabanı; açıkça bildirilmiş bağımlılıklar; ortamda saklanan yapılandırma; eklenmiş kaynaklar olarak ele alınan veritabanı gibi backing service'ler; kesin biçimde ayrılmış derleme, sürüm ve çalıştırma aşamaları; durumsuz süreçler; port bağlama yoluyla sunulan servisler; süreç modeli aracılığıyla yatay ölçekleme; hızlı başlatma ve düzgün kapatma anlamına gelen tek kullanımlık olma (disposability); geliştirme ve üretimi birbirine benzer tutan dev/prod eşitliği; olay akışları olarak ele alınan günlükler; ve tek seferlik süreçler olarak çalıştırılan yönetim görevleri. Bunlar birlikte durumu, yapılandırmayı ve ortama özgü ayrıntıları koddan dışarı iter.

Bir nakliye konteyneri düşünün: şekli ve bağlantı parçaları standart olduğu için hangi gemi, tren ya da kamyon içinde ne olduğunu bilmeden taşıyabilir. Twelve-factor app de benzerdir; aynı derleme dizüstü bilgisayarda, bir CI sunucusunda, staging'de ya da üretimde yalnızca ortam değişkenleri değişerek çalışabilir. Faktörlerin, container'lı uygulamalar, serverless fonksiyonlar ve platform hizmeti (PaaS) dağıtımları için yaygın bir kontrol listesi olmasının nedeni budur.

Metodoloji sıklıkla mikroservislerle karıştırılır, oysa monolit de olsa çok sayıda servisten biri de olsa herhangi bir tek uygulamanın nasıl geliştirilip çalıştırılacağıyla ilgilidir. Bazı öneriler evrilmiştir: gizli bilgiler (secrets) artık çoğunlukla düz ortam değişkenleri yerine özel bir gizli bilgi yöneticisinden sağlanır ve günlükler genellikle bir gözlemlenebilirlik hattına akar. Faktörleri katı kurallar olarak değil, güçlü varsayılanlar olarak ele alın.

## Önemli noktalar

- Twelve-factor, taşınabilir ve buluta hazır web uygulamaları geliştirmek için bir metodolojidir.
- Yapılandırma kodda değil, ortamda bulunur.
- Süreçler durumsuzdur; kalıcı veri veritabanı gibi backing service'lerde yaşar.
- Aynı derleme çıktısı, staging'den üretime değiştirilmeden terfi ettirilir.
- Günlükler, platformun toplaması için olay akışları olarak standart çıktıya gider.

## Örnek: Bir Node.js sunucusunda birkaç faktör

```javascript
// Factor III (config): settings come from the environment, not the code
const port = Number(process.env.PORT ?? 3000);
const databaseUrl = process.env.DATABASE_URL; // factor IV: an attached backing service

// Factor VII (port binding): the app serves HTTP itself on the given port
const server = app.listen(port, () => {
  console.log(`listening on ${port}`); // factor XI: logs go to stdout
});

// Factor IX (disposability): shut down gracefully when the platform stops the process
process.on("SIGTERM", () => server.close(() => process.exit(0)));
```

## Sık sorulan sorular

**12 faktör nelerdir?**

Kod tabanı, bağımlılıklar, yapılandırma, backing service'ler, derle-sürümle-çalıştır, süreçler, port bağlama, eşzamanlılık, tek kullanımlık olma, dev/prod eşitliği, günlükler ve yönetim süreçleridir. Her biri, bir uygulamayı bulutta taşınabilir ve işletmesi kolay tutan bir pratiği tanımlar.

**Twelve-factor metodolojisi hâlâ geçerli mi?**

Evet. Container platformları, serverless hizmetler ve CI/CD hatları, ortam değişkenlerindeki yapılandırma, durumsuz süreçler ve standart çıktıdaki günlükler gibi uygulamalarının çoğunu varsayar. Gizli bilgilerin yönetimi gibi bazı ayrıntılar evrilmiştir ama temel fikirler yaygın olarak kullanılmaya devam eder.

**Twelve-factor app'in mikroservis olması gerekir mi?**

Hayır. Faktörler bir monolit dahil her web uygulaması ya da servisi için geçerlidir. Bir sistemin servislere nasıl bölündüğünü değil, bir uygulamanın nasıl yapılandırıldığını, dağıtıldığını ve çalıştırıldığını tanımlar.

---

Software Dictionary: https://softwaredictionary.org/tr · https://softwaredictionary.org/tr/llms.txt
