preloader

Introducción a DevOps

blog-image

¿Qué es DevOps? 🔄

DevOps es un conjunto de prácticas de desarrollo de software. Combinan el desarrollo de software y las operaciones de tecnología de la información. Para acortar el ciclo de vida del desarrollo de sistemas y, al mismo tiempo, ofrecer características, arreglos y actualizaciones con frecuencia alineados con los objetivos comerciales.

Según Wikipedia DevOps es un acrónimo inglés de development (desarrollo) y operations (operaciones), que se refiere a una metodología de desarrollo de software que se centra en la comunicación, colaboración e integración entre desarrolladores de software y los profesionales de sistemas en las tecnologías de la información (IT)”.

Conceptos populares ✨

En DevOps encontramos una amplia gama de conceptos que se deben profundizar uno a uno para sacar el mayor provecho de esta metodología, sin embargo en casi todos los casos encontrara conceptos como:

Continuous Integration 💻

CI o integración continua tiene como objetivo principal preparar y servir cuanto antes una release del Software de forma rápida, sencilla y ágil. Los desarrollares mezclan los cambios de código en la rama o branch principal tantas veces como puedan. Los cambios son validados generando una build para permitir ejecutar después los tests contra esa build. De hecho, uno de los pilares fundamentales de la integración continua tiene una estrecha vinculación con la automatización de tests, asegurando que la aplicación no está rota. Es lo que seguramente hayas oído comentar muchas veces como “se ha roto la build”, un argot bastante frecuente en desarrollo de Software e integración continua. Por todo esto, los tests requieren una importancia relevante para que el código que escribimos sea confiable y que la integración continua sea un elemento importante dentro de la calidad de la funcionalidad del código escrito. Obviamente, necesitaremos un servidor que realice todo este proceso de forma automatizada cada vez que un desarrollador haga un commit de sus cambios de código (Jenkins puede ser una opción).

Continuous Delivery 💻

CI o entrega continua es el siguiente paso de la integración continua. De hecho, en muchos círculos se la conoce como una extensión de la integración continua. Su objetivo no es otro que el de proporcionar una manera ágil y fiable de poder entregar o desplegar los nuevos cambios a los clientes. Esto se consigue automatizando el proceso de despliegue, aunque esto ocurrirá al hacer clic sobre la acción de despliegue. Podremos indicar también cuando llevar a cabo el proceso de despliegue en producción, no obstante, el mantra de entrega continua invita a que el despliegue en producción sea lo más rápido posible en el tiempo.

Continuous deployment 🏹

CD o despliegue continuo tiene mucha relación con la entrega continua, sin embargo, va más allá. El objetivo a diferencia de la entrega continua es que no exista intervención humana a la hora de realizar el despliegue de nuestro Software en producción. Esta es quizás la clave y diferencia más importante con respecto a la entrega continua. Para lograr este propósito, el pipeline de producción tiene una serie de pasos que deben ejecutarse en orden y forma satisfactoria. Si alguno de esos pasos no finaliza de forma esperada, el proceso de despliegue no se llevará a cabo.

Continuous monitoring 📊

Monitoreo continuo es una parte esencial de DevOps, que no solo supervisa el software (recursos) sino también los desarrolladores (personas) y desarrollando Procesos (métodos). Los recursos se miden en todos los entornos para encontrar errores lo antes posible. Las personas se miden en términos de desarrollo de competencias (conocimiento, habilidades y actitud) y el método incluye la medición de la velocidad (capacidad de procesamiento) y la eficiencia.

Un resumen de lo que es CI + Continuous Delivery se puede ver en la siguiente imagen:

Continuos Delivery

El resumenn de CI + Continuos Deployment se puede ver en la siguiente imagen:

Continuos Deployment

Ventajas del modelo DevOps

Con DevOps puede encontrar una serie de ventajas para una organización e individuos:

  • Los desarrolladores pueden entregar cambios lo antes posible.
  • Las operaciones requieren fiabilidad y estabilidad.
  • Evita el muro de confusión entre el desarrollo y las operaciones. Este no existe si se implementa en las mentalidades y cultura de los equipos con las herramientas pertinentes y homogéneas.
  • Mayor colaboración entre el desarrollo y términos de operaciones.
  • Mejorar la experiencia final del cliente.
  • Una área de TI completa en infraestructura.
  • Cubrir y reducir costos de TI.

Ten en cuenta que para esto se requiere que el equipo encargado de la infraestructura posea altos conocimientos de programación, gestión de base de datos y administración de sistemas. De esta manera, no sobra decir que el procedimiento, donde se cruza a producción, debe ser plenamente seguro. Debe existir un procedimiento operativo, que permita el paso de desarrollo a producción sea automatizado y fiable.