Informe DORA 2019: Cómo mejorar la eficiencia de DevOps

Informe DORA 2019: Cómo mejorar la eficiencia de DevOps

Hace unos años, muchas organizaciones veían a DevOps como un experimento prometedor en lugar de un enfoque generalizado para el desarrollo de software. DevOps es ahora un conjunto potente y probado de prácticas y herramientas de desarrollo e implementación que pueden acelerar el lanzamiento de nuevos productos y aumentar la productividad. Más importante aún, el impacto de DevOps está en el crecimiento general del negocio y en una mayor rentabilidad.

Equipo Soluciones en la nube Mail.ru traducido lo más interesante de Informe sobre la aceleración del estado de DevOps de 2019, compilado por expertos en Investigación y Evaluación de DevOps (DORA). En el estudio participaron 31 especialistas de todo el mundo. Echemos un vistazo a lo que cambió en la industria en 000 y cómo las empresas pueden mejorar la eficiencia de la entrega de software.

Cómo la industria y el tamaño de la empresa afectan el estado de DevOps

El estudio no encontró correlación entre el desempeño de DevOps y la industria de una organización, con la excepción del comercio minorista, que tuvo un desempeño ligeramente mejor. Esto, en particular, se debe al hecho de que los minoristas necesitan responder rápidamente a las fluctuaciones de la demanda y las necesidades de los clientes. Según el estudio, cualquier empresa puede alcanzar un alto nivel de DevOps, incluidos el sector financiero y el sector público.

El rendimiento de DevOps en empresas con más de 5000 empleados fue menor que en empresas con menos de 5000 empleados. Lo más probable es que esto se deba al hecho de que las grandes organizaciones tienen procesos más grandes, un control más estricto y una arquitectura de sistemas de TI más compleja, lo que introduce retrasos en el proceso de desarrollo e implementación 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, sólo que en algunos casos puede requerir más esfuerzo.

Cómo evaluar el nivel de DevOps en una empresa

Los expertos compararon los procesos de DevOps con un punto de referencia, dividiendo a los encuestados en cuatro grupos de mejor, bueno, promedio y pobre desempeño.

Para el informe, tomamos cuatro métricas clave para evaluar la efectividad de DevOps: tiempo para completar los cambios en el desarrollo de software, frecuencia de implementación, tasa de fallas y tiempo de recuperación.

Cuatro niveles de DevOps: evalúe dónde se encuentra su empresa:

Una métrica para evaluar la eficacia de la entrega de software para los principales servicios y aplicaciones de la empresa.

Equipos con mejores registros

Equipos con buen desempeño

Equipos promedio

Equipos de bajo rendimiento

Frecuencia de implementación
Con qué frecuencia la empresa implementa el código en producción o lo entrega a los usuarios finales.

A pedido, múltiples implementaciones por día

De una vez al día a una vez a la semana

De una vez por semana a una vez al mes

Una vez al mes/varios meses

Cambiar el tiempo de ejecución
¿Cuánto tiempo lleva pasar de una prueba a un software que se ejecuta correctamente en producción?

En menos de un día

De un día a una semana

De una semana a un mes

De un mes a seis meses

Tiempo de recuperación del servicio
¿Cuánto tiempo lleva restaurar un servicio después de un incidente o error que afectó a los usuarios?

Menos de una hora

Durante el día

En una semana

De una semana a un mes

Tasa de fracaso del cambio
¿Qué porcentaje de actualizaciones o nuevas versiones resultan en un servicio degradado y requieren correcciones?

0-15%

0-15%

0-15%

46-60%

El estudio reveló la siguiente tendencia: el número de equipos de alto rendimiento casi se triplicó, pasando del 7% de todos los encuestados en 2018 al 20% en 2019.

Informe DORA 2019: Cómo mejorar la eficiencia de DevOps
Distribución de equipos de desarrollo por nivel de desempeño.

