Nivel inicial6 min de lectura · Publicado el

The Twelve-Factor App: los 12 factores explicados

Twelve-Factor App como la normativa de un edificio: cada vivienda con su contador (III) y un bloque igual al lado para escalar en horizontal (VIII). 12-Factor: crece a lo anchorubentejera.com +1 bloque igualIIIconfig en el entornoVIIImás procesos iguales
Cada vivienda tiene su contador, como cada despliegue lee su configuración del entorno (III). Para crecer no se añaden plantas: se levanta otro bloque igual al lado, más procesos (VIII).

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

  1. Lee la introducción y la tabla de 12factor.net/es. Cada factor ocupa una página corta.
  2. 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).
  3. 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.
  4. 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.