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.
Creación de la primera cadena DevOps en cinco pasos para principiantes.

DevOps se ha convertido en la solución para procesos de desarrollo demasiado lentos, desarticulados y otros problemas. Pero se necesitan conocimientos mínimos sobre DevOps. Se abordarán conceptos como la cadena DevOps y cómo crearla en cinco pasos. Esto no es una guía completa, sino solo una 'base' que se puede expandir. Comencemos con la historia.

Mi introducción a DevOps

En algún momento trabajé con nubes en Citi Group y desarrollé una aplicación web IaaS para gestionar la infraestructura en la nube de Citi, pero siempre me interesó cómo optimizar la cadena de desarrollo y mejorar la cultura entre los desarrolladores. Greg Lavender, nuestro director técnico de arquitectura e infraestructura en la nube, me recomendó un libro Proyecto 'Fénix'. Explica perfectamente los principios de DevOps, y se lee como una novela.

En la tabla del reverso se 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 lanzar tantas versiones? La respuesta es simple: entendieron cómo crear una cadena DevOps casi perfecta.

En Citi, la situación era completamente diferente antes de adoptar DevOps. Mi equipo tenía diferentes entornos, pero la entrega al servidor de desarrollo la hacíamos manualmente. Todos los desarrolladores tenían acceso solo a un servidor de desarrollo basado en IBM WebSphere Application Server Community Edition. Cuando intentábamos hacer la entrega simultáneamente, el servidor 'caía', y teníamos que negociar 'dolorosamente' cada vez. Además, teníamos una cobertura de código insuficiente en las pruebas, un proceso de entrega manual laborioso y ninguna forma de rastrear la entrega del código con respecto a alguna tarea o requerimiento del cliente.

Era evidente que necesitábamos actuar de inmediato, así que encontré a un colega afín. Decidimos juntos crear la primera cadena DevOps: él configuró una máquina virtual y un servidor de aplicaciones Tomcat, mientras que yo me ocupé de Jenkins, la integración con Atlassian Jira y BitBucket, así como de la cobertura de código en las pruebas. El proyecto fue exitoso: automatizamos completamente la cadena de desarrollo, logramos casi un 100% de disponibilidad del servidor de desarrollo, pudimos rastrear y mejorar la cobertura de código en las pruebas, y la rama de Git se podía vincular a la entrega y a la tarea de Jira. Y casi todas las herramientas que usamos para construir la cadena DevOps eran de código abierto.

De hecho, la cadena fue simplificada, ya que ni siquiera utilizamos configuraciones avanzadas con Jenkins o Ansible. Pero nos funcionó. Quizás esto sea consecuencia del principio Pareto (también conocido como regla 80/20).

Descripción breve de la cadena DevOps y CI/CD

DevOps tiene varias definiciones. Al igual que Agile, DevOps 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 principal es crear una cultura donde los desarrolladores y otros empleados estén 'en la misma sintonía', el trabajo manual esté automatizado, cada uno se encargue de lo que mejor sabe hacer, aumente la frecuencia de entregas, mejore la productividad y aumente la flexibilidad.

Y aunque solo los herramientas no son suficientes para crear un entorno DevOps, son indispensables. La más importante de ellas es la integración continua y la entrega continua (CI/CD). En la cadena, para cada entorno hay diferentes etapas (por ejemplo, DEV (desarrollo), INT (integración), TST (pruebas), QA (control de calidad), UAT (pruebas de aceptación por usuarios), STG (preparación), PROD (uso)), las tareas manuales están automatizadas, los desarrolladores pueden escribir código de calidad, entregarlo y pueden reestructurarse 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 al grano.

Paso 1: Plataforma CI/CD

Primero, necesitas una herramienta CI/CD. Jenkins es una herramienta de CI/CD de código abierto escrita en Java con licencia MIT, que inició la popularización del movimiento DevOps y que de facto se convirtió en el estándar para CI/CD.

¿Y qué es Jenkins? Imagina que tienes un control remoto mágico para una variedad de servicios y herramientas. La herramienta CI/CD, como Jenkins, en sí misma es inútil, pero con diferentes herramientas y servicios se vuelve todopoderosa.

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

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

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

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

Tienes una herramienta CI/CD en localhost, pero por ahora no hay mucho que hacer. Vamos al siguiente paso.

Paso 2: gestión de versiones

La mejor (y quizás la más simple) manera de verificar la magia de la herramienta CI/CD es integrarla con una herramienta de control de versiones (source control management, SCM). ¿Para qué sirve el control de versiones? Supongamos que estás creando una aplicación. La escribes en Java, Python, C++, Go, Ruby, JavaScript o en cualquier otro idioma, que son muchos. Lo que escribes se llama código fuente. Al principio, especialmente si trabajas solo, puedes almacenar todo en un directorio local. Pero cuando el proyecto crece y se une más gente, necesitas una forma de compartir los cambios en el código, pero al mismo tiempo evitar conflictos al fusionar cambios. Además, necesitas alguna forma de restaurar versiones anteriores sin usar copias de seguridad y sin aplicar el método de copiar y pegar en los archivos de código.

