
Hace unos años, muchas organizaciones vieron DevOps como un experimento prometedor, en lugar de un enfoque básico para el desarrollo de software. Ahora DevOps es un conjunto comprobado y poderoso de prácticas y herramientas de desarrollo e implementación que aceleran el lanzamiento de nuevos productos y aumentan la productividad. Más importante aún, el efecto DevOps está dirigido al crecimiento general del negocio y a aumentar su rentabilidad.
El equipo de
Mail.ru Cloud Solutions tradujo lo más interesante del
Informe Accelerate State of DevOps 2019 , compilado por expertos de DevOps Research & Assessment (DORA). En el estudio participaron 31,000 profesionales de todo el mundo. Veamos qué ha cambiado en la industria en 2019 y cómo una empresa puede aumentar la eficiencia de la entrega de software.
Cómo la industria y el tamaño de la empresa impactan DevOps
El estudio no identificó un vínculo entre el rendimiento de DevOps y la industria de la organización, con la excepción del comercio minorista, donde el rendimiento fue ligeramente mejor. Esto, en particular, se debe al hecho de que los minoristas deben responder rápidamente a las fluctuaciones de la demanda y las necesidades del cliente. Según el estudio, cualquier empresa, incluidos el sector financiero y el sector público, puede alcanzar un alto nivel en DevOps.
Los indicadores de rendimiento de DevOps en compañías con más de 5,000 empleados fueron más bajos que en compañías con menos de 5,000 empleados. Lo más probable es que esto se deba al hecho de que en organizaciones grandes, procesos más grandes, un control más estricto, una arquitectura más complicada de los sistemas de TI, que introduce demoras en el proceso de desarrollo y despliegue del código. Al mismo tiempo, los expertos creen que la escala de la empresa no impide el éxito en la creación de DevOps, solo que en algunos casos puede requerir más esfuerzo.
Cómo evaluar el nivel de DevOps en una empresa
Los expertos compararon los procesos DevOps con un punto de referencia, dividiendo a los participantes de la encuesta en cuatro grupos con los mejores, buenos, medianos y bajos indicadores.
Se tomaron cuatro métricas clave para evaluar la efectividad de DevOps para el informe: el tiempo necesario para completar los cambios durante el desarrollo del software, la frecuencia de implementación, la frecuencia de fallas y el tiempo de recuperación.
Cuatro niveles de DevOps: evalúe dónde se encuentra su empresa:
El estudio reveló la siguiente tendencia: el número de equipos con un alto nivel de indicadores casi se triplicó, aumentando del 7% de todos los encuestados en 2018 al 20% en 2019.
Distribución de equipos de desarrollo por niveles de desempeño.En comparación con los equipos del grupo de bajo rendimiento, los equipos DevOps de alto rendimiento:
- Completó 208 veces más implementaciones de código.
- 106 veces menos tiempo dedicado a implementar código.
- 7 veces menos probabilidades de encontrar fallas.
- 2.604 veces más rápido para restaurar el software después de fallas.
Además, los equipos de DevOps con puntajes altos tienen dos veces más probabilidades de alcanzar o superar sus métricas de desempeño organizacional que los equipos con puntajes bajos.
Muchos expertos piensan que es imposible lograr un aumento en todos los indicadores al mismo tiempo, debemos comprometernos. Por lo tanto, algunas personas creen que aumentar la velocidad de implementación de las versiones puede afectar negativamente la confiabilidad del proceso de entrega de software y la provisión de servicios. Sin embargo, los estudios han demostrado que la velocidad y la estabilidad de los resultados no son mutuamente excluyentes.
En el crecimiento en el número de equipos de DevOps, no veo nada sorprendente, es lógico: la filosofía de DevOps ahora es popular, y el número de nuevas empresas está creciendo.
Pero, en mi opinión, los expertos eligieron parámetros no del todo correctos para evaluar la efectividad de DevOps.
Evaluarlo por la velocidad de implementación del código es al menos extraño. Esto se aplica solo a las empresas de nueva creación, donde el parámetro clave será la velocidad a la que el producto se lleva al mercado y, a menudo, el producto se muestra en forma cruda. En tales circunstancias, los mecanismos que aceleran el desarrollo y la entrega de la producción son vitales. Pero para un software bien establecido, como el financiero o el médico, el parámetro de la frecuencia de las fallas puede no existir, las fallas pueden ser inaceptables.
Del mismo modo, con el tiempo de recuperación de un servicio: para cualquier servicio desarrollado, debe calcularse en segundos, y para muchos servicios, uno simple es inaceptable, para esto inventaron tecnologías continuas (por ejemplo, verde / azul).
Además, no se centre en la cantidad de implementaciones de código; depende de la necesidad y las competencias del equipo de desarrollo. Si la implementación implica agregar nueva funcionalidad, esto es una cosa, y si corregir los errores cometidos durante implementaciones anteriores es completamente diferente.
Denis Romanenko, experto independiente Mail.ru Cloud SolutionsCómo mejorar los procesos de DevOps
El informe presenta dos áreas que ayudarán a mejorar DevOps: mejorar la eficiencia del desarrollo y entrega de software y mejorar la productividad.
Cada una de las instrucciones incluye sus propios componentes, mejorando lo que puede lograr el objetivo deseado.Según el informe, la clave para la transformación digital es la cultura corporativa. Los equipos DevOps altamente efectivos necesitan una cultura de confianza y seguridad psicológica, una comprensión de los resultados del trabajo y objetivos claros. Dicho entorno permite a los miembros del equipo tomar decisiones informadas, expresar sus opiniones y ser más creativos.
Las tecnologías en la nube, la entrega continua, las pruebas de recuperación ante desastres y la gestión de cambios también ayudarán a mejorar la eficiencia del desarrollo y la entrega de software. La productividad laboral se puede mejorar invirtiendo en herramientas fáciles de usar, reduciendo la deuda técnica, es decir, reduciendo el porcentaje de código ineficiente y tecnologías obsoletas, organizando una base de conocimiento corporativo y acceso a soluciones externas.
Creo que la metodología y la ideología de DevOps es precisamente que estos procesos no dependen de condiciones externas, como una nube o su propio hardware. La nube en sí misma no es más que una herramienta, en algún lugar ayudará, en algún lugar obstaculizará o no tendrá demanda.
Denis Romanenko, experto independiente Mail.ru Cloud SolutionsA continuación, veremos algunos de los componentes que mejoran el rendimiento del equipo de DevOps.
La tecnología en la nube contribuye al éxito de DevOps
En 2019, cada vez más organizaciones eligen soluciones en la nube que aumentan significativamente la productividad de los equipos de DevOps.
Qué infraestructuras utilizan los comandos DevOps.DORA descubrió que el 80% de los encuestados aloja
aplicaciones o servicios centrales en una plataforma en la nube . Sin embargo, solo el 29% de los encuestados implementaron las cinco características principales de la computación en la nube en el Instituto Nacional de Estándares y Tecnología: este es el estándar más importante para evaluar el valor de la nube en el marco de DevOps.
Platform as a Service (PaaS) se está moviendo cada vez más hacia un modelo de implementación centrado en contenedores. Las plataformas en la nube simplifican la implementación de software, por lo que los equipos solo deben preocuparse por ejecutar el código de la aplicación. El escalado, la planificación de recursos, la administración y el mantenimiento de la infraestructura también van del lado de los proveedores.
Para los proveedores de la nube, el estándar universal es la provisión de una variedad de servicios: redes de máquinas virtuales, control de identidad y acceso (IAM), almacenamiento y bases de datos, aprendizaje automático, Internet de las cosas (IoT), soluciones de contenedores, soluciones de seguridad y otros.
Los clientes de los proveedores de la nube solo pagan los recursos que utilizan, lo que garantiza la transparencia de los costos, en contraste con los centros de datos tradicionales, donde la información sobre el costo del desarrollo es difícil o imposible de obtener. Los encuestados de compañías que cumplen con las características de la nube enumeradas anteriormente son 2.6 veces más precisas en la estimación del costo del trabajo de software, 2 veces más a menudo entienden qué aplicaciones consumen más recursos y 1.65 veces más a menudo permanecen dentro del presupuesto asignado para TI.
A veces resulta que es más rentable contratar a un especialista competente y aprovechar las capacidades asignadas en el centro de datos que pagar por la nube. La opción que sea mejor depende del perfil y la escala de la empresa, la disponibilidad de su propio personal de especialistas en TI y su experiencia. Por ejemplo, la nube es conveniente de usar al comienzo de un negocio o si la empresa no tiene su propio departamento de TI. Al escalar, puede ser más rentable contener toda o parte de la infraestructura local.
Denis Romanenko, experto independiente Mail.ru Cloud SolutionsPrácticas técnicas DevOps
Muchas organizaciones que desean implementar DevOps buscan un conjunto de instrucciones o mejores prácticas. Sin embargo, no hay compañías idénticas, por lo tanto, qué prácticas elegir depende del estado actual del negocio y sus objetivos.
Al mismo tiempo, existen instrucciones generales que ayudan a mejorar la eficiencia de DevOps: algunas se desarrollan a nivel de equipo, otras requieren esfuerzos a nivel de organización.
¿Cuáles son las direcciones de crecimiento para los equipos de DevOps en 2019?
El estudio confirmó el impacto positivo de la arquitectura débilmente acoplada en el rendimiento de DevOps.
Una arquitectura débilmente acoplada es cuando los equipos pueden probar, implementar y modificar de manera independiente los sistemas a pedido, independientemente de otros equipos, sin soporte adicional, recursos, aprobación, con menos comentarios. Esto le permite trabajar de manera más eficiente, pero requiere un alto nivel de organización y gestión.
Este enfoque es posible solo para startups y con algunas reservas. Otras compañías pueden tener una situación diferente. Un buen ejemplo: banca / fintech. Solo se pueden usar soluciones propietarias allí, pero se aplicarán las prácticas de DevOps.
Denis Romanenko, experto independiente Mail.ru Cloud SolutionsLos exitosos equipos de DevOps automatizan todo
La integración y entrega continua (CI / CD) le permite llevar servicios y aplicaciones a la producción con menos costo y riesgo, así como mantener versiones de acuerdo con los objetivos de la organización.
Un CI / CD exitoso también significa que los equipos pueden implementar cambios en la producción a pedido, pueden ver de inmediato comentarios sobre la calidad de la implementación, se pueden resolver rápidamente y se puede mejorar el próximo ciclo de implementación.
El informe muestra que los equipos exitosos de DevOps invierten en una amplia gama de procesos, prácticas y herramientas de soporte:
- El 92% usa herramientas de ensamblaje automatizadas;
- El 87% usa pruebas unitarias automatizadas;
- 57% extiende la automatización a las pruebas de aceptación;
- El 72% automatiza la implementación en entornos de prueba, el 69% hace lo mismo para la implementación en producción;
- El 69% integra chatbots en el proceso de implementación;
- El 57% se integra con herramientas de monitoreo.
Es importante elegir las herramientas y la tecnología adecuadas.
Al construir sistemas complejos y administrar infraestructuras críticas de negocios, es importante elegir las siguientes tecnologías:
- que son fáciles de usar tanto durante la primera conexión como en operación constante;
- que ayudan a alcanzar tus objetivos.
El informe examinó las herramientas utilizadas para implementar software a través de CI / CD y probar las herramientas de automatización: estas son las tecnologías que subyacen a DevOps.
Qué tecnologías usan los comandos DevOps:
La conveniencia de las herramientas afecta significativamente la capacidad del equipo para maximizar el valor de la pila de tecnología seleccionada: los ingenieros con tecnologías fáciles de usar tienen 1,5 veces más probabilidades de pertenecer a equipos con altas tasas.
En mi opinión, esta tabla da la sensación de que para ser un equipo de DevOps exitoso, debes seguir el mod y no la tarea técnica.
Un especialista competente selecciona las herramientas para la tarea, y no al revés. Para resolver cualquier problema, siempre hay varias herramientas y enfoques. Una herramienta específica está determinada por: los detalles de la tarea; qué tan familiarizado está el personal con esta herramienta (qué tan grande es el umbral de entrada si la herramienta es nueva); componente financiero, si lo hay.
Denis Romanenko, experto independiente Mail.ru Cloud SolutionsRecuperación ante desastres
Cada organización cuyo trabajo depende de la operación del software debe tener
un plan de recuperación ante desastres . El informe muestra qué tipos de pruebas de tolerancia a desastres utilizan varias empresas.
¿Qué tipos de ensayos utilizan las empresas para la recuperación ante desastres?
Solo el 40% de los encuestados realiza pruebas de recuperación de desastres anualmente utilizando uno o más de estos métodos. Al mismo tiempo, las empresas que realizan pruebas de recuperación ante desastres tienen un mayor nivel de disponibilidad del servicio. El informe muestra que los equipos de DevOps con alto rendimiento tienen 1,4 veces más probabilidades de tener en cuenta los datos de las pruebas de recuperación ante desastres en los procesos de desarrollo e implementación de software.
Es importante que los equipos de DevOps tengan acceso a la información.
Mantener el rendimiento de los comandos de DevOps a un alto nivel ayudará a recuperar información fácilmente para resolver problemas. Esto es especialmente cierto en un entorno tecnológico moderno, que consiste en sistemas complejos.
Las fuentes de dicha información se pueden dividir en dos grupos:
- Fuentes internas : documentación de la compañía para crear y mantener código, bases de conocimiento corporativas, repositorios y más. Los equipos de DevOps que utilizaron fuentes internas de conocimiento fueron 1,73 veces más productivos.
- Fuentes externas : motores de búsqueda y reposición de pilas. Los equipos externos de DevOps fueron 1.67 veces más productivos. Las tecnologías externas ofrecen una gran ventaja para el aprendizaje y el crecimiento, especialmente el uso de nubes públicas y herramientas de código abierto.
Es importante que las empresas reduzcan la deuda técnica.
La deuda técnica incluye código o sistemas con errores conocidos pero no corregidos; cobertura de prueba insuficiente; código o diseño de baja calidad; artefactos que no se usan pero no se eliminan; implementaciones que el equipo no puede soportar de manera efectiva; tecnología anticuada; documentación incompleta u obsoleta.
Los expertos han descubierto que la deuda técnica afecta negativamente el rendimiento de DevOps. Los equipos con alta deuda técnica fueron 1.6 veces menos productivos. Los equipos con tasas altas tenían 1,4 veces más probabilidades de tener una baja deuda técnica.
Hallazgos clave de la investigación de DevOps
- El porcentaje de equipos DevOps de alto rendimiento casi se triplicó al 20%. Esto significa que las empresas comprenden la promesa de prácticas para mejorar el desarrollo y la entrega de software, las empresas están introduciendo activamente DevOps en sus departamentos de TI.
- La entrega rápida de aplicaciones y servicios está en el corazón de la tecnología y la transformación organizacional. La velocidad y la estabilidad de los lanzamientos de lanzamiento aumentan las ganancias y la satisfacción del cliente.
- La tecnología en la nube continúa siendo clave para lograr equipos DevOps de alto rendimiento. El uso de nubes le permite organizar la entrega de software a la velocidad adecuada, proporciona disponibilidad, escalabilidad y productividad de la infraestructura.
- La eficacia de los equipos de DevOps puede mejorarse si presta atención a la productividad de los miembros del equipo, proporciona una atmósfera psicológica cómoda y el uso de herramientas convenientes.
- El aumento de la velocidad de implementación de lanzamientos con el enfoque correcto no afecta la estabilidad de los servicios y aplicaciones de la compañía.