Informe DORA 2019: Cómo mejorar el rendimiento de DevOps



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:

Métrica de evaluación de desempeño de entrega de software para los principales servicios y aplicaciones de la compañía
Equipos de mejor puntaje
Buenos equipos
Equipos medianos
Equipos de bajo puntaje
Frecuencia de implementación
Con qué frecuencia una empresa implementa el código en producción o lo lanza a los usuarios finales.
A pedido, múltiples implementaciones por día
Una vez al día a una vez a la semana.
De una vez a la semana a una vez al mes
Una vez al mes / varios meses
Cambiar plazo de ejecución
¿Cuánto tiempo lleva pasar de una prueba a un software que funciona con éxito en la producción?
En menos de un dia
De un dia a una semana
De una semana a un mes
Mes a seis meses
Servicio de tiempo de recuperación
¿Cuánto tiempo lleva restaurar un servicio después de un incidente o error que afecta a los usuarios?
Menos de una hora
Durante el dia
Dentro de una semana
De semana a mes
Cambiar la tasa de falla
Qué porcentaje de actualizaciones o nuevas versiones conducen a un servicio deficiente y necesitan ser reparados.
0-15%
0-15%
0-15%
46-60%

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:

  1. Completó 208 veces más implementaciones de código.
  2. 106 veces menos tiempo dedicado a implementar código.
  3. 7 veces menos probabilidades de encontrar fallas.
  4. 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 Solutions

Có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 Solutions

A 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.

Característica
Porcentaje utilizado
Alquiler por encargo
Los consumidores pueden proporcionar automáticamente recursos informáticos
según sea necesario, sin la participación del proveedor.
57%
(+ 11% desde 2018)
Amplio acceso a la red
Las capacidades de la nube están disponibles en múltiples plataformas,
como teléfonos móviles, tabletas, computadoras portátiles y estaciones de trabajo.
60%
(+ 14% desde 2018)
Grupo de recursos
Los recursos del proveedor se combinan en un modelo multiinquilino, donde los recursos físicos y virtuales se asignan dinámicamente a pedido.
58%
(+ 15% desde 2018)
Escalabilidad y elasticidad.
Los recursos se escalan horizontal o verticalmente bajo demanda, son prácticamente ilimitados y se pueden emitir en cualquier cantidad en cualquier momento.
58%
(+135 desde 2018)
Transparencia
Los sistemas en la nube controlan, optimizan e informan automáticamente sobre el uso de los recursos según el tipo de servicio: almacenamiento y procesamiento de datos, cantidad de tráfico,
Cuentas de usuario activas
62%
(+ 14% desde 2018)

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 Solutions

Prá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?

Nivel de organización
  • arquitectura vagamente acoplada
  • implementación de cambios
  • soporte de código
Nivel de equipo
  • integración continua
  • prueba de automatización
  • automatización de despliegue
  • monitoreo
  • tubería de desarrollo
A nivel de equipo y organización
  • uso de servicios en la nube
  • pruebas de recuperación ante desastres

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 Solutions

Los 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:

Tecnología
Equipos de bajo puntaje
Equipos medianos
Buenos equipos
Equipos de alta puntuación
Combinación de productos patentados, de código abierto y comerciales.
30%
34%
32%
33%
Principalmente de código abierto y soluciones en caja altamente personalizadas
17%
8%
7%
10%
Principalmente soluciones de código abierto y basadas en cajas con pequeños ajustes
14%
21%
18%
20%
Soluciones comerciales principalmente en caja
8%
12%
8%
4%
Desarrollo interno y soluciones propias para la empresa.
20%
6%
5%
6%
En primer lugar, código abierto con una fuerte personalización.
6%
7%
5%
12%
Primer código abierto con un pequeño ajuste
5%
12%
24%
15%

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 Solutions

Recuperació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?

Tipo de prueba
Equipos de bajo puntaje
Equipos medianos
Buenos equipos
Equipos de alta puntuación
Media
Pruebas que no afectan a los sistemas reales.
35%
26%
27%
30%
28%
Conmutación por error de infraestructura (incluido el centro de datos)
27%
43%
34%
38%
38%
Prueba de falla de aplicación
25%
46%
41%
49%
43%
Simulación de incidentes con mal funcionamiento de los sistemas de prueba.
18%
22%
23%
29%
23%
Modelado de incidentes con sistemas de trabajo defectuosos
18%
11%
12%
13%
12%
Creando automatización y sistemas que interrumpen
sistemas de producción de forma regular y continua
9%
8%
7%
9%
8%

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:

  1. 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.
  2. 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


  1. 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.
  2. 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.
  3. 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.
  4. 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.
  5. 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.

Source: https://habr.com/ru/post/483444/


All Articles