11. X. Paridad entre desarrollo y producción
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:
- Tiempo: acortar el ciclo de días/semanas a horas o minutos, con despliegue continuo.
- Personal: los mismos desarrolladores que escriben el código participan del despliegue y del monitoreo en producción.
- Herramientas: homogeneizar la pila tecnológica entre todos los entornos.
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
- El tiempo entre un commit y su llegada a producción se mide en horas/minutos, no en días/semanas.
- Las mismas personas que escriben código participan del despliegue y el monitoreo.
- Desarrollo usa el mismo tipo y versión de cada backing service (DB, cola, caché) que producción — no un sustituto “más simple”.
- Levantar un entorno local con paridad completa toma un comando, no un manual de instalación.
Con entornos consistentes, el siguiente factor cubre cómo observar qué está pasando dentro de la aplicación en cualquiera de ellos: los logs.