XII. Yönetici Süreci
Yönetici/yönetim görevlerini tek seferlik işlem olarak çalıştırma
Süreç oluşumu uygulama çalışırken uygulamanın sıradan işlerini (web isteklerini idare etmek gibi) yapmakta kullanılan süreçlerin bir dizisidir. Ayrı olarak, geliştiriciler çoğunlukla uygulamanın bir kereye mahsus yönetimsel veya bakım görevlerini yapmayı dileyecekler, şunun gibi:
- Veri tabanı göçü çalıştırmak (Django’da
manage.py migrate
, Rails’derake db:migrate
). - Konsolu (REPL kabuğu olarakta bilinir), rastgele kodu çalıştırmak veya canlı veritabanına karşılık uygulamanın modellerini denetlemek için çalıştırmak. Çoğu dil hiç bir arguman olmadan (
python
veyaperl
), yorumlayıcı veya bazı durumlarda ayrı komutlarla (Ruby içinirb
, Rails içinrails console
) çalıştırarak bir REPL sağlar. - Uygulamanın deposuna commit’lenmiş betikleri çalıştırmak (
php scripts/fix_bad_records.php
).
Bir kerelik yönetici süreçleri uygulamanın sıradan uzun çalışan süreçleri gibi aynı ortamlarda çalışmalıdır. Onlar herhangi bir sürecin çalıştığı gibi sürüme karşı aynı kod tabanı ve yapılandırmayı kullanarak çalışır. Yönetici uygulama kodunu senkronizasyon sorunundan kaçınmak için yüklemelidir.
Aynı bağımlılık yalıtımı teknikleri bütün süreç yönetiminde kullanılmalıdır. Örneğin, eğer Ruby web süreçleri bundle exec thin start
komutunu kullanıyorsa, veri tabanı göçü bundle exec rake db:migrate
komutu kullanmalıdır. Aynı durumda, Virtualenv kullanan bir Python programı, Tornado web sunucusu ve herhangi bir manage.py
yönetici süreçlerinin ikisini de çalıştırabilmek için bin/python
kullanmalıdır.
On iki faktör, REPL kabuğunu kural dışı sağlayan ve tek seferlik betikleri çalıştırmayı kolaylaştıran dilleri fazlasıyla destekler. Yerel dağıtımda, geliştiriciler uygulamanın kontrol dizinindeki açık kabuk komutuyla tek seferlik yönetici süreçlerini çalıştırır. Ürün dağıtımında, geliştiriciler bu gibi bir süreci çalıştırmak için ssh veya dağıtımın çalışma ortamı tarafından sağlanan diğer uzak komut çalıştırma mekanizmasını kullanabilir.