Y aquí es donde no se puede prescindir del SCM. El SCM almacena el código en repositorios, gestiona sus versiones y lo coordina entre los desarrolladores.

Hay muchas herramientas de SCM, pero el estándar de facto se ha convertido merecidamente en Git. Te recomiendo usarlo, aunque hay otras alternativas.

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

Así es como se ve el pipeline de DevOps después de añadir 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. ¿No está mal? Pero, ¿cómo convertir esto en una aplicación funcional, querida por miles de millones de usuarios?

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

Todo va como se esperaba. Puedes subir el código y registrar cambios en el sistema de control de versiones, así como invitar a amigos a trabajar contigo. Pero aún no tienes una aplicación. Para que esto sea una aplicación web, necesita ser compilada y empaquetada para su entrega o ejecutada como un archivo ejecutable. (No es necesario compilar un lenguaje de programación interpretado, como JavaScript o PHP).

Usa una herramienta de automatización de compilación. Cualquiera que elijas, recogerá el código en el formato necesario y automatizará la limpieza, compilación, prueba y entrega. Hay varias herramientas de compilación dependiendo del lenguaje, pero generalmente se utilizan las siguientes opciones de código abierto.

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

¡Excelente! Ahora insertemos los archivos de configuración de la herramienta de automatización de compilación en el sistema de control de versiones para que la herramienta CI/CD los recoja.

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

Parece que todo está bien. Pero, ¿dónde vamos a desplegar todo esto ahora?

Paso 4: Servidor de aplicaciones web

Entonces, tienes un archivo empaquetado que puede ser ejecutable o desplegable. Para que la aplicación realmente sea útil, debe tener algún servicio o interfaz, pero necesitas un lugar donde alojar todo esto.

Una aplicación web se puede alojar en un servidor de aplicaciones. Un servidor de aplicaciones proporciona el entorno para ejecutar la lógica de programación del paquete, realizar el rendering de la interfaz y abrir servicios web a través de un socket. Necesitas un servidor HTTP y otros entornos (como una máquina virtual, por ejemplo) para instalar el servidor de aplicaciones. Por ahora, supongamos que estás manejando todo esto en el proceso (aunque hablaré sobre contenedores más adelante).

Existen varios servidores de aplicaciones web de código abierto.

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

Ya hemos creado una cadena de DevOps casi funcional. ¡Gran trabajo!

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

En principio, aquí se puede detener, luego te las arreglarás solo, pero vale la pena hablar también sobre la calidad del código.

Paso 5: Cobertura de pruebas

Las pruebas consumen mucho tiempo y esfuerzo, pero es mejor encontrar errores y mejorar el código de inmediato para complacer a los usuarios finales. Hay muchas herramientas de código abierto para este propósito, que no solo prueban el código, sino que también sugieren cómo mejorarlo. La mayoría de las herramientas de CI/CD pueden conectarse a estas herramientas y automatizar el proceso.

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

Marcos de pruebas

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

Herramientas con sugerencias sobre 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 tiene código abierto).

Hemos aplicado herramientas de cobertura de pruebas y ahora el pipeline de DevOps debería lucir como en la imagen al inicio de la guía.

Pasos adicionales

Contenedores

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

¿Qué son los contenedores?? Вкратце, в виртуальной машине операционная система чаще всего занимает больше места, чем приложение, а контейнеру обычно достаточно нескольких библиотек и конфигурации. В некоторых случаях без виртуальных машин не обойтись, но контейнер вмещает приложение вместе с сервером без лишних затрат.

Para contenedores, generalmente se utiliza Docker y Kubernetes, aunque hay otras opciones.

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

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

Herramientas de automatización de middleware

Nuestra cadena DevOps está diseñada para la colaboración en el desarrollo y entrega de aplicaciones, pero con herramientas de DevOps también se pueden hacer cosas interesantes. Por ejemplo, se pueden utilizar herramientas de "infraestructura como código" (IaC), que también se conocen como herramientas de automatización de middleware. Estas herramientas ayudan a automatizar la instalación, gestión y otras tareas para el 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 desplegarlas en el servidor de aplicaciones.

Aquí hay algunas opciones de herramientas de automatización de middleware de código abierto:

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

Detalles en los artículos de Opensource.com:

¿Y ahora qué?

Esto es solo la punta del iceberg. La cadena DevOps puede hacer mucho más. Comienza con una herramienta de CI/CD y descubre qué más puedes automatizar para facilitar tu trabajo. No te olvides de herramientas de comunicación de código abierto para una colaboración efectiva.

Aquí hay algunos buenos artículos sobre DevOps para principiantes:

También puedes integrar DevOps con herramientas de código abierto para agile:

Fuente: habr.com

Compra un hosting fiable para sitios web con protección contra DDoS, servidores VPS VDS 🔥 Compra un hosting fiable para sitios web con protección contra DDoS, servidores VPS VDS | ProHoster