La comunicación, la colaboración y la integración son los tres principios fundamentales del enfoque moderno y en constante evolución para la entrega de software conocido como «DevOps». Este término relacionado con el entorno TI es muy utilizado y adoptado por grandes empresas para mejorar su productividad. El término también implica cambios culturales, basados en la generación de confianza y cohesión entre desarrolladores y administradores de sistemas y la alineación de los proyectos tecnológicos con los requisitos comerciales. DevOps se identifica como una filosofía y un marco en evolución que fomenta el desarrollo de aplicaciones de una manera más óptima y rápida y revisada. La práctica de DevOps fomenta una comunicación, colaboración, integración, visibilidad y transparencia más fluidas y continuas entre los equipos de desarrollo de aplicaciones (Dev) y sus homólogos del equipo de operaciones de TI (Ops).
Qué es DevOps
El término DevOps (acrónimo de «desarrollo» y «operaciones») es una extensión de los entornos de desarrollo ágiles que tiene como objetivo mejorar el proceso de entrega de software en su conjunto. Consiste en la combinación de prácticas y herramientas diseñadas para aumentar la capacidad de una organización para entregar aplicaciones de software y servicios de manera más rápida, eliminando las barreras entre los equipos, el desarrollo y las operaciones tradicionalmente aisladas. Los equipos de desarrollo y operaciones trabajan juntos a lo largo de todo el ciclo de vida de la aplicación de software, desde el desarrollo y la prueba hasta la implementación y las operaciones. Permite mejorar y competir de manera más efectiva en el mercado y ofrecer un mejor servicio a sus clientes.Origen de DevOps
En la conferencia Agile 2008 Toronto, Patrick Debois introduce el término en su charla sobre «Infraestructura Ágil» con el objetivo de ampliar el alcance de las metodologías ágiles también al ámbito de la infraestructura y la administración de sistemas. Posteriormente, y a partir de 2009, el término DevOps se ha difundido e incorporado a un uso más general a través de una serie de jornadas «devopsdays», que comenzaron en Bélgica y ahora también se han extendido a otros países.¿Cómo funciona DevOps?
DevOps es un enfoque destinado a mejorar el trabajo a lo largo del ciclo de vida del desarrollo de software. El proceso de DevOps se representa como un bucle infinito, que comprende las etapas de planificación, codificación, compilación, prueba, lanzamiento, implementación, operación, monitoreo y, a través de la retroalimentación, planificación, que restablece el bucle. DevOps influye en el ciclo de vida de la aplicación a lo largo de sus fases de planificación , desarrollo, entrega y operación. Cada fase depende de las demás y las fases no son específicas de un rol. En una verdadera cultura DevOps, cada rol está involucrado en cada fase hasta cierto punto.¿Por qué usar DevOps?
Antes de la adopción de DevOps, los equipos de desarrollo y operaciones trabajaban de manera aislada. Las pruebas y la implementación eran actividades aisladas que se realizaban después del diseño y la construcción. Debido a ello, los tiempos de cada ciclo se extendían en el tiempo. Asimismo, los miembros del equipo dedicaban una gran cantidad de su tiempo a probar, implementar y diseñar en lugar de construir el proyecto. La implementación manual de código conducía a errores humanos en la producción y los equipos de codificación y operación tenían sus líneas de tiempo separadas sin estar sincronizados, lo que provocaba más retrasos.Beneficios de DevOps
Los equipos que adoptan un enfoque de DevOps tienden a terminar sus proyectos más rápido. De esta manera se evitan errores de comunicación y facilita que se realicen rápidamente las mejoras y otros cambios que sean necesarios. El enfoque DevOps fomenta una mayor colaboración entre los equipos de operaciones y desarrollo, y donde los objetivos de todos ellos estén más alineados. Como decíamos anteriormente, al no utilizar un enfoque de DevOps, los equipos pueden encontrar que los proyectos terminan tarde con mayor frecuencia y, en general, no son tan eficientes. Resumimos algunos de los beneficios:- Mejora de la comunicación
- Trabajo en equipo y cohesión
- Colaboración mejorada
- Entrega de productos de manera más rápida y de calidad
- Reducción de la complejidad y resolución de problemas con rapidez
- Mayor escalabilidad y flexibilidad para añadir nuevo código
- Entornos operativos más estables
- Mayor automatización
- Reducción de los costes y utilización de recursos
- Seguridad a través de herramientas integradas y automatizadas