En comparación con los equipos del grupo de bajo rendimiento, los equipos DevOps de alto rendimiento:

  1. Realicé 208 veces más implementaciones de código.
  2. Dedicó 106 veces menos tiempo a la implementación del código.
  3. Encontramos fallas 7 veces menos.
  4. El software se restauró 2,604 veces más rápido después de fallas.

Además, los equipos DevOps de alto rendimiento tienen el doble de probabilidades de alcanzar o superar sus métricas de rendimiento organizacional que los equipos de bajo rendimiento.

Muchos expertos piensan que es imposible lograr un aumento en todos los indicadores al mismo tiempo; es necesario llegar a un compromiso. Por lo tanto, algunos creen que aumentar la velocidad de los lanzamientos puede afectar negativamente la confiabilidad del proceso de entrega de software y la prestación de servicios. Sin embargo, las investigaciones han demostrado que la velocidad y la coherencia de los resultados no son mutuamente excluyentes.

No veo nada sorprendente en el crecimiento del número de equipos DevOps; es natural: la filosofía 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 eficacia de DevOps.

Evaluarlo en función de la velocidad de implementación del código es, por decir lo menos, extraño. Esto sólo se aplica a las empresas emergentes, donde el parámetro clave será la velocidad de lanzamiento del producto al mercado y, a menudo, el producto se lanza en su forma original. En tales condiciones, son vitales mecanismos que aceleren el desarrollo y la entrega a la producción. Pero para el software establecido, como el financiero o médico, el parámetro de tasa de fallas puede no existir; las fallas pueden ser inaceptables.

Lo mismo ocurre con el tiempo de recuperación del servicio: para cualquier servicio desarrollado debe calcularse en segundos, pero para muchos servicios el tiempo de inactividad es inaceptable, para este propósito se inventaron tecnologías de implementación fluida (por ejemplo, verde/azul);

Además, no debe centrarse en la cantidad de implementaciones de código; depende de las necesidades y competencias del equipo de desarrollo. Si la implementación implica agregar nuevas funciones, eso es una cosa, pero si implica corregir errores cometidos durante implementaciones anteriores, es algo completamente diferente.

Denis Romanenko, experto independiente de Mail.ru Cloud Solutions

Cómo mejorar los procesos de DevOps

El informe presenta dos áreas que ayudarán a mejorar DevOps: aumentar la eficiencia del desarrollo y entrega de software y mejorar la productividad de los trabajadores.

Informe DORA 2019: Cómo mejorar la eficiencia de DevOps
Cada una de las áreas incluye sus propios componentes, mejorando los cuales se puede lograr el objetivo deseado.

Según el informe, la clave de la transformación digital es la cultura corporativa. Los equipos de DevOps de alto rendimiento necesitan una cultura de confianza y seguridad psicológica, una sensación de desempeño y objetivos claros. Este 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 se puede aumentar invirtiendo en herramientas fáciles de usar, reduciendo la deuda técnica (es decir, reduciendo el porcentaje de código ineficaz y tecnología obsoleta), organizando la base de conocimientos corporativos y el acceso a soluciones externas.

Creo que la metodología e ideología de DevOps es precisamente que estos procesos no dependen de condiciones externas, como la nube o el propio hardware. La nube en sí no es más que una herramienta; en algunos lugares ayudará, en otros obstaculizará o no tendrá demanda.

Denis Romanenko, experto independiente de Mail.ru Cloud Solutions

A continuación veremos algunos de los componentes para mejorar la eficiencia de los equipos de DevOps.

Las tecnologías en la nube permiten el é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.

Informe DORA 2019: Cómo mejorar la eficiencia de DevOps
¿Qué infraestructuras utilizan los equipos de DevOps?

DORA encontró que el 80% de los encuestados colocan aplicaciones o servicios principales en la plataforma en la nube. Sin embargo, solo el 29% de los encuestados ha implementado las cinco características centrales de la nube del Instituto Nacional de Estándares y Tecnología, el estándar más importante para evaluar el valor de la nube dentro de DevOps.

