DevOps: Integración continua y Pipeline
Seguimos aprendiendo sobre las metodologías DevOps…
Hoy vamos a hablar sobre integración continua (continuos integration, CI) y pipelines. Creo que es importante tener claros estos conceptos en el camino de Sysadmin a DevOps.
Hace un tiempo, os hablé sobre Jenkins y CD/CI, hoy vamos a profundizar algo más sobre esto:
¿Qué es la Integración Continua en DevOps?
El proceso de Integración Continua o CI, fue propuesto en el año 2000, por uno de los gurús del desarrollo orientado a objetos e impulsor de las metodologías ágiles, el científico Martin Fowler.
La Integración Continua es una práctica de desarrollo de software que afecta al proceso de desarrollo del producto, automatizando tareas y añadiendo nuevas prácticas.
En un proceso de desarrollo, se van realizando modificaciones del código que tienen que terminar en algún momento en Producción. La idea del concepto de Integración Continua, es controlar estas modificaciones generando versionados a través de repositorios. Consiguiendo procesar la nueva versión, compilar el código, realizar el despliegue y el testeo de manera automática, e informar a los desarrolladores de los posibles errores encontrados en la fase de testeo.
Esto hace que los errores sean advertidos, por parte de los desarrolladores de una forma más rápida. Y una vez todas las fases son superadas, se genera una versión nueva en el repositorio, para agilizar el paso a Producción.
Beneficios de la Integración Continua
Aunque a simple vista puede parecer que añade complejidad al desarrollo de software, la realidad es que los beneficios que se generan son mayores.
Entre los beneficios que podemos encontrar es la de mejorar la calidad del producto, porque se fomenta la colaboración entre desarrolladores, reduciendo los problemas de integración y las fases de desarrollo.
Se mejora la automatización de trabajos y se monitorizan las pruebas de una forma más concisa. Lo que hace que las buenas prácticas de desarrollo consigan un código de mayor calidad.
Buenas prácticas en la Integración Continua
Os doy ciertos tips que he ido recopilando y que podemos tener en cuenta:
- Disponer de un solo repositorio de código fuente
- Automatizar el proyecto mediante scripts
- Crear test dentro del propio proceso de desarrollo de nuestras aplicaciones
- Guardar cambios o modificaciones diariamente, tanto en nuestro repositorio local como en remoto
- Disponer de entornos exactamente iguales a Producción para las pruebas
- Realizar los tests complejos o pesados automatizados durante la noche, para evitar no parar otras tareas durante el día
- Guardar los diferentes versionados utilizados en el proyecto
- Que todo el mundo sepa en qué versión está el proyecto de una forma rápida
- Automatizar al máximo el despliegue y la reversión, para que sea lo más ágil posible
¿Qué es un Pipeline en DevOps?
Al hilo de esto…explicaremos que es un pipeline en DevOps.
Un pipeline es una forma de trabajar en el mundo DevOps, bajo la Integración Continua, que nos permite definir el ciclo de vida completo de un desarrollo de software.
Consiste en un flujo comprendido en varias fases que van en forma secuencial, siendo la entrada de cada una la salida de la anterior.
El pipeline estaría formado por un conjunto de procesos o herramientas automatizadas que permiten que los desarrolladores como otros roles, trabajen de forma coherente para crear e implementar código en un entorno de producción.
Como os podéis imaginar, no existe un pipeline estándar, ya que depende completamente de la tecnología que se esté utilizando. Ahí surge la figura del ingeniero DevOps, que debe conocer por una parte el desarrollo como la infraestructura, la administración de sistemas y las herramientas de DevOps.
Aunque cada pipeline es único, la mayoría de componentes es común para la mayoría de empresas.
Es el componente fundamental en la integración continua, y en el proceso de desarrollo de software automatizado. Seguiremos indagando en otras entradas sobre esto…
Te ha gustado la entrada SGUENOS EN TWITTER O INVITANOS A UN CAFE?
No quedan dudas de que este tema está revolucionando la industria. Este artículo refuerza bastante esta visión, no dejen de leerlo!