Guía para principiantes: creación de cadenas DevOps con herramientas de código abierto

Guía para principiantes: creación de cadenas DevOps con herramientas de código abierto
Construya su primera cadena DevOps en cinco pasos para principiantes.

DevOps se ha convertido en una panacea para los procesos de desarrollo demasiado lentos, desconectados y problemáticos. Pero necesita un conocimiento mínimo en DevOps. Cubrirá conceptos como la cadena DevOps y cómo crear una en cinco pasos. Esta no es una guía completa, sino solo un "pez" que se puede ampliar. Comencemos con la historia.

Mi introducción a DevOps

Solía ​​trabajar con nubes en Citi Group y desarrollar una aplicación web IaaS para administrar la infraestructura de nube de Citi, pero siempre me ha interesado cómo optimizar la cadena de desarrollo y mejorar la cultura entre los desarrolladores. Greg Lavender, nuestro CTO de arquitectura e infraestructura en la nube, me recomendó este libro. Proyecto Phoenix. Explica maravillosamente los principios de DevOps y se lee como una novela.

La tabla en la parte posterior muestra con qué frecuencia las empresas lanzan nuevas versiones:

Guía para principiantes: creación de cadenas DevOps con herramientas de código abierto

¿Cómo logran Amazon, Google y Netflix desplegar tanto? Y es simple: descubrieron cómo crear una cadena DevOps casi perfecta.

Las cosas eran muy diferentes para nosotros en Citi hasta que cambiamos a DevOps. Entonces mi equipo tenía diferentes entornos, pero hacíamos la entrega al servidor de desarrollo de forma manual. Todos los desarrolladores tenían acceso a un solo servidor de desarrollo basado en IBM WebSphere Application Server Community Edition. Con un intento simultáneo de entrega, el servidor "cayó", y cada vez tuvimos que negociar "dolorosamente" entre nosotros. También teníamos una cobertura de código insuficiente con las pruebas, un proceso de entrega manual que requería mucho tiempo y ninguna forma de rastrear la entrega del código con la ayuda de alguna tarea o requisito del cliente.

Estaba claro que había que hacer algo con urgencia, y encontré a un colega de ideas afines. Decidimos crear la primera cadena DevOps juntos: él configuró una máquina virtual y un servidor de aplicaciones Tomcat, y yo me encargué de Jenkins, la integración con Atlassian Jira y BitBucket, así como la cobertura de código con pruebas. El proyecto fue exitoso: automatizamos completamente la cadena de desarrollo, logramos casi un 100 % de tiempo de actividad en el servidor de desarrollo, pudimos monitorear y mejorar la cobertura del código con pruebas, y una rama de Git se pudo vincular a una entrega y un problema de Jira. Y casi todas las herramientas que usamos para construir la cadena DevOps eran de código abierto.

De hecho, se simplificó la cadena, porque ni siquiera aplicamos configuraciones avanzadas usando Jenkins o Ansible. Pero lo logramos. Tal vez esto sea una consecuencia del principio Pareto (también conocida como la regla 80/20).

Una breve descripción de la cadena DevOps y CI/CD

DevOps tiene diferentes definiciones. DevOps, como Agile, incluye diferentes disciplinas. Pero la mayoría estará de acuerdo con la siguiente definición: DevOps es un método, o ciclo de vida, de desarrollo de software, cuyo principio fundamental es crear una cultura en la que los desarrolladores y otros empleados estén "en la misma longitud de onda", el trabajo manual esté automatizado, cada uno hace lo que mejor sabe hacer, aumenta la frecuencia de las entregas, aumenta la productividad del trabajo, aumenta la flexibilidad.

Si bien las herramientas por sí solas no son suficientes para crear un entorno DevOps, son indispensables. El más importante de ellos es la integración continua y la entrega continua (CI/CD). Hay diferentes etapas en la cadena para cada entorno (por ejemplo, DEV (desarrollo), INT (integración), TST (prueba), QA (garantía de calidad), UAT (prueba de aceptación del usuario), STG (preparación), PROD (uso)) , las tareas manuales están automatizadas, los desarrolladores pueden producir código de calidad, entregarlo y reconstruirlo fácilmente.

