The Twelve-Factor App

IX. İmha edilebilirlik

Hızlı başlangıç ve zararsız sonlanma ile maksimum servis sağlığı

On iki faktör uygulamalarının süreçleri tek kullanımlıktır, yani anlık olarak başlatılabilir ve durdurulabilirler. Bu hızlı esnek ölçeklemeyi, kod ve yapılandırma değişikliklerinin hızlı dağıtımı ve canlı yayın dağıtımlarının sağlamlığını arttırır.

Süreçler başlangıç zamanını küçültmeye çabalamalıdır. İdeal olarak, bir sürecin başlatma komutunun çalıştırılmasından, sürecin ayağa kalkmış ve istek/işleri karşılamaya hazır hale gelmesine kadar olan süre birkaç saniyedir. Kısa başlama zamanı yayınlama süreci ve ölçeklenme için daha fazla çeviklik sağlar; ve sağlamlığına yardımcı olur, çünkü süreç yöneticisi süreçleri yeni fiziksel makinelere daha kolay taşıyabilir.

Süreçler, süreç yöneticisinden SIGTERM sinyalini aldıkları zaman, kontrollü şekilde kapanırlar. Bir web süreci için kontrollü kapama, servis portunun dinlenmesinin kesilmesi (dolayısıyla herhangi bir yeni istek reddedilir), eğer varsa o an işleniyor olan isteğin tamamlanmasına izin verilmesi ve daha sonra sürecin sonlandırılması şeklinde gerçekleşir. Bu modelin içeriğinde HTTP istekleri kısadır (birkaç 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 kontrollü kapama, güncel işin iş kuyruğuna döndürülmesiyle sonuçlanır. Örneğin RabbitMQ‘da işçi NACK sinyali gönderebilir; Beanstalkd’da herhangi bir zamanda işçi süreç bağlantıyı kopardığında iş kuyruğa otomatik olarak döndürülür. Kilit tabanlı sistemler, Delayed Job gibi, üzerinde çalışıyor oldukları işin kilitlerini kaldırdıklarından emin olmalıdır. Bu modelin içeriğinde bütün işler tekrar girişlidir, genellikle sonuçların bir transaksiyonda (İng. transaction) saklanması veya süreci eşgüçlü yapmasıyla gerçekleşir.

Süreçler, donanımsal sorun oluşması gibi durumlarda oluşacak ani sonlanmalara karşı dayanıklı olmalıdır. Bu SIGTERM ile kontrollü kapamadan daha az yaygın bir olaydır, ancak yine de gerçekleşebilir. Önerilen yaklaşım, Beanstalkd gibi sağlam arkaplan kuyruklama sistemlerinin kullanımıdır. Bu sistemler, istemciler oturumu kapattığı zaman veya süre aşımı durumlarında işi kuyruğa döndürür. Her iki durumda, on iki faktör uygulaması kontrollü olmayan sonlandırmaları idare edebilmek için tasarlanmıştır. Crash-only tasarım bu konsepti mantıksal sonucuna ulaştırır.