13. XII. Administración de procesos
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:
- Migraciones de base de datos:
manage.py migrate(Django),rake db:migrate(Rails). - Consolas REPL: intérpretes interactivos para inspeccionar modelos y ejecutar código arbitrario en el contexto real de la app.
- 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
- Desarrollo local: se invocan directamente desde la terminal del developer, en su entorno local (que ya tiene paridad con producción, Factor X).
- Producción: se ejecutan mediante SSH u otro mecanismo remoto que ofrezca la plataforma de despliegue, siempre dentro del mismo entorno de ejecución que los procesos normales — no desde una máquina aparte con su propia copia del código.
Checklist del factor XII
- Las migraciones, scripts y consolas REPL usan el mismo código base y la misma release que los procesos
web/worker. - Se invocan con el mismo mecanismo de aislamiento de dependencias que el resto de la app (mismo
bundle exec, mismo virtualenv, etc.). - En producción, se ejecutan dentro del entorno de despliegue real, no desde una máquina separada con una copia manual del código.
- Los scripts administrativos puntuales están versionados junto al repositorio de la aplicación, no en un lugar aparte.
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.