XII. Processos administrativos

Rode tarefas de administração/gestão em processos pontuais

A formação de processos é o conjunto de processos que são usados para fazer as negociações regulares da app como ela é executada (tais como manipulação de requisições web). Separadamente, os desenvolvedores, muitas vezes desejam fazer tarefas pontuais de administração ou manutenção para a app, tais como:

Processos administrativos pontuais devem ser executados em um ambiente idêntico, como os processos regulares de longa execução da app. Eles rodam uma versão, usando a mesma base de código e configuração como qualquer processo executado com essa versão. Códigos de administração devem ser fornecidos com o código da aplicação para evitar problemas de sincronização.

A mesma técnica de isolamento de dependência deve ser usada em todos tipos de processos. Por exemplo, se o processo web Ruby usa o comando bundle exec thin start, então uma migração de base de dados deve usar bundle exec rake db:migrate. Da mesma forma, um programa Python usando Virtualenv deve usar bin/python fornecido para executar tanto o servidor web Tornado e qualquer processo manage.py de administração.

Doze-fatores favorecem fortemente linguagens que fornecem um shell REPL embutido, e que tornam mais fácil executar scripts pontuais. Em um deploy local, desenvolvedores invocam processos administrativos pontuais por um comando shell direto no diretório de checkout da app. Em um deploy de produção, desenvolvedores podem usar ssh ou outro mecanismo de execução de comandos remoto fornecido por aquele ambiente de execução do deploy para executar tal processo.