jueves, enero 08, 2015

DevOps: 8 prácticas clave para entregar software rápido y con calidad (según Forrester)



La sabiduría popular y la intuición dice que liberar versiones de software más rápido es a expensas de la calidad y control. Este informe de Forrester Consulting de octubre de 2014 encargado por IBM y basado en una encuesta a 600 profesionales de TI con responsabilidades en desarrollo de aplicaciones, revela cómo las empresas que "entregan rápido" utilizan DevOps para desplegar software con una fercuencia de entre una y tres semanas, mientras que mantienen altos niveles de calidad y consiguen sus objetivos de negocio: adjunto un extracto, pero te lo puedes bajar de aqui

8 prácticas clave para entregar software rápido y con calidad (según Forrester)

1. Poner en producción pequeños incrementos de funcionalidad
. Un despliegue rápido significa construir sobre el mínimo producto que sea viable. Las releases pequeñas son la forma más rápida de dar valor del cliente. Además feedback rápido permite centrarse en hacer las cosas bien al tiempo que se minimiza el riesgo al reducir las dependencias de releases más complejas.

2. Formar equipos 
dedicados multifuncionales. Compartir recursos entre equipos es una pérdida de tiempo, complica la programación, debilita la colaboración, reduce el rendimiento y diluye la experiencia de negocio. La superespecialización y los silos por rol matan la productividad y reducen la eficacia en la puesta en producción.

3. Utilizar arquitectura de acoplamiento débil (loose coupling) dentro y entre aplicaciones. El acoplamiento débil permite el cambio directo de aplicaciones enteras o de sus componentes. Reduce en gran medida la complejidad y es una de las herramientas clave en poner en producción incrementos 
pequeños.

4. Automatizar el 
aprovisionamiento de entornos. La falta de entornos consistentes ocasiona paradas del sistema difíciles de diagnosticar como resultado del síndrome "en mi máquina funciona bien". Los retrasos en tenerlos bien configurados provoca a su vez retrasos y aumento de costes. La automatización reduce los costes, mejora la eficacia de desarrollo y pruebas y reduce el número y gravedad de los incidentes en producción.

5. Código continuamente integrado. la integración continua (CI) - construcción y prueba del código cada vez que se hace un cambio - promueve el 
feedback rápido de los usuarios. La construcción y prueba juntos expone los problemas y permite feedback temprano sobre los mejores modelos de uso.

6. Pruebas continuas extendiendo CI con la automatización de test basados en API's (API driven test) que se ejecutan cada vez que hay un cambio. En arquitecturas de acoplamiento débil (loose coupling) esto permite automatizar las pruebas funcionales y no funcionales, quedando las manuales sólo para el UAT (aceptación por el usuario) y pruebas exploratorias. Se mejora la velocidad de entrega, calidad y precisión de pruebas y se reducen los costes.
7. Financiación continua. Las organizaciones con ciclos rápidos de liberación de versiones suelen crear una base estable para la financiación de esta corriente de innovación continua. Utilizan los comentarios de los usuario y las necesidades de negocio para priorizar continuamente las funcionalidades que den el mayor valor para el negocio.

8. Transparencia en tiempo real. La sobrecarga de informes 
de situación periódicos y manuales y las reuniones de situación, absorben un tiempo valioso y distraen del foco de dar valor. Aumentar la transparencia a través de la instrumentación del código evolutivo y de las pruebas mejora la visibilidad sobre el progreso y el riesgo sin disminuir la productividad.