The Twelve-Factor App

IX. Kullanıma Hazır Olma Durumu

Hızlı başlangıç ve otomatik zararsız kapama ile sağlamlığı üst düzeye çıkarma

On iki faktör uygulamalarını süreçleri tek kullanımlıktır, anlamı anlık uyarıda başlatılabilirler veya durdurulabilirler. Bu hızlı esnek ölçeklemeyi, kod ve yapılandırma değişikliğinin hızlı dağıtımı ve üretim dağıtımının sağlamlığı kolaylaştırır.

Süreçler başlangıç zamanını küçültmeye* çabalamalıdır. İdeal olarak, bir süreç başlatma komutunun çalıştırılıp, sürecin ayağa kalkmış ve istek veya işleri almaya hazır olana kadar olan süre bir kaç saniye alır. Kısa başlama zamanı sürüm süreci ve arttırım için daha fazla çabukluk sağlar; ve sağlamlığına yardımcı olur, çünkü süreç yöneticisi izin verildiğinde süreçleri yeni fiziksel makinelere daha kolay taşıyabilir.

Süreçler, süreç yöneticisinden SIGTERM sinyalini aldıkları zaman, incelikli kapanır. Web süreci için incelikli kapama, servis portunun dinlenmesinin kesilmesi (dolayısıyla herhangi bir yeni istek reddedilir), herhangi bir o anki isteklerin bitmesine izin verilmesi ve daha sonra çıkılmasıyla sonuçlanır. Bu modelin içeriğinde HTTP istekleri kısadır (bir kaç saniyeden fazla değildir) veya uzun sorgulama durumlarında, istemci bağlantıyı kaybettiği zaman sorunsuzca tekrar bağlanmayı denemelidir.

Bir işçi süreç için incelikli kapama şu anki işi iş kuyruğuna döndürülmesiyle sonuçlanır. Örneğin RabbitMQ‘da işçi NACK gönderebilir; Beanstalkd’da herhangi bir zamanda çalışan oturumu kapattığında iş kuyruğa otomatik olarak döndürülür. Kilit tabanlı sistemler, Delayed Job gibi, iş kayıdındaki kilitlerini yayınlamak için emin olmalıdır. Bu modelin içeriğinde bütün işler [tekrar girişlidir][reentrant](http://en.wikipedia.org/wiki/Reentrant_%28subroutine%29), genellikle sonuçların işlemde saklanması veya işlemi eşgüçlü yapmasıyla gerçekleşir.

Süreçler esas donanımdaki hata durumlarında ani kapanmaya karşı dayanıklı olmalıdır. Bu SIGTERM ile incelikli kapamadan daha az yaygın bir olay olduğu için hala olabilir. Önerilen yaklaşım sağlam arkaplan kuyruklama kullanımıdır, Beanstalkd gibi, istemciler oturumu kapattığı zaman veya süre dolduğu zaman işi kuyruğa döndürür. Her iki durumda, on iki faktör uygulaması incelikli olmayan sonlandırmaları idare edebilmek için tasarlanmıştır. Crash-only dezaynı bu konsepti mantıksal sonucunu alır.