III. Simetría entre ambientes de desarrollo y producción
Mantener los ambientes de desarrollo, pruebas y producción tan similares como sea posible.
Editar en GitHubHistoricamente, ha habido brechas sustanciales entre el ambiente de desarrollo (donde un desarrollador hace modificaciones en tiempo real a la aplicación en su máquina local) y producción (donde los usuarios finales pueden acceder a la aplicación ya desplegada en el App Store). Estas brechas se manifiestan de 3 maneras:
- La brecha temporal: Un desarrollador podría trabajar en código que puede tomar días, semanas o incluso meses para salir a producción.
- La brecha de personal: Todos los desarrolladores iOS escriben código, más sólo una persona sabe cómo desplegar la aplicación.
- La brecha en herramientas: Los desarrolladores podrían estar usando un servidor de staging que corre una versión diferente a la existente en el servidor productivo. También podrían usar versiones diferentes de Xcode a la usada para programar.
Una aplicación factor-iOS está diseñada para el despliegue continuo al mantener la brecha entre el ambiente de desarrollo y el productivo lo más pequeña posible. Observando los 3 puntos mencionados anteriormente se debe considerar:
- Acortar la brecha temporal: un desarrollador podría escribir código y desplegarlo tan solo unos pocos días después.
- Reducir la brecha de personal: los desarrolladores que escriben código deben estar involucrados de cerca en su despliegue y posterior comportamiento en producción. Ésto se hace posible en mayor medida al automatizar completamente el proceso de publicación de la aplicación iOS y plasmar el conocimiento fundamental (know-how) de la automatización en declaraciones de código en vez de documentación.
- Reducir la brecha en herramientas: mantener los ambientes de desarrollo y producción tan similares como sea posible. Seguir los principios de el factor de Dependencias haciendo uso de un archivo
.xcode-version
y definiendo el resto de dependencias de manera explícita.
Resumiendo lo anterior en una tabla:
Aplicaciones iOS tradicionales | Aplicación factor-iOS | |
---|---|---|
Tiempo entre despliegues | Meses | Días |
Autor del código vs publicadores del código | Sólo una persona sabe como desplegar | El despliegue está automatizado, idealmente en un servidor |
Ambientes de desarrollo vs producción | Divergentes | Tan similares como sea posible |