XII. Задачі адміністрування
Виконуйте задачі адміністрування/керування за допомогою разових процесів¶
Формація процесів є певним набором процесів, які необхідні для виконання регулярних задач застосунку (наприклад, обробка вебзапитів). Разом з тим, розробникам часто необхідно виконувати разові адміністративні задачі для обслуговування застосунку, такі як:
- Запуск міграції бази даних (наприклад,
manage.py migrateв Django,rake db:migrateв Rails). - Запуск консолі (REPL) для виконання довільного коду або перевірки моделі застосунку на діючій базі даних. Більшість мов надають REPL шляхом запуску інтерпретатора без будь-яких аргументів (наприклад,
pythonабоperl) або в деяких випадках мають окрему команду (наприклад,irbдля Ruby,rails consoleдля Rails). - Запуск разових скриптів, збережених в репозиторії застосунку (наприклад,
php scripts/fix_bad_records.php).
Разові процеси адміністрування слід запускати в такому ж середовищі, в якому запущені регулярні тривалі процеси застосунку. Вони запускаються на базі релізу, використовуючи ту ж кодову базу і конфігурацію, як і будь-який інший процес на базі цього релізу. Для уникнення проблем з синхронізацією код адміністрування має поставлятися з кодом застосунку.
Для всіх типів процесів мають використовуватися однакові методи ізоляції залежностей. Наприклад, якщо вебпроцес Ruby використовує команду bundle exec thin start, то для міграції бази даних слід використовувати bundle exec rake db:migrate. Аналогічно, для програми на Python з Virtualenv слід використовувати bin/python як для запуску вебсервера Tornado, так і для запуску будь-яких manage.py процесів адміністрування.
Методологія дванадцяти факторів надає перевагу мовам, які мають REPL "з коробки", і які дозволяють легко запускати разові скрипти. У локальному development середовищі розробник може запустити процес адміністрування за допомогою консольної команди всередині директорії застосунку. У production середовищі для запуску такого процесу розробники можуть використовувати ssh або інший механізм віддаленого виконання команд, що надається середовищем виконання.