
Crea la primera cadena de DevOps en cinco pasos para principiantes.
DevOps se ha convertido en una panacea para procesos de desarrollo demasiado lentos, fragmentados y otros problemas. Pero necesitas un conocimiento mínimo en DevOps. Cubrirá conceptos como la cadena DevOps y cómo crearla en cinco pasos. Esta no es una guía completa, sino solo un "pez" que puede expandirse. Comencemos con la historia.
Mi amistad con DevOps
Solía trabajar con nubes en el Grupo Citi y desarrollé la aplicación web IaaS para administrar 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 aconsejó sobre el libro del Proyecto Phoenix . Ella explica perfectamente los principios de DevOps, mientras lee como una novela.
La tabla en la parte posterior muestra con qué frecuencia las empresas lanzan nuevas versiones:

¿Cómo logran Amazon, Google y Netflix implementar tanto? Es simple: descubrieron cómo crear una cadena DevOps casi perfecta.
En Citi, todo estaba completamente mal hasta que cambiamos a DevOps. Entonces mi equipo tenía diferentes entornos, pero realizamos la entrega al servidor de desarrollo de forma manual. Todos los desarrolladores tuvieron acceso a un solo servidor de desarrollo basado en IBM WebSphere Application Server Community Edition. Con un intento simultáneo de entregar, el servidor se "colgó", y cada vez tuvimos que "dolorosamente" estar de acuerdo entre nosotros. También tuvimos una cobertura de código insuficiente con las pruebas, un laborioso proceso de entrega manual y ninguna forma de rastrear la entrega del código de acuerdo con alguna tarea o requisito del cliente.
Estaba claro que era necesario hacer algo con urgencia, y encontré un colega de ideas afines. Decidimos crear la primera cadena DevOps juntos: configuró la máquina virtual y el servidor de aplicaciones Tomcat, y yo tomé Jenkins, la integración con Atlassian Jira y BitBucket, y también cubrí el código con pruebas. El proyecto fue exitoso: automatizamos completamente la cadena de desarrollo, logramos un tiempo de actividad de casi el 100% del servidor de desarrollo, pudimos rastrear y mejorar la cobertura de código con pruebas, y la rama de Git podría estar vinculada a la entrega y la tarea de Jira. Y casi todas las herramientas que construimos la cadena DevOps eran de código abierto.
De hecho, la cadena se simplificó porque ni siquiera utilizamos configuraciones avanzadas con Jenkins o Ansible. Pero lo hicimos. Quizás esto es una consecuencia del principio de Pareto (también conocido como regla 80/20).
Breve descripción de DevOps y la cadena CI / CD
DevOps tiene diferentes definiciones. DevOps, como Agile, incluye una variedad de disciplinas. Pero la mayoría estará de acuerdo con la siguiente definición: DevOps es el método, o ciclo de vida, del desarrollo de software, cuyo principio principal es crear una cultura donde los desarrolladores y otros empleados estén "en la misma longitud de onda", el trabajo manual está automatizado, todos están haciendo lo que pueden hacer mejor aumenta la frecuencia de las entregas, aumenta la productividad, aumenta la flexibilidad.
Y aunque las herramientas por sí solas no son suficientes para crear un entorno DevOps, no puede prescindir de ellas. El más importante de estos 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 (control de calidad), UAT (prueba de aceptación por parte de los usuarios), STG (preparación), PROD (uso)), las tareas manuales están automatizadas, los desarrolladores pueden crear código de alta calidad, entregarlo y pueden reconstruirse fácilmente.
Esta publicación 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.

Vayamos a los negocios.
En primer lugar, necesita una herramienta CI / CD. Jenkins es una herramienta de CI / CD de código abierto escrita en Java bajo la licencia MIT, que inició la popularización del movimiento DevOps y que se ha convertido en el estándar de facto para CI \ CD.
¿Qué es jenkins? Imagine que tiene un panel de control mágico para una amplia variedad de servicios y herramientas. Una herramienta CI / CD en sí misma, como Jenkins, es inútil, pero con diferentes herramientas y servicios se vuelve omnipotente.
Además de Jenkins, hay muchas otras herramientas abiertas, elija cualquiera.

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

Tiene una herramienta de CI / CD en localhost, pero no hay mucho que hacer. Pasemos al siguiente paso.
Paso 2: control de versiones
La mejor (y quizás la forma más fácil) de probar la magia de la herramienta CI / CD es integrarla con la herramienta de gestión de control de origen (SCM). ¿Por qué necesitas control de versiones? Digamos que haces una solicitud. Lo escribes en Java, Python, C ++, Go, Ruby, JavaScript o en cualquier otro idioma, de los cuales un carro y un carrito pequeño. Lo que escribes se llama código fuente. Al principio, especialmente si trabaja solo, puede guardar todo en un directorio local. Pero cuando el proyecto crece y más personas se unen, necesita una forma de compartir los cambios en el código, pero al mismo tiempo evitar conflictos al fusionar los cambios. Y también necesita restaurar de alguna manera las versiones anteriores sin usar copias de seguridad y usar el método de copiar y pegar para archivos con código.
Y aquí sin SCM en ningún lado. SCM almacena el código en repositorios, gestiona sus versiones 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.

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

La herramienta CI / CD puede automatizar la carga y descarga de código fuente y trabajo en equipo. No esta mal Pero, ¿cómo hacer que esta sea una aplicación que funcione, amada por miles de millones de usuarios?
Paso 3: construya la herramienta de automatización
Todo va como debería. Puede cargar el código y registrar los cambios en el sistema de control de versiones, así como invitar a amigos a trabajar con usted. Pero aún no tienes una aplicación. Para que esta sea una aplicación web, debe compilarse y ponerse en un paquete para su entrega o ejecutarse como un archivo ejecutable. (No es necesario compilar un lenguaje de programación interpretado como JavaScript o PHP).
Use una herramienta de automatización de ensamblaje. Cualquiera que sea la herramienta que elija, recopilará el código en el formato correcto y automatizará la limpieza, la compilación, las pruebas y la entrega. Las herramientas de compilación son diferentes según el idioma, pero generalmente se utilizan las siguientes opciones de código abierto.

Genial Ahora insertaremos los archivos de configuración de la herramienta de automatización de ensamblaje en el sistema de control de versiones para que la herramienta CI / CD los ensamble.

Parece que todo está bien. ¿Pero dónde sacarlo todo ahora?
Paso 4: servidor de aplicaciones web
Por lo tanto, tiene un archivo empaquetado que puede ejecutar o implementar. Para que la aplicación sea realmente útil, debe tener algún tipo de servicio o interfaz, pero debe colocarla en algún lugar.
La aplicación web se puede alojar en el servidor de aplicaciones web. El servidor de aplicaciones proporciona un entorno en el que puede ejecutar la lógica del programa desde un paquete, realizar el procesamiento de la interfaz y abrir servicios web a través de un socket. Necesita un servidor HTTP y varios otros entornos (máquina virtual, por ejemplo) para instalar el servidor de aplicaciones. Por ahora, imaginemos que lidias con todo esto en el proceso (aunque hablaré de los contenedores a continuación).
Hay varios servidores de aplicaciones web abiertos.

Ya hemos conseguido casi la cadena de trabajo de DevOps. Gran trabajo!

En principio, puede detenerse aquí, luego puede hacerlo 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 este propósito, hay muchas herramientas abiertas que no solo prueban el código, sino que también aconsejan 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 prueba para escribir y realizar pruebas, y herramientas con consejos para mejorar la calidad del código.
Marcos de prueba

Herramientas de consejos de calidad

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).
Aplicamos las herramientas de cobertura de prueba, y ahora la tubería de DevOps debería verse como la imagen al comienzo del manual.
Pasos adicionales
Contenedores
Como dije, el servidor de aplicaciones se puede alojar en una máquina virtual o servidor, pero los contenedores son más populares.
¿Qué son los contenedores ? En resumen, en una máquina virtual, el sistema operativo suele ocupar más espacio que la aplicación, y algunas bibliotecas y configuraciones suelen ser suficientes para un contenedor. En algunos casos, no se puede prescindir de las máquinas virtuales, pero el contenedor mantiene la aplicación junto con el servidor sin costo adicional.
Para los contenedores, generalmente toman Docker y Kubernetes, aunque hay otras opciones.

Lea los artículos sobre Docker y Kubernetes en Opensource.com :
Herramientas de automatización de middleware
Nuestra cadena DevOps se centra en la creación conjunta y la entrega de la aplicación, pero se pueden hacer otras cosas interesantes con las herramientas DevOps. Por ejemplo, use la infraestructura como herramientas de código (IaC), también llamadas herramientas de automatización de middleware. Estas herramientas ayudan a automatizar la instalación, la administració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 transferirlas al servidor de aplicaciones.
Aquí hay algunas opciones para abrir herramientas de automatización de middleware:

Detalles en artículos en Opensource.com :
¿Y ahora que?
Esto es solo la punta del iceberg. La cadena DevOps puede hacer mucho más. Comience con la herramienta CI / CD y descubra qué más puede automatizar para facilitar su trabajo. No se olvide de las herramientas de comunicación abierta para una colaboración efectiva.
Aquí hay algunos artículos más buenos sobre DevOps para principiantes:
También puede integrar DevOps con herramientas abiertas para agile: