The Twelve-Factor App: los 12 factores explicados
Montas una aplicación y en tu ordenador funciona. Luego llega el servidor de pruebas, después producción, luego hay que escalar a varias máquinas… y cada paso trae sorpresas.
El manifiesto Twelve-Factor es como la normativa de un edificio de pisos: si cada vivienda tiene su propio contador, sus tuberías por el mismo sitio y una salida de emergencia, puedes levantar al lado más bloques iguales sin rehacer los que ya hay. Doce reglas sencillas para que tu aplicación se pueda mover, copiar y escalar sin sustos.
Qué es y quién lo hizo
Lo firma Adam Wiggins y nació en Heroku, una plataforma para desplegar aplicaciones en la nube, en 2011. Sus autores explican que resume lo que vieron en «cientos de miles de aplicaciones» desplegadas en esa plataforma. Según la propia web, está pensado para cualquier desarrollador que construya aplicaciones que se ejecutan como un servicio y para quien las despliega y las mantiene en marcha.
- Formato: una web con una página por factor, también descargable en ePub.
- Idioma: inglés original y traducción oficial al español, entre otros idiomas.
- Precio: gratis.
Los 12 factores
Con los nombres de la traducción oficial al español:
| Factor | Qué pide, en una frase |
|---|---|
| I. Código base | Un solo repositorio por aplicación, con muchos despliegues desde él |
| II. Dependencias | Declara y aísla todas las dependencias (por ejemplo, en package.json o Gemfile) |
| III. Configuraciones | Guarda la configuración en variables de entorno, no en el código |
| IV. Backing services | Trata la base de datos, la caché o las colas como recursos que se conectan y se cambian por configuración |
| V. Construir, desplegar, ejecutar | Separa del todo la fase de construcción de la de ejecución |
| VI. Procesos | Ejecuta la aplicación como procesos sin estado; lo que deba persistir va a un servicio externo |
| VII. Asignación de puertos | La aplicación publica su servicio escuchando en un puerto |
| VIII. Concurrencia | Escala lanzando más procesos |
| IX. Desechabilidad | Arranques rápidos y paradas limpias |
| X. Paridad en desarrollo y producción | Desarrollo, preproducción y producción, lo más parecidos posible |
| XI. Historiales | Trata los logs como un flujo de eventos que la aplicación escribe en la salida estándar |
| XII. Administración de procesos | Las tareas de administración (migraciones, scripts) se ejecutan como procesos puntuales |
Un ejemplo: la configuración en el entorno (factor III)
La misma aplicación debe poder ir a cualquier entorno sin tocar el código. Lo que cambia entre entornos (puerto, base de datos, claves) se lee de variables de entorno:
// config.mjs: la configuración llega del entorno, no del código
const port = Number(process.env.PORT ?? 3000);
const databaseUrl = process.env.DATABASE_URL;
if (!databaseUrl) {
throw new Error("Falta la variable de entorno DATABASE_URL");
}
console.log(`Escuchando en el puerto ${port}`);
PORT=8080 DATABASE_URL=postgres://localhost/app node config.mjs
# Escuchando en el puerto 8080
Si falta la base de datos, la aplicación falla al arrancar con un mensaje claro, en vez de fallar más tarde de forma misteriosa.
El mismo código en todos los entornos; lo que cambia, en la configuración.
Cómo sacarle partido
- Lee la introducción y la tabla de 12factor.net/es. Cada factor ocupa una página corta.
- Haz un repaso de tu proyecto, factor por factor. Marca los que ya cumples y los que no. Suele haber sorpresas en el III (claves en el código) y en el X (desarrollo muy distinto de producción).
- Empieza por un solo factor. El III es el más rentable: sacar la configuración del código evita secretos en el repositorio y despliegues distintos por entorno.
- Vuelve al manifiesto cuando montes un despliegue nuevo, como lista de comprobación.
Para quién es y lo que conviene saber
Encaja si desarrollas aplicaciones web o APIs que se despliegan en la nube, o si empiezas con contenedores y quieres entender por qué se hacen las cosas así. Para una aplicación de escritorio, un script suelto o una app móvil, muchos factores no aplican.
- Algunas partes son de su época. Se escribió cuando el despliegue con contenedores apenas empezaba, y los ejemplos nombran herramientas de entonces. Las ideas siguen en pie; los detalles son lo que la revisión quiere actualizar.
- Está en revisión. En noviembre de 2024 se publicó como código abierto en el repositorio twelve-factor/twelve-factor, con licencia CC BY 4.0. Allí la comunidad trabaja en una versión revisada que acabará sustituyendo a la de 12factor.net. A noviembre de 2026, esa versión aún no se ha publicado.
Alternativas y lecturas complementarias
- El manifiesto The Twelve-Factor App, en Adictos al Trabajo (2016): explicación en español de los doce factores, la que citaba el artículo original.
- Beyond the Twelve-Factor App, de Kevin Hoffman (O’Reilly, 2016): amplía el manifiesto con factores nuevos. El propio repositorio de la revisión lo cita como antecedente.
Estas prácticas encajan con el desarrollo continuo de software: cuanto más fácil es desplegar, más a menudo se puede hacer. Y una aplicación que no las sigue acumula deuda técnica en cada entorno nuevo.
Fuentes
Comprobado el 7 de noviembre de 2026:
- 12factor.net/es: introducción, autor (Adam Wiggins), destinatarios, nombres de los factores en la traducción oficial y descarga en ePub. El pie de página indica «Last updated 2017».
- Blog oficial («Twelve-Factor App Methodology is now Open Source», 12 de noviembre de 2024): apertura del proyecto y origen en Heroku en 2011.
- Repositorio de la actualización: licencia, objetivo de sustituir el texto actual y antecedentes citados (entre ellos, Beyond the Twelve-Factor App).
- Ejemplo de configuración ejecutado con Node 24.21.0, con y sin
DATABASE_URL.