Si te preguntas en qué consiste DevOps y para qué sirve, lo primero que debes saber es que es una mezcla de prácticas, técnicas y acciones que engloban tanto el desarrollo de software como las operaciones del departamento informático. Y que conocerlas supone un plus en el currículum de todo programador. ¿Seguimos?
Hablar de DevOps es hablar de una cultura. De una que se basa en el tándem perfecto entre Desarrollo y Operaciones (development y operations, de ahí su nombre), el dream team inspirado en las metodologías ágiles que tiene como objetivo automatizar toda una infraestructura. ¿Te suena a chino? No te preocupes: a falta de una definición canónica, te aclararemos todo lo que es (y lo que no es) DevOps.
¿Qué es DevOps?
DevOps es una metodología de colaboración entre los departamentos de Desarrollo y Operaciones para gestionar el desarrollo de software. Entre ambos cubren el ciclo completo del producto, garantizando procesos más rápidos y seguros, así como entregas continuas y mejor calidad.
Hablar de DevOps no es hablar de una herramienta concreta, tampoco de un lenguaje ni de una tecnología específicas, sino de una colaboración entre Dev (referido a desarrollo) y Ops (referido a operaciones) basada en la metodología ágil. Porque tampoco hay un marco ‘estándar de prácticas’ que defina DevOps, sino que cada organización usa diferentes herramientas para automatizar sus tareas y agilizar los procesos con base en su estructura y condicionantes.
Por lo que ¿podemos considerar DevOps como una metodología ágil? No exactamente, pero sí podemos considerarla como una aplicación de los fundamentos Agile, tanto en el apartado de Desarrollo como en el de Operaciones. La diferencia con relación a las metodologías ágiles propiamente dichas es que estas se implementan solo en Desarrollo, mientras que DevOps afecta también al departamento de Operaciones.
¿Para qué sirve DevOps?
La colaboración entre departamentos que se da con DevOps permite que las organizaciones puedan ofrecer software de buena calidad y a un ritmo más rápido que si usasen prácticas y herramientas de gestión tradicionales.
Esto se traduce en una mejor comunicación entre equipos y una mayor satisfacción del cliente. Porque ser rápidos y ofrecer calidad al mismo tiempo es posible. Y DevOps lo demuestra día tras día.
La práctica de DevOps potencia la integración, colaboración, visibilidad y transparencia entre el equipo de desarrollo de aplicaciones (Dev) y el equipo de operaciones de TI (Ops).
Pero, ¡ojo! Aunque pueda parecer que DevOps es una especie de objetivo empresarial o de negocio, en realidad se concibe como una filosofía basada en prácticas que sirven para que una organización pueda entregar aplicaciones y servicios a alta velocidad.
¿Cómo funciona DevOps?
El hecho de que Dev piense como Ops y Ops piense como Dev permite que los equipos funcionen más coordinados y con menos bloqueos en las diversas etapas del ciclo de vida de los productos. Y, por ejemplo, que cualquier cambio en un producto pase a producción lo más rápido posible.
Para ello, las organizaciones adoptan metodologías y prácticas de desarrollo de software como pueden ser Scrum, Kanban o Agile.
Podríamos decir que el leit motiv de DevOps es la continuidad y, por ello, basa su funcionamiento en:
- Desarrollo continuo.
- Testing continuo.
- Integración continua.
- Entrega continua.
- Despliegue continuo.
- Monitorización continua.
- Infraestructura como código.
La relación estrecha entre Dev y Ops está presente en todas las fases del ciclo de vida del producto: desde la planificación inicial del software hasta el despliegue y la supervisión. Este tipo de relación permite un continuo feedback del cliente para seguir mejorando, desarrollando, probando y desplegando. De esta manera, llegamos de forma rápida y continua a esos cambios necesarios para potenciar flujos de trabajo y producción ágiles y cooperativos.
Filosofía DevOps
La práctica de DevOps se traduce en el impulso de la innovación empresarial y en la mejora continua de los procesos productivos. Supone asegurar rapidez, seguridad y calidad en una entrega (pero también a la hora de aplicar cambios o añadidos) y en el lanzamiento de un producto o de actualizaciones.
Porque DevOps permite encontrar fácilmente dónde está el error para que, sin perder un minuto, la maquinaria se ponga en marcha aplicando los cambios necesarios para solventarlo y, todo ello, sin fisuras. Por lo tanto, la filosofía de DevOps permite resolver de forma más rápida cualquier problema y simplificar y automatizar procesos, a la vez que se consigue mayor escalabilidad y optimización de los recursos.
Para llegar a este punto, hay que prestar especial atención al feedback, para poder realizar correcciones, así como asimilar la necesidad de la experimentación y aprendizaje continuos: repetir, practicar y aprender de los errores será la llave de la excelencia y del éxito.
¿Qué herramientas usa?
Estamos todo el rato hablando de agilizar flujos de trabajo y de la necesidad de que las operaciones sean más colaborativas, pero aún no sabemos cómo y cuándo hacerlo. Pues bien, a continuación enumeramos cuáles son las fases del ciclo de vida de DevOps, ya que, a través de ellas, conoceremos algunas de las herramientas más populares en DevOps.
- Planificar: herramientas como Jira o Git nos permiten rastrear los problemas detectados y realizar la gestión del proyecto. Estas herramientas serán clave a lo largo de todo el proceso, ya que permiten automatizar y ‘pasar tareas’ de unos a otros sin romper el flujo de trabajo. Por cierto, ¿quieres saber qué es la planificación de proyectos?
- Codificar: en este caso, Bitbucket, GitHub o GitLab son algunas de las herramientas con las que podemos crear código y diseñar software de manera colaborativa.
- Construir: Docker, Ansible, Puppet o JFrog Artifactory, entre otras, nos permiten gestionar versiones y compilaciones. Poder liberar código y crear paquetes con él ayuda a mantener coherencia de código en diferentes plataformas y entornos de despliegue.
- Testear: como indicamos anteriormente, realizar pruebas continuas es una de las claves de DevOps para garantizar la calidad en la programación. Algunas de las herramientas que nos ofrecen frameworks de testing y de las que podemos echar mano en esta fase son: JUnit, Blazemeter o Codeception.
- Desplegar: el despliegue implica la puesta en marcha de la gestión, coordinación, programación y automatización de la producción de un producto. Algunas de las herramientas más útiles en esta fase serán algunas de las que ya hemos mencionado (Jira, Puppet, Ansible o Docker) y otras como Jenkins, Kubernetes o OpenShift.
- Operar: en esta fase, para gestionar el software durante la producción, podemos valernos de herramientas como las ya mencionadas Ansible y Puppet o de otras como PowerShell, Otter o Salt.
- Monitorizar: supervisar el proceso nos va a permitir saber dónde y cuándo se produce un error en una versión específica del software en producción. Nos valdrá además para saber cuándo y cómo aplicar un cambio operativo durante el proceso de producción. En esta fase podemos echar mano de herramientas como: Grafana, New Relic o Nagios.
Antes de ponerte al lío, es importante que observes las funcionalidades de cada herramienta, ya que, a veces, una sola puede servirte para diferentes fases del ciclo DevOps. Además, observar cómo se pueden integrar unas con otras te permitirá ahorrar mucho tiempo, recursos y energías. Recuerda, la agilidad y continuidad, además de hacer buena rima, pueden y deben ser grandes amigas.
En UNIR FP nos gusta estar siempre al día de las necesidades del mercado. Por ello, si decides especializarte en DAM con nosotros, contarás con formación exclusiva en Devops (Somos los únicos que incluimos DevOps en el grado superior de DAM!). Te convertirás en técnico superior en desarrollo de aplicaciones multiplataforma con unas skills muy específicas para dar respuesta a las necesidades de las empresas digitales actuales.
Además, si te ha picado el gusanillo por el universo de las metodologías ágiles, el Scrum o todo lo que tiene que ver con la dimensión tecnológica de un producto digital, también puedes formarte como Digital Product Manager y convertirte en el completo Digital Worker con el que cualquier equipo quisiera contar.
Como has podido comprobar, subir al carro de DevOps puede ser una opción fantástica para que tu organización logre una colaboración real entre equipos y agilice todos vuestros procesos. Recuerda que no hay una fórmula mágica, que cada empresa tiene sus características y circunstancias, pero también que ser rápidos, eficientes y eficaces con DevOps ¡es posible!