CÓMO ELEGIR DE MANERA CORRECTA LAS HERRAMIENTAS DEVOPS
Por: Sarah Zorah, 2018
Seamos honestos: ninguna herramienta en el mundo te hará DevOps de un día para otro (o Agile, Lean o capaz de entrega continua …) DevOps defiende la colaboración y la comunicación entre los equipos de desarrollo y operaciones, por lo que es más un cambio cultural que una receta mágica.
Sin embargo, existen herramientas y tecnologías que admiten la automatización y la colaboración entre equipos. Las personas a menudo nos preguntan sobre las herramientas que utilizamos para apoyar las prácticas de DevOps en Atlassian (además de la nuestra), por lo que elaboramos una guía del comprador que señalará las cosas que debe buscar al elegir entre las herramientas populares de DevOps, así como también decirle qué herramientas Usamos en nuestros equipos.
Aunque muchas herramientas tocan todas las fases del ciclo de desarrollo de una forma u otra, ninguna herramienta que conocemos desempeña el papel principal en cada fase. Entonces, al pensar en las herramientas DevOps, es útil desglosarlo por fases. Aquí están nuestras herramientas preferidas para cada fase del ciclo de desarrollo:
⦁ Planificación
Colaborar en visión y diseño
Al sacar una página del manual Agile, recomendamos herramientas que permitan a su equipo de desarrollo planificar en iteraciones. De esta manera, comenzará a aprender de los usuarios antes y podrá optimizar su producto a partir de esos comentarios. Busque herramientas que brinden características de planificación de Sprint.
Otra gran práctica es recopilar continuamente comentarios de los usuarios, organizarlos en entradas accionables y priorizar esas acciones para sus equipos de desarrollo. Busque herramientas que fomenten la «lluvia de ideas asincrónica» (si lo desea). Es importante que todos puedan compartir y comentar cualquier cosa: ideas, estrategias, objetivos, requisitos, hojas de ruta y documentación.
Y no olvides las integraciones. Donde quiera que decida abarcar su característica o proyecto, debe convertirse en historias de usuario en su cartera de trabajos de desarrollo.
⦁ Construir
Organizar entornos para el desarrollo
Mientras Puppet y Chef benefician principalmente a las operaciones, los desarrolladores usan herramientas como Docker, una herramienta de código abierto, para aprovisionar entornos de desarrollo individuales. La codificación con réplicas de producción virtuales y desechables le ayuda a realizar más trabajo.
¿Algo raro en el camino de clase? ¿La instalación de Maven se rompió de repente? La infraestructura como código significa que el reaprovisionamiento es más rápido que la reparación, y también más confiable. También significa que puede activar variaciones de su entorno de desarrollo.
Cuando cada miembro del equipo trabaja desde entornos con aprovisionamiento idéntico, «¡Funciona en mi máquina!» Deja de ser divertido porque es cierto (ahora es simplemente divertido).
Infraestructura como código
Los desarrolladores crean aplicaciones modulares porque son más confiables y fáciles de mantener. Entonces, ¿por qué no extender ese pensamiento a la infraestructura de TI?
Esto puede ser difícil de aplicar a los sistemas porque siempre están cambiando. Así que lo solucionamos usando código para el aprovisionamiento. El código de aprovisionamiento se puede aplicar al metal desnudo y volver a aplicarse para que el servidor vuelva a la línea de base.
Se puede almacenar en el control de versiones. Se puede probar. Incorporado a la integración continua (CI, por sus siglas en inglés). Revisado por pares. Usted elige.
Cuando el conocimiento institucional está, bueno, codificado en código, la necesidad de ejecutar libros y documentación interna se desvanece. Lo que emerge son procesos repetibles y sistemas confiables. Menos charla, más acción.
Codificación colaborativa
En lugar de esperar en los tableros de aprobación de cambios antes de implementarlo en producción, puede mejorar la calidad del código y el rendimiento con revisiones por pares realizadas a través de solicitudes de extracción.
¿Qué son las solicitudes pull, te preguntas? Las solicitudes pull informan a su equipo sobre los cambios que ha introducido en una rama de desarrollo en su repositorio. Luego, su equipo puede revisar los cambios propuestos y analizar las modificaciones antes de integrarlas en la línea de código principal.
⦁ Integración continua
La integración continua es la práctica de registrar el código en un repositorio compartido varias veces al día y probarlo cada vez. De esa manera, detecta problemas a tiempo, los soluciona cuando son más fáciles de solucionar y ofrece nuevas funciones brillantes a sus usuarios lo antes posible.
Debido a que los flujos de trabajo de bifurcación y fusión están de moda (¡y merecidamente!), Las herramientas que eliminan el dolor de ejecutar CI en un entorno de múltiples bifurcaciones son la clave para mantener el rigor de las pruebas sin sacrificar la velocidad de desarrollo.
Busque herramientas que apliquen automáticamente sus pruebas a las sucursales de desarrollo y le brinde la opción de avanzar para dominar cuando las compilaciones de sucursales sean exitosas. Además de eso, puede recibir alertas en tiempo real en la herramienta de chat de su equipo con una integración simple.
Pruebas automatizadas
Las pruebas automatizadas se pagan con el tiempo al acelerar su desarrollo y los ciclos de prueba a largo plazo. Y en un entorno DevOps, es importante por otra razón: la conciencia.
Para prepararse y respaldar lo que construye el desarrollo, es importante que las operaciones tengan visibilidad de lo que se está probando y cuán exhaustivamente. A diferencia de las pruebas manuales, las pruebas automatizadas se ejecutan fielmente y con el mismo rigor cada vez. También producen informes y gráficos de tendencias que ayudan a identificar áreas de riesgo.
El riesgo es una realidad en el desarrollo de software, pero no puede mitigar lo que no puede anticipar. Hazle un favor a tu equipo de operaciones y deja que te miren bajo el capó contigo. Busque herramientas que admitan paneles y deje que todos los involucrados en el proyecto comenten sobre resultados específicos de compilación o implementación. Puntos adicionales para las herramientas que facilitan la participación de las operaciones en las pruebas de bombardeo y las pruebas exploratorias.
⦁ Despliegue
Tableros de lanzamiento
Una de las partes más estresantes del software de envío es obtener toda la información de cambios, pruebas e implementación para un próximo lanzamiento en un solo lugar. Lo último que alguien necesita antes de un lanzamiento es una larga reunión para informar sobre el estado. Aquí es donde entran los paneles de lanzamiento.
Busque herramientas con un único tablero integrado con su repositorio de código y herramientas de implementación. Encuentre algo que le brinde visibilidad completa de sucursales, compilaciones, solicitudes de extracción y advertencias de implementación en un solo lugar.
Despliegue automatizado
No existe una receta mágica para implementar la automatización que funcione para todas las aplicaciones y entornos de TI. Pero convertir el Runbook de operaciones en un script ejecutable CMD usando Ruby o bash es una forma común de comenzar. Las buenas prácticas de ingeniería son vitales. Use variables para factorizar los nombres de host: mantener scripts o códigos únicos para cada entorno no es divertido (y de todos modos pierde la mitad del punto). Cree métodos de utilidad o scripts para evitar el código duplicado. Y revise sus scripts por pares para verificarlos.
Intente automatizar las implementaciones en su entorno de nivel más bajo primero, donde usará esa automatización con mayor frecuencia, luego repítala hasta la producción. Por lo menos, este ejercicio resalta las diferencias entre sus entornos y genera una lista de tareas para estandarizarlos. Como beneficio adicional, la estandarización de las implementaciones a través de la automatización reduce la «deriva del servidor» dentro y entre los entornos.
Las herramientas de aprovisionamiento como Puppet y Chef reducen el dolor en entornos de estandarización. Y hay muchas herramientas para ayudar con la implementación de la automatización. El propio Bamboo de Atlassian organiza implementaciones complejas paso a paso y proporciona visibilidad del historial de cada entorno.
Usar Puppet o Chef con Hipchat le permite controlar las implementaciones desde las salas de chat. Con un poco de Google, seguramente encontrará un buen ajuste para su aplicación y presupuesto.
⦁ Operaciones
Monitoreo de rendimiento de aplicaciones y servidores
Hay dos tipos de monitoreo que deberían automatizarse: monitoreo del servidor y monitoreo del rendimiento de la aplicación.
«Recargar» manualmente un cuadro o golpear su API con una prueba está bien para la verificación puntual. Pero para comprender las tendencias y el estado general de su aplicación (y entornos), necesita un software que escuche y grabe datos las 24 horas, los 7 días de la semana.
Y lo has adivinado: hay una aplicación para eso. Muchos de ellos, en realidad. New Relic, Splunk y Nagios se encuentran entre los más populares y manejan ambos tipos de monitoreo. Busque herramientas que se integren con su cliente de chat grupal para que las alertas lleguen directamente a la sala de su equipo o a una sala dedicada a incidentes.
Comunicación y enjambre
La comunicación entre equipos es el primer paso hacia un cambio cultural, y las herramientas de chat lo facilitan en tiempo real. Muchas herramientas de chat tienen salas dedicadas, donde los expertos pueden entrar para pulular los incidentes a medida que ocurren y solucionarlos más rápido.
También es importante mantenerse alerta para maximizar el tiempo de actividad. Busque una herramienta de chat que sea extensible y se integre con herramientas de monitoreo para que nunca se pierda una alerta importante de degradación del servicio.
Las compañías más queridas extienden la comunicación fuera de sus propias cuatro paredes. Busque herramientas que le ayuden a notificar a los usuarios cuando la basura llegue al ventilador y manténgalos actualizados sobre la resolución de un incidente.
Seguimiento de incidentes, cambios y problemas
La clave para desbloquear la colaboración entre los equipos de DevOps es asegurarse de que estén viendo el mismo trabajo. ¿Qué sucede cuando se reportan incidentes? ¿Están vinculados y pueden rastrearse a problemas de software? Cuando se realizan cambios, ¿están vinculados a lanzamientos?
Nada bloquea más la colaboración de Dev con Ops que el seguimiento de incidentes y proyectos de desarrollo de software en diferentes sistemas. Busque herramientas que mantengan incidentes, cambios, problemas y proyectos de software en una plataforma para que pueda identificar y solucionar problemas más rápido.
⦁ Retroalimentación continua
Los clientes ya le dicen si ha creado lo correcto, solo tiene que escuchar. Esto incluye datos NPS, encuestas de abandono, informes de errores, tickets de soporte e incluso tweets. En una cultura DevOps, todos los miembros del equipo de productos tienen acceso a los comentarios de los usuarios porque ayudan a guiar todo, desde la planificación del lanzamiento hasta las sesiones de prueba exploratorias.
Busque aplicaciones que integren su herramienta de chat con su plataforma de encuestas favorita para obtener comentarios al estilo NPS. Twitter y/o Facebook también se pueden integrar con el chat para recibir comentarios en tiempo real. Para una mirada más profunda a los comentarios que llegan de las redes sociales, vale la pena invertir en una plataforma de administración de redes sociales que pueda extraer informes utilizando datos históricos.
Analizar e incorporar comentarios puede parecer que ralentiza el ritmo de desarrollo a corto plazo, pero a la larga es más eficiente que lanzar nuevas funciones que nadie quiere.
Perfeccionando su colección de herramientas DevOps
Atlassian fabrica herramientas que admiten la colaboración entre equipos en cada fase del ciclo de vida del desarrollo. Y como has visto, aumentamos nuestra pila de herramientas DevOps con complementos y herramientas independientes creadas por nuestros pares.
En las pequeñas empresas, un equipo puede ser responsable de todo el ciclo de vida del desarrollo. En empresas más grandes, se divide por departamento. De todos modos, DevOps se trata de romper silos y hacer que este ciclo de vida sea más rápido, altamente automatizado y sin problemas de colaboración, ya sea que sea multifuncional o dentro de un equipo.
Elegir las herramientas DevOps correctas es, ante todo, analizar detenidamente su proceso actual de desarrollo de software y operaciones de TI y decidir dónde necesita mejorar.
https://www.atlassian.com/blog/devops/how-to-choose-devops-tools