Esta nota describe cómo crear una cadena DevOps en cinco pasos, como se muestra en la imagen a continuación, utilizando herramientas de código abierto.

Guía para principiantes: creación de cadenas DevOps con herramientas de código abierto

Vamos a ir al grano.

Paso 1: Plataforma CI/CD

En primer lugar, necesita una herramienta de CI/CD. Jenkins es una herramienta de CI/CD de código abierto con licencia del MIT escrita en Java que popularizó el movimiento DevOps y se ha convertido en el estándar de facto para CICD.

¿Qué es Jenkins? Imagine que tiene un panel de control mágico para una variedad de servicios y herramientas. Por sí sola, una herramienta de CI/CD como Jenkins es inútil, pero con diferentes herramientas y servicios, se vuelve todopoderosa.

Además de Jenkins, hay muchas otras herramientas de código abierto, elija cualquiera.

Guía para principiantes: creación de cadenas DevOps con herramientas de código abierto

Así es como se ve un proceso DevOps con una herramienta de CI/CD

Guía para principiantes: creación de cadenas DevOps con herramientas de código abierto

Tiene una herramienta de CI/CD en localhost, pero aún no hay mucho que hacer. Pasemos al siguiente paso.

Paso 2: Versión

La mejor manera (y posiblemente la más fácil) de probar la magia de una herramienta de CI/CD es integrarla con una herramienta de administración de control de código fuente (SCM). ¿Por qué necesita el control de versiones? Digamos que estás haciendo una aplicación. Lo escribes en Java, Python, C++, Go, Ruby, JavaScript o cualquier otro lenguaje que sea un vagón y un pequeño carrito. Lo que escribes se llama código fuente. Al principio, especialmente si trabaja solo, puede guardar todo en un directorio local. Pero a medida que el proyecto crece y más personas se unen, necesita una forma de compartir los cambios de código pero evitar conflictos al fusionar los cambios. Y también necesita restaurar de alguna manera las versiones anteriores sin usar copias de seguridad y usando el método de copiar y pegar para archivos de código.

Y aquí sin SCM por ningún lado. El SCM almacena el código en repositorios, administra versiones del mismo y lo coordina entre los desarrolladores.

Hay muchas herramientas SCM, pero Git se ha convertido merecidamente en el estándar de facto. Te aconsejo que lo uses, pero hay otras opciones.

Guía para principiantes: creación de cadenas DevOps con herramientas de código abierto

Así es como se ve la canalización de DevOps después de agregar el SCM.

Guía para principiantes: creación de cadenas DevOps con herramientas de código abierto

La herramienta CI/CD puede automatizar la carga y descarga del código fuente y la colaboración en equipo. ¿Nada mal? Pero ahora, ¿cómo hacer una aplicación que funcione a partir de esto, amado por miles de millones de usuarios?

Paso 3: Herramienta de automatización de compilación

Todo va como debe. Puede cargar código y realizar cambios en el control de código fuente e invitar a amigos a trabajar con usted. Pero aún no tienes una aplicación. Para que esto sea una aplicación web, debe compilarse y empaquetarse para su distribución o ejecutarse como un ejecutable. (No es necesario compilar un lenguaje de programación interpretado como JavaScript o PHP).

Utilice una herramienta de automatización de compilación. Cualquiera que sea la herramienta que elija, ensamblará el código en el formato correcto y automatizará la limpieza, la compilación, las pruebas y la entrega. Las herramientas de compilación varían según el idioma, pero las siguientes opciones de código abierto se usan comúnmente.

Guía para principiantes: creación de cadenas DevOps con herramientas de código abierto

¡Perfecto! Ahora insertemos los archivos de configuración de la herramienta de automatización de compilación en el control de código fuente para que la herramienta CI/CD los genere.

Guía para principiantes: creación de cadenas DevOps con herramientas de código abierto

Se siente bien. Pero, ¿dónde está todo esto para desplegar ahora?

Paso 4: servidor de aplicaciones web

Entonces, tiene un archivo empaquetado que se puede ejecutar o implementar. Para que una aplicación sea realmente útil, debe tener algún tipo de servicio o interfaz, pero debe colocarlo todo en algún lugar.

Una aplicación web se puede alojar en un servidor de aplicaciones web. El servidor de aplicaciones proporciona un entorno en el que puede ejecutar lógica empaquetada, renderizar interfaces y exponer servicios web a través de un socket. Necesita un servidor HTTP y algunos otros entornos (una máquina virtual, por ejemplo) para instalar el servidor de aplicaciones. Por ahora, supongamos que está lidiando con todo esto a medida que avanza (aunque hablaré sobre los contenedores a continuación).

Hay varios servidores de aplicaciones web abiertos.

Guía para principiantes: creación de cadenas DevOps con herramientas de código abierto

Ya tenemos una cadena DevOps casi en funcionamiento. ¡Gran trabajo!

Guía para principiantes: creación de cadenas DevOps con herramientas de código abierto

En principio, puede detenerse aquí, luego puede manejarlo usted mismo, pero vale la pena hablar sobre la calidad del código.

Paso 5: prueba de cobertura

Las pruebas requieren mucho tiempo y esfuerzo, pero es mejor encontrar errores de inmediato y mejorar el código para complacer a los usuarios finales. Para ello, existen muchas herramientas abiertas que no solo probarán el código, sino que también aconsejarán sobre cómo mejorarlo. La mayoría de las herramientas de CI/CD pueden conectarse a estas herramientas y automatizar el proceso.

La prueba se divide en dos partes: marcos de prueba para escribir y ejecutar pruebas, y herramientas con sugerencias para mejorar la calidad del código.

Marcos de prueba

Guía para principiantes: creación de cadenas DevOps con herramientas de código abierto

Herramientas con puntas de calidad.

Guía para principiantes: creación de cadenas DevOps con herramientas de código abierto

La mayoría de estas herramientas y marcos están escritos para Java, Python y JavaScript porque C++ y C# son propietarios (aunque GCC es de código abierto).

Hemos aplicado las herramientas de cobertura de prueba, y ahora la canalización de DevOps debería verse como la imagen al comienzo del tutorial.

Pasos adicionales

contenedores

Como dije antes, un servidor de aplicaciones se puede alojar en una máquina virtual o en un servidor, pero los contenedores son más populares.

que son los contenedores? En resumen, en una máquina virtual, el sistema operativo suele ocupar más espacio que la aplicación, y un contenedor suele ser suficiente con algunas bibliotecas y configuración. En algunos casos, las máquinas virtuales son indispensables, pero el contenedor puede acomodar la aplicación junto con el servidor sin costo adicional.

Para contenedores se suele tomar Docker y Kubernetes, aunque hay otras opciones.

Guía para principiantes: creación de cadenas DevOps con herramientas de código abierto

Lea artículos sobre Docker y Kubernetes en Opensource.com:

Herramientas de automatización de middleware

Nuestra cadena DevOps se centra en la creación y entrega colaborativa de una aplicación, pero hay otras cosas interesantes que puede hacer con las herramientas DevOps. Por ejemplo, utilice herramientas de infraestructura como código (IaC), también conocidas como herramientas de automatización de middleware. Estas herramientas ayudan a automatizar la instalación, la administración y otras tareas del middleware. Por ejemplo, una herramienta de automatización puede tomar aplicaciones (servidor de aplicaciones web, base de datos, herramientas de monitoreo) con las configuraciones correctas y enviarlas al servidor de aplicaciones.

Aquí hay algunas opciones para herramientas abiertas de automatización de middleware:

Guía para principiantes: creación de cadenas DevOps con herramientas de código abierto

Detalles en los artículos Opensource.com:

Y ahora que?

Esto es sólo la punta del iceberg. La cadena DevOps puede hacer mucho más. Comience con una herramienta de CI/CD y vea qué más puede automatizar para facilitar su trabajo. no te olvides de herramientas de comunicación abierta para una colaboración eficaz.

Aquí hay algunos artículos más buenos de DevOps para principiantes:

También puede integrar DevOps con herramientas ágiles abiertas:

Fuente: habr.com

Añadir un comentario