The Twelve-Factor App

XII. Задачі адміністрування

Виконуйте задачі адміністрування/керування за допомогою разових процесів

Формація процесів є певним набором процесів, які необхідні для виконання регулярних задач застосунку (наприклад, обробка веб-запитів). Разом з тим, розробникам часто необхідно виконувати разові адміністративні задачі для обслуговування застосунку, такі як:

Разові процеси адміністрування слід запускати в такому ж середовищі, в якому запущені регулярні тривалі процеси застосунку. Вони запускаються на базі релізу, використовуючи ту ж кодову базу і конфігурацію, як і будь-який інший процес на базі цього релізу. Для уникнення проблем з синхронізацією код адміністрування має поставлятися з кодом застосунку.

Для всіх типів процесів мають використовуватися однакові методи ізоляції залежностей. Наприклад, якщо веб-процес Ruby використовує команду bundle exec thin start, то для міграції бази даних слід використовувати bundle exec rake db:migrate. Аналогічно, для програми на Python з Virtualenv слід використовувати bin/python як для запуску веб-сервера Tornado, так і для запуску будь-яких manage.py процесів адміністрування.

Методологія дванадцяти факторів надає перевагу мовам, які мають REPL “з коробки”, і які дозволяють легко запускати разові скрипти. У локальному development середовищі розробник може запустити процес адміністрування за допомогою консольної команди всередині директорії застосунку. У production середовищі для запуску такого процесу розробники можуть використовувати ssh або інший механізм віддаленого виконання команд, що надається середовищем виконання.