11. X. Paridad entre desarrollo y producción

Por: Artiko
12factorparidaddev-proddespliegue-continuo

11. X. Paridad entre desarrollo y producción

Mantén desarrollo, staging y producción tan similares como sea posible.

Las tres brechas históricas

Tradicionalmente, dev y producción divergen en tres dimensiones:

Brecha temporal: el código pasa días, semanas o meses en desarrollo antes de llegar a producción.

Brecha de personal: quienes escriben el código (developers) no son quienes lo despliegan (ops), fragmentando la responsabilidad y el contexto.

Brecha de herramientas: la pila local difiere de la de producción — por ejemplo, Nginx + SQLite + macOS en el laptop del developer, frente a Apache + MySQL + Linux en el servidor.

flowchart LR
    Dev["Desarrollo<br/>SQLite, macOS"] -.->|brecha temporal<br/>brecha de personal<br/>brecha de herramientas| Prod["Producción<br/>MySQL, Linux"]

La solución: despliegue continuo

Una aplicación twelve-factor reduce estas brechas activamente:

Backing services: donde la paridad importa más

El manifiesto pone especial énfasis en los backing services (Factor IV). Es habitual usar SQLite en desarrollo local y PostgreSQL/MySQL en producción, o memoria local en vez de Memcached/Redis “para no complicarse”. Esto es contraproducente: pequeñas incompatibilidades entre motores emergen silenciosamente y sólo se detectan cuando ya rompieron algo en producción, minando la confianza en el despliegue continuo.

Costo bajo, beneficio alto

Herramientas como Docker, Vagrant, Homebrew y sistemas de gestión de configuración (Chef, Puppet) hacen que correr el mismo tipo y versión de cada backing service en desarrollo sea prácticamente gratis. El costo de instalación puntual es insignificante frente al beneficio de eliminar una clase entera de bugs “que sólo pasan en producción”.

Checklist del factor X

Con entornos consistentes, el siguiente factor cubre cómo observar qué está pasando dentro de la aplicación en cualquiera de ellos: los logs.