EMZETT.
Giriş yap

Twelve-factor app: bulut uygulamaları için on iki kural

Kısaca: Uygulamaların bulutta kolayca işletilmesini, ölçeklenmesini ve teslim edilmesini sağlayan on iki ilkeden oluşan bir küme.

Biraz daha ayrıntılı: “Twelve-factor app”, 2011 civarında Heroku platformunun geliştiricileri tarafından formüle edildi. Yazılımın, elle iş gerektirmeden yeni sunucularda başlatılabilen, paralel birkaç kez çalışabilen ve sık güncellenen bir hizmet olarak nasıl inşa edileceğini tarif eder. Kuralların çoğu bugün konteynerler ve Kubernetes için hâlâ değişmeden geçerlidir.

Ayrıntılı

On iki faktör kısaca

  1. Kod tabanı (Codebase): sürüm denetiminde bir kod tabanı, birçok dağıtım.
  2. Bağımlılıklar (Dependencies): açıkça bildirin ve yalıtın (örn. package.json).
  3. Yapılandırma (Config): ortam değişkenlerinde, kodda değil.
  4. Destek hizmetleri (Backing services): veritabanını, postayı vb. değiştirilebilir bağlı kaynaklar olarak ele alın.
  5. Derle, yayımla, çalıştır (Build, release, run): sıkı biçimde ayırın.
  6. Süreçler (Processes): durumsuz, verileri bir hizmette saklayın.
  7. Port bağlama (Port binding): hizmet kendini bir port üzerinden sunar.
  8. Eşzamanlılık (Concurrency): daha fazla süreçle dışa doğru ölçekleyin.
  9. Tek kullanımlıklık (Disposability): hızlı başlat, temiz kapat.
  10. Geliştirme/üretim eşitliği (Dev/prod parity): ortamları mümkün olduğunca benzer tutun.
  11. Günlükler (Logs): olay akışı olarak stdout’a yazın.
  12. Yönetim süreçleri (Admin processes): tek seferlik görevler (geçişler/migrations) ayrı süreçler olarak.

Örnek: yapılandırma

Veritabanı adresini koda yazmak yerine:

const db = connect(process.env.DATABASE_URL);

Aynı kod o zaman yerelde, testte ve üretimde çalışır; yalnızca ortam değişkeni farklıdır. Sırlar depoya ait değildir.

Durumsuzluk neden önemli

Bir süreç oturumları kendi belleğinde saklarsa yeniden başlatmada bir şey kaybolur ve bir yük dengeleyici istekleri serbestçe dağıtamaz. Durum bir veritabanında veya Redis’te ise süreçler istenildiği gibi başlatılıp durdurulabilir.

Sınıflandırma

Kurallar yasa değil, yönergelerdir. Özellikle 11. faktör (günlükler) ve 3. faktör (ortam değişkenleri) için gelişmeler oldu; örneğin yapılandırılmış günlükler ve çok sayıda ortam değişkeni yerine sır yönetimi.

Ayrıca bak: Ortam değişkenleri, Docker, CI/CD ardışık düzeni, Sağlık denetimleri ve düzgün kapatma