Netflix produce una ingente cantidad de contenido original, el gasto asociado para el próximo año, se estima en 8000 millones de dólares. En este proceso se requiere una cuidadosa coordinación de aspectos creativos, de negocio y técnicos. Cada producción supone abordar una gran cantidad de cuestiones operacionales y logísticas que producen y consumen una ingente […]

DevOps es un conjunto de prácticas que automatizan los procesos entre los equipos de desarrollo de software y TI para que puedan compilar, probar y publicar software con mayor rapidez y fiabilidad. El concepto de DevOps se basa en establecer una cultura de colaboración entre equipos que, tradicionalmente, trabajaban en grupos aislados. Entre las ventajas que promete, se incluyen el aumento de la confianza y de la velocidad de publicación de software, la capacidad de solucionar incidencias críticas rápidamente y una mejor gestión del trabajo imprevisto.

Culture.

Si la cultura de DevOps se pudiera resumir en una palabra, esta sería “colaboración” y, mejor aún, “colaboración transversal”.

Todas las herramientas y automatizaciones del mundo no sirven para nada si no van acompañadas de una voluntad real de trabajar juntos por parte de los profesionales de Desarrollo y TI/Operaciones, porque DevOps no soluciona los problemas relacionados con herramientas, sino los problemas humanos.

Piensa en DevOps como una metodología ágil, pero con las operaciones incluidas. Formar equipos con una orientación hacia los proyectos o los productos que sustituyan equipos basados en funciones es dar un paso en la dirección correcta. Incluye desarrollo, control de calidad, gestión de productos, diseño, operaciones, gestión de proyectos y cualquier otro conjunto de aptitudes que requiera el proyecto.

Automatization.

Invertir en automatización suprime el trabajo manual repetitivo, genera procesos reproducibles y crea sistemas fiables.

Los equipos que son nuevos en la automatización suelen empezar con la entrega continua: la práctica de ejecutar cada cambio en el código mediante un puñado de pruebas automatizadas, a menudo facilitadas por una infraestructura basada en la nube, a continuación empaquetar compilaciones satisfactorias y promoverlas hasta producción con despliegues automatizados. Como puedes imaginar, la entrega continua no es una tarea fácil y rápida de preparar, pero la rentabilidad de la inversión bien merece la pena.

Otra de las contribuciones principales de DevOps es la idea de “configuración como código”. Los desarrolladores procuran crear aplicaciones modulares que admiten composición porque son más fiables y fáciles de mantener. La misma filosofía se puede aplicar a la infraestructura que las aloja, ya esté en la nube o en la red de la propia compañía.

Lean.

Cuando hablamos de “lean” en un contexto de software, solemos pensar en suprimir actividades de escaso valor y avanzar rápido: ser enérgico, ser ágil. Más oportunos aún para DevOps son los conceptos de mejora continua y aceptación de los errores.

Una mentalidad de DevOps ve oportunidades de mejora continua en todas partes. Algunas resultan obvias, como mantener retrospectivas periódicas para mejorar los procesos del equipo. Otras son más sutiles, como las pruebas A/B en distintos métodos de incorporación para nuevos usuarios del producto.

Metrics.

Sin datos, es difícil demostrar que su esfuerzo continuo por mejorar esté mejorando algo en efecto. Por suerte, hay un montón de herramientas y tecnologías para medir el rendimiento: cuánto tiempo pasan los usuarios con su producto, si esa entrada del blog ha generado alguna venta o con cuánta frecuencia aparecen alertas críticas en los registros.

Sharing.

La antigua fricción entre los equipos de desarrollo y operaciones se debe en gran medida a una falta de puntos en común. Creemos que compartir responsabilidades y logros representará un importante avance para zanjar esa división. En DevOps gusta la idea de que las personas que compilan una aplicación se involucren también en su lanzamiento y ejecución.