Caracterización

Porcentaje de usuarios

Autoservicio bajo demanda
Los consumidores pueden aprovisionar automáticamente recursos informáticos
según sea necesario, sin la participación del proveedor.

un 57%
(+ 11% desde 2018)

Amplio acceso a la red
Las capacidades de la nube están disponibles a través de diferentes plataformas,
como teléfonos móviles, tabletas, portátiles y estaciones de trabajo.

un 60%
(+ 14% desde 2018)

Fondo de recursos
Los recursos del proveedor se combinan en un modelo multiinquilino, donde los recursos físicos y virtuales se asignan dinámicamente según demanda.

un 58%
(+ 15% desde 2018)

Escalabilidad y elasticidad
Los recursos escalan horizontal o verticalmente según la demanda, son prácticamente ilimitados y pueden emitirse en cualquier cantidad en cualquier momento.

un 58%
(+135 desde 2018)

Transparencia
Los sistemas en la nube monitorean, optimizan e informan automáticamente el uso de recursos según el tipo de servicio: almacenamiento y procesamiento de datos, cantidad de tráfico,
cuentas de usuario activas.

un 62%
(+ 14% desde 2018)

La plataforma como servicio (PaaS) avanza cada vez más hacia un modelo de implementación centrado en contenedores. Las plataformas en la nube facilitan la implementación de software, por lo que los equipos solo deben preocuparse por ejecutar el código de la aplicación. También se transfiere a los proveedores el escalamiento, la planificación de recursos, la administración y el mantenimiento de la infraestructura.

Para los proveedores de la nube, la prestación de una variedad de servicios se está convirtiendo en un estándar universal: redes de máquinas virtuales, gestión de identidades y accesos (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 nube pagan sólo por los recursos que utilizan, lo que proporciona transparencia de costos, a diferencia de los centros de datos tradicionales donde la información sobre los costos de desarrollo es difícil o imposible de obtener. Los encuestados de empresas que cumplen con las características de la nube enumeradas anteriormente tienen 2,6 veces más probabilidades de estimar con precisión el costo de ejecutar software, 2 veces más probabilidades de comprender qué aplicaciones requieren más recursos y 1,65 veces más probabilidades de mantenerse dentro de su presupuesto de TI.

A veces resulta que contratar a un especialista competente y ocupar la capacidad asignada en un centro de datos es más rentable que pagar por la nube. La mejor opción depende del perfil y la escala de la empresa, la disponibilidad de su propio personal de especialistas en TI y la experiencia. Por ejemplo, es conveniente utilizar la nube al iniciar un negocio o si la empresa no tiene su propio departamento de TI. Al escalar, puede resultar más rentable mantener toda o parte de la infraestructura local.

Denis Romanenko, experto independiente de Mail.ru Cloud Solutions

Prácticas técnicas de DevOps

Muchas organizaciones que buscan implementar DevOps buscan un conjunto de pautas o mejores prácticas. Sin embargo, no hay dos empresas iguales, por lo que las prácticas a elegir dependen del estado actual del negocio y de sus objetivos.

Dicho esto, existen áreas generales que pueden ayudar a mejorar el rendimiento de DevOps: algunas se desarrollan a nivel de equipo, otras requieren esfuerzos a nivel organizacional.

Qué áreas de crecimiento se destacan para los equipos de DevOps en 2019:

A nivel organizacional

  • arquitectura débilmente acoplada
  • implementación de cambios
  • soporte de código

A nivel de equipo

  • integración continua
  • automatización de pruebas
  • automatización de implementación
  • monitoreo
  • canal de desarrollo

A nivel de equipo y organización

  • uso de servicios en la nube
  • pruebas de recuperación de desastres

El estudio confirmó el impacto positivo de la arquitectura débilmente acoplada en el rendimiento de DevOps.

La arquitectura débilmente acoplada es donde los equipos pueden probar, implementar y cambiar sistemas de forma independiente a pedido, independientemente de otros equipos, sin soporte, recursos ni aprobación adicionales y con menos retroalimentación. Esto le permite trabajar de manera más eficiente, pero requiere un alto nivel de organización y gestión.

Este enfoque sólo es posible para empresas emergentes y con algunas reservas. La situación puede ser diferente en otras empresas. Un buen ejemplo: banca/fintech. Allí se podrán utilizar soluciones exclusivamente propietarias, pero se aplicarán prácticas de DevOps.

Denis Romanenko, experto independiente de Mail.ru Cloud Solutions

Los equipos DevOps exitosos automatizan todo

Integración y entrega continua (CI/CD) le permite lanzar servicios y aplicaciones a producción con menores costos y riesgos, así como soportar lanzamientos 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 bajo demanda, tener retroalimentación inmediata sobre la calidad de la implementación y actuar rápidamente para mejorar el siguiente ciclo de implementación.

El informe muestra que los equipos DevOps exitosos invierten en una amplia gama de procesos, prácticas y herramientas de soporte:

  • El 92% utiliza herramientas de montaje automatizadas;
  • El 87% utiliza pruebas unitarias automatizadas;
  • el 57% extiende la automatización a las pruebas de aceptación;
  • El 72% automatiza implementaciones 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 seguimiento.

Es importante elegir las herramientas y tecnologías adecuadas.

Al construir sistemas complejos y gestionar infraestructuras críticas para el negocio, es importante seleccionar tecnologías:

  • que son fáciles de usar tanto para la primera conexión como para un uso continuo;
  • que te ayuden a alcanzar tus objetivos.

El informe examinó las herramientas utilizadas al implementar software a través de CI/CD y herramientas de automatización de pruebas: estas son las tecnologías que subyacen a DevOps.

Qué tecnologías utilizan los equipos de DevOps:

Tecnología

Equipos de bajo rendimiento

Equipos promedio

Equipos con buen desempeño

Equipos de alto rendimiento

Una combinación de productos empaquetados comerciales, de código abierto y patentados.

un 30%

un 34%

un 32%

un 33%

Principalmente soluciones empaquetadas de código abierto y altamente personalizadas.

un 17%

8%

7%

un 10%

Principalmente soluciones empaquetadas y de código abierto con poca personalización.

un 14%

un 21%

un 18%

un 20%

Soluciones comerciales principalmente en caja

8%

un 12%

8%

4%

Desarrollos internos y soluciones propias para la empresa

un 20%

6%

5%

6%

Principalmente código abierto con fuerte personalización.

6%

7%

5%

un 12%

Principalmente código abierto con un poco de personalización.

5%

un 12%

un 24%

un 15%

La usabilidad de las herramientas tiene un impacto significativo en la capacidad de un equipo para maximizar el valor de la tecnología elegida: los ingenieros con tecnologías fáciles de usar tienen 1,5 veces más probabilidades de pertenecer a equipos de alto rendimiento.

En mi opinión, esta tabla da la sensación de que para ser un equipo DevOps exitoso, es necesario seguir la moda, no el problema técnico.

Un especialista competente elige las herramientas para la tarea y no al revés. Siempre existen varias herramientas y enfoques para resolver cualquier problema. Una herramienta específica está determinada por: las características específicas de la tarea; qué tan familiarizado está el personal con esta herramienta (qué alto es el umbral de entrada si la herramienta es nueva); componente financiero, si está presente.

Denis Romanenko, experto independiente de Mail.ru Cloud Solutions

Recuperación de desastres

Toda organización cuyo funcionamiento dependa del funcionamiento del software debe tener plan de recuperación en un desastre. El informe muestra qué tipos de pruebas de resiliencia ante desastres utilizan las diferentes empresas.

¿Qué tipos de pruebas utilizan las empresas para la recuperación ante desastres?

Tipo de prueba

Equipos de bajo rendimiento

Equipos promedio

Equipos con buen desempeño

Equipos de alto rendimiento

Promedio

Pruebas que no afectan a sistemas reales

un 35%

un 26%

un 27%

un 30%

un 28%

Conmutación por error de infraestructura (incluidos centros de datos)

un 27%

un 43%

un 34%

un 38%

un 38%

Pruebas de fallas de aplicaciones

un 25%

un 46%

un 41%

un 49%

un 43%

Simulación de incidentes que implican interrupción de los sistemas de prueba.

un 18%

un 22%

un 23%

un 29%

un 23%

Simulación de incidencias con alteración de los sistemas de trabajo

un 18%

un 11%

un 12%

un 13%

un 12%

Creando automatización y sistemas que interrumpan
sistemas de producción de forma regular y continua

9%

8%

7%

9%

8%

Sólo el 40% de los encuestados realiza pruebas de recuperación ante desastres anualmente utilizando uno o más de los métodos enumerados. 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 de alto rendimiento tienen 1.4 veces más probabilidades de incorporar datos de pruebas de recuperación ante desastres en sus procesos de desarrollo e implementación de software.

Es importante brindar a los equipos de DevOps acceso a la información

Encontrar fácilmente información para resolver problemas puede ayudar a mantener productivos a los equipos de DevOps. Esto es especialmente cierto en el entorno tecnológico actual, que consta de sistemas complejos.

Las fuentes de dicha información se pueden dividir en dos grupos:

  1. Fuentes internas: documentación de la empresa sobre la creación y el mantenimiento de código, bases de conocimiento corporativas, repositorios y más. Los equipos de DevOps que utilizaron fuentes de conocimiento internas fueron 1,73 veces más productivos.
  2. Fuentes externas: Motores de búsqueda y finalización de pila. Los equipos de DevOps subcontratados fueron 1,67 veces más productivos. Las tecnologías externas brindan 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ódigos o sistemas con errores conocidos pero no corregidos; cobertura de prueba insuficiente; código o diseño de baja calidad; artefactos que no se utilizan pero no se eliminan; implementaciones que el equipo no puede respaldar de manera efectiva; tecnologías obsoletas; Documentación incompleta o desactualizada.

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 alto rendimiento tenían 1,4 veces más probabilidades de tener una deuda técnica baja.

Hallazgos clave del estudio sobre el estado de DevOps

  1. El porcentaje de equipos DevOps con alto rendimiento casi se ha triplicado hasta el 20%. Esto significa que las empresas comprenden la promesa de las prácticas para mejorar el desarrollo y la entrega de software, y las empresas están implementando DevOps de manera más activa en sus departamentos de TI.
  2. La entrega rápida de aplicaciones y servicios es el núcleo de la tecnología y la transformación organizacional. La velocidad y la coherencia de los lanzamientos aumentan las ganancias y la satisfacción del cliente.
  3. Las tecnologías en la nube siguen siendo clave para alcanzar la excelencia para los equipos de DevOps. El uso de nubes le permite organizar la entrega de software a la velocidad requerida, garantiza la disponibilidad, escalabilidad y rendimiento de la infraestructura.
  4. La eficacia de los equipos DevOps se puede mejorar prestando atención a la productividad de los miembros del equipo, proporcionando una atmósfera psicológica cómoda y utilizando herramientas convenientes.
  5. Aumentar la velocidad de implementación de versiones con el enfoque correcto no afecta la estabilidad de los servicios y aplicaciones de la empresa.

Fuente: habr.com

Compre alojamiento confiable para sitios con protección DDoS, servidores VPS VDS 🔥 Compra alojamiento web fiable con protección DDoS, servidores VPS VDS | ProHoster