13. XII. Administración de procesos

Por: Artiko
12factoradministracionmigracionesrepl

13. XII. Administración de procesos

Ejecuta las tareas de administración/gestión como procesos puntuales.

Tipos de tareas administrativas

Toda aplicación real necesita, además de sus procesos permanentes (web, worker), tareas puntuales ejecutadas de forma ad-hoc:

  1. Migraciones de base de datos: manage.py migrate (Django), rake db:migrate (Rails).
  2. Consolas REPL: intérpretes interactivos para inspeccionar modelos y ejecutar código arbitrario en el contexto real de la app.
  3. Scripts puntuales: incluidos en el propio repositorio, para tareas específicas y repetibles.

El mismo entorno, siempre

El principio central: estos procesos administrativos deben correr con exactamente el mismo código base, la misma distribución (release) y la misma configuración que los procesos normales de la aplicación.

flowchart TD
    Release["Release actual<br/>(build + config)"]
    Release --> Web["Proceso web"]
    Release --> Worker["Proceso worker"]
    Release --> Admin["Proceso administrativo<br/>(migración, REPL, script)"]

Si el código administrativo viviera separado del código de aplicación, quedaría expuesto a desincronizarse: por ejemplo, un script de migración que asume un esquema viejo porque nadie lo actualizó junto con el modelo de datos.

Mismo aislamiento de dependencias

Las herramientas de aislamiento (Factor II) también aplican aquí. Si el proceso web se lanza con bundle exec thin start, la migración debe ejecutarse con bundle exec rake db:migrate — el mismo prefijo de aislamiento, no un atajo que se salte el entorno controlado. Una app en Python con Virtualenv usaría el mismo bin/python para ambos casos.

Dónde se ejecutan

Checklist del factor XII

Con los 12 factores cubiertos uno por uno, el capítulo final consolida todo en un checklist único y evalúa su vigencia en el ecosistema cloud-native actual.