Herramientas de DevOps
Elige herramientas para cada etapa del ciclo de vida de DevOps.
DevOps es la evolución de las metodologías ágiles. Un cambio cultural que une a los equipos de desarrollo y de operaciones. La práctica de DevOps implica un cambio cultural, nuevos principios de gestión y herramientas tecnológicas con las que implementar las prácticas recomendadas.
Cuando se trata de una cadena de herramientas de DevOps, las organizaciones necesitan herramientas con las que mejorar la colaboración, reducir el cambio de contexto, introducir la automatización y sacar partido de la observabilidad y la supervisión para lanzar software mejor y más rápido.
Hay dos enfoques principales para las cadenas de herramientas de DevOps: abiertas o todo en uno. Un enfoque de DevOps todo en uno proporciona una solución completa que habitualmente no se integra con otras herramientas de terceros. Las cadenas de herramientas abiertas se pueden personalizar con diferentes herramientas según las necesidades del equipo. En Atlassian creemos que una cadena de herramientas abierta es el mejor enfoque, ya que se puede personalizar con las mejores herramientas de su clase para satisfacer las necesidades únicas de cada organización. Este enfoque suele aumentar la eficiencia y reducir el tiempo de salida al mercado.
Obtén más información sobre las cadenas de herramientas de DevOps.
Independientemente del tipo de cadena de herramientas de DevOps que utilice una organización, un proceso de DevOps necesita las herramientas adecuadas para las fases clave del ciclo de vida de DevOps:
- Descubre
- Planifica
- Compila
- Prueba
- Supervisión
- Operar
- Feedback continuo
Con una cadena de herramientas de DevOps abierta, las herramientas seleccionadas intervienen en varias fases del ciclo de vida de DevOps. En las siguientes secciones se muestran algunas de las herramientas más populares para DevOps, pero dada la naturaleza del mercado, esta lista cambia con frecuencia. Los proveedores añaden nuevas capacidades que les permiten abarcar más fases del ciclo de vida de DevOps, cada trimestre se anuncian nuevas integraciones y, en algunos casos, los proveedores aglutinan sus productos para centrarse en un problema específico de los usuarios.
Descubre
En la fase de descubrimiento, los equipos de DevOps investigan y definen el alcance de los proyectos. Concretamente, llevan a cabo actividades como estudiar a los usuarios, fijar objetivos y definir los criterios de éxito.
Herramientas como Mural y Miro ofrecen a todo el equipo de software los recursos que necesita para recoger ideas e investigar. Jira Product Discovery organiza esta información en datos procesables y prioriza esas acciones para los equipos de desarrollo. Durante la priorización también se debe tener en cuenta el backlog del feedback de los usuarios.
El descubrimiento de productos es la primera actividad del diseño de producto y luego se convierte en el punto de referencia para la toma de decisiones. Durante el descubrimiento de productos, puedes recoger toda la información crucial sobre cualquier problema de los usuarios y después proporcionar soluciones.
Te recomendamos que busques herramientas que fomenten la "lluvia de ideas asíncrona". Es importante que todos puedan compartir y comentar lo que quieran: ideas, estrategias, objetivos, requisitos, hojas de ruta y documentación.
Planifica
Compila
Entornos de desarrollo idénticos a la producción
Aunque Puppet y Chef tienen ventajas para las operaciones, los desarrolladores utilizan herramientas de código abierto como Kubernetes y Docker para aprovisionar entornos de desarrollo individuales. Programar con réplicas de producción virtuales y desechables te servirá para sacar adelante más trabajo.
Si todos los miembros del equipo trabajan en entornos aprovisionados de forma idéntica, el "¡A mí me funciona!" deja de ser gracioso porque sea verdad (ahora simplemente es gracioso).
Infraestructura como código
Los desarrolladores crean aplicaciones modulares porque son más fiables y fáciles de mantener. ¿Por qué no trasladar esa idea a la infraestructura de TI? Puede ser difícil de aplicar a los sistemas, porque siempre están cambiando. Así que lo resolvemos con código para el aprovisionamiento.
La infraestructura como código significa que el reaprovisionamiento es más rápido que la reparación (y también más coherente y reproducible). También significa que puedes poner en marcha fácilmente variaciones del entorno de desarrollo con una configuración similar a la de producción. El código de aprovisionamiento se puede aplicar y volver a aplicar para colocar un servidor en una línea base conocida. Se puede almacenar en un control de versiones. Se puede probar, incorporar a CI (integración continua) y hacer revisiones por pares.
Cuando el conocimiento institucional está programado en código, la necesidad de tener runbooks y documentación interna desaparece y, en su lugar, se cuenta con procesos repetibles y sistemas fiables.
Control de código fuente y programación colaborativa
Es importante tener el control del código fuente de tu código. Las herramientas de control de código fuente ayudan a almacenar el código en diferentes cadenas para poder ver los cambios y compartirlos a fin de facilitar la colaboración. En lugar de esperar la decisión del comité de evaluación de cambios para implementarlos en producción, puedes mejorar la calidad y el rendimiento del código con revisiones por pares realizadas mediante solicitudes de incorporación de cambios.
¿Quieres saber qué son las solicitudes de incorporación de cambios? Estas solicitudes informan al equipo de los cambios que has enviado a una rama de desarrollo de tu repositorio. El equipo puede revisar los cambios propuestos y analizar las modificaciones antes de integrarlas en la línea de código principal. Las solicitudes de incorporación de cambios aumentan la calidad del software, lo que resulta en menos errores e incidentes, reduce los costes operativos y acelera el desarrollo.
Las herramientas de control de código fuente deben integrarse con otras herramientas para poder conectar las diferentes partes de la entrega y el desarrollo del código. De esta forma, puedes saber si el código de la función se está ejecutando en producción. Si se produce un incidente, se puede recuperar el código para arrojar luz sobre lo sucedido.
Entrega continua
La práctica de la integración continua consiste en introducir código en un repositorio compartido varias veces al día y probarlo cada vez. De esta forma, detectarás automáticamente los problemas de forma temprana, los solucionarás cuando son más fáciles de solucionar y desplegarás nuevas funciones para tus usuarios lo antes posible.
Revisar el código mediante solicitudes de incorporación de cambios requiere crear ramas y está a la orden del día. El flujo de trabajo "Estrella Polar" de DevOps resulta en menos ramas más rápidas y mantiene el rigor de las pruebas sin renunciar a la velocidad de desarrollo.
Busca herramientas que apliquen automáticamente tus pruebas a las ramas de desarrollo y te den la opción de incorporar cambios en la rama principal cuando las compilaciones de rama sean correctas. Además, con una sencilla integración, tu equipo podrá darte feedback continuo mediante alertas de chat en tiempo real.
Descubre cómo Bitbucket Pipelines ayuda a automatizar el código desde las pruebas hasta la producción.
Prueba
Pruebas automatizadas
Las herramientas de prueba abarcan muchas necesidades y capacidades, incluidas las pruebas exploratorias, la gestión de pruebas y la orquestación. Sin embargo, la automatización es una función esencial para la cadena de herramientas de DevOps. Las pruebas automatizadas se amortizan con el tiempo, ya que aceleran los ciclos de desarrollo y pruebas a largo plazo. Además, en un entorno de DevOps, son importantes por otro motivo: la toma de conciencia.
La automatización de pruebas puede aumentar la calidad del software y reducir el riesgo si se hace con frecuencia y desde las primeras etapas. Los equipos de desarrollo pueden ejecutar pruebas automatizadas repetidamente y cubriendo varias áreas, como pruebas de interfaz de usuario, análisis de seguridad o pruebas de carga. También elaboran 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 se puede mitigar lo que no se puede prever. Hazle un favor a tu equipo de operaciones y ayúdalos a entender cómo funciona todo. Busca herramientas compatibles con los murales y deja que todos los involucrados en el proyecto comenten resultados concretos de la compilación o la implementación. Da prioridad a herramientas que faciliten la participación del equipo de operaciones en pruebas rápidas y exploratorias.
Despliega
Paneles de implementaciones
Una de las partes más estresantes a la hora de lanzar software es obtener toda la información sobre cambios, pruebas e implementación de una publicación próxima en un solo lugar. Lo último que se necesita antes de una publicación es una reunión interminable para informar sobre cómo están las cosas. Aquí es donde entran en acción los paneles de publicación.
Busca herramientas con un único panel integrado con el repositorio de código y las herramientas de implementación. Encuentra una solución que dé visibilidad completa de las ramas, compilaciones, solicitudes de incorporación de cambios y avisos de implementación en un solo lugar.
Implementación automatizada
No hay una receta mágica para la implementación automatizada que funcione para todas las aplicaciones y todos los entornos de TI. Pero convertir el runbook de operaciones en un script ejecutable de comandos con Ruby o bash es una forma habitual de comenzar. Las buenas prácticas de ingeniería son fundamentales. Utiliza variables para excluir los nombres de host: mantener scripts de comandos o código únicos para cada entorno no es divertido, y además no se corresponde con el objetivo. Crea métodos de utilidad o scripts para evitar el código duplicado. Además, haz una revisión por pares para comprobar el estado de los scripts.
Intenta automatizar las implementaciones en el entorno de menor nivel en primer lugar (ya que utilizarás esa automatización con mayor frecuencia) y, a continuación, emúlalo hasta la fase de producción. Como mínimo, este ejercicio destaca las diferencias entre los entornos y genera una lista de tareas para estandarizarlos. Otra ventaja es que la estandarización de las implementaciones mediante la automatización reduce los "desajustes del servidor", tanto en un entorno como entre entornos.
Operar
Seguimiento de incidentes, cambios y problemas
La clave para posibilitar la colaboración entre los equipos de DevOps es garantizar que vean el mismo trabajo. ¿Qué ocurre cuando se notifican incidentes? ¿Son rastreables y están vinculados a problemas de software? Cuando se realizan cambios, ¿están vinculados a publicaciones?
Nada dificulta más la colaboración entre desarrollo y operaciones que hacer un seguimiento de los incidentes y los proyectos de desarrollo de software en diferentes sistemas. Busca herramientas que mantengan los incidentes, los cambios, los problemas y los proyectos de software en una sola plataforma para identificar y resolver los problemas con mayor rapidez.
Observa
Supervisión del rendimiento de aplicaciones y servidores
Hay dos tipos de supervisión que deben automatizarse: la de los servidores y la del rendimiento de las aplicaciones.
"Encajar" a mano un box o someter tu API a una prueba está bien para realizar una comprobación puntual. Sin embargo, para comprender las tendencias y el estado general de tu aplicación (y sus entornos), necesitas un software que reciba y registre datos las 24 horas del día, los 7 días de la semana. La observabilidad continua es una capacidad clave para que los equipos de DevOps tengan buenos resultados.
Busca herramientas que se integren con tu cliente de chat grupal para que las alertas vayan directamente a la sala del equipo o a una sala exclusiva para incidentes.
Feedback continuo
Los clientes ya te están diciendo si lo estás haciendo bien o no, solo tienes que escuchar. El feedback continuo incluye tanto la cultura y los procesos para recopilar feedback con regularidad, como herramientas para generar datos a partir de ese feedback. Las prácticas de feedback continuo incluyen recopilación y revisión de datos de NPS, encuestas de pérdida de usuarios, informes de errores, tickets de asistencia técnica e incluso tuits. En una cultura de DevOps, todos los miembros del equipo de producto tienen acceso a los comentarios de los usuarios porque les sirven de guía para todo, desde la planificación de publicaciones hasta las sesiones de pruebas exploratorias.
Busca aplicaciones que integren tu herramienta de chat con tu plataforma de encuestas favorita para obtener feedback al estilo NPS. Twitter o Facebook también se pueden integrar con el chat para obtener feedback en tiempo real. Para profundizar en los comentarios procedentes de las redes sociales, vale la pena invertir en una plataforma de gestión de redes sociales que pueda incorporar informes a partir de datos históricos.
Puedes pensar que analizar e incorporar feedback ralentiza el ritmo de desarrollo a corto plazo, pero es más eficiente a largo plazo que publicar nuevas funciones que nadie quiere.
En conclusión...
En Atlassian, creemos en la importancia de tener una cadena de herramientas de DevOps que se integre con las herramientas favoritas de los equipos de desarrollo y de operaciones. Por eso nuestra plataforma de DevOps puede integrarse con más de 171 proveedores externos líderes. Así podrás elegir las mejores herramientas, ya que DevOps no puede comprarse a un proveedor, sino que debe crearse.
Para empezar, prueba gratis la solución DevOps de Atlassian.
Artículo siguiente
Lecturas recomendadas
Consulta estos recursos para conocer los tipos de equipos de DevOps o para estar al tanto de las novedades sobre DevOps en Atlassian.