
[14/07/2022] DevOps se asocia, principalmente, con la colaboración entre Desarrollo y Operaciones para mejorar la entrega y la confiabilidad de las aplicaciones en producción. Las mejores y más comunes prácticas apuntan a reemplazar los procedimientos manuales -administrados en los límites entre los equipos de desarrollo y de operaciones, que son propensos a errores- con automatizaciones más sólidas. Estos incluyen la automatización del pipeline de entrega con CI/CD (integración continua y entrega continua), la estandarización de las configuraciones con contenedores y la configuración de la infraestructura como código. Por el lado de las operaciones, las mejores prácticas de desarrollo para optimizar la confiabilidad de las aplicaciones incluyen mejorar la capacidad de observación de las aplicaciones, aumentar el monitoreo y automatizar las operaciones de infraestructura y la nube.
[Reciba lo último de CIO Perú suscribiéndose a nuestro newsletter semanal]
Pero ¿qué pasa con la mejora del rendimiento de las aplicaciones, las bases de datos, las canalizaciones de datos y la infraestructura de la nube? En esta publicación, consulté con expertos e identifiqué siete oportunidades en las que las prácticas y metodologías de DevOps pueden afectar el rendimiento y la experiencia del usuario.
1. Incorpore prácticas de seguridad en las aplicaciones desde el primer día
Lo último que necesitan los equipos de desarrollo es implementar nuevas capacidades con vulnerabilidades de seguridad. Una interrupción o degradación de la seguridad afecta las experiencias de los usuarios y crea importantes problemas de negocio. Una mejor práctica de DevOps es mover la seguridad hacia la izquierda, colaborar con infosec en los requerimientos, probar las vulnerabilidades del código dentro del pipeline de CI/CD, e implementar otras prácticas de seguridad en el desarrollo de software.
Mike Elissen, promotor senior de desarrolladores de Akamai, afirma: "un componente crítico de la confiabilidad de la aplicación es la disponibilidad, y tomar las medidas apropiadas para proteger adecuadamente una aplicación contra ataques de aplicaciones web, ataques DDoS y más puede significar la diferencia entre permanecer en línea y fuera de línea”.
Elissen afirma que moverse hacia la izquierda es parte de la transformación de DevOps a DevSecOps. Continúa: "Estamos viendo que el 'moverse hacia la izquierda', en adición a la seguridad a los desarrolladores, se vuelve cada vez más prominente, lo que en última instancia crea una cultura de DevSecOps más sólida y hace que más desarrolladores sean conscientes y responsables de la seguridad de sus aplicaciones”.
2. Estandarizar los planos de arquitectura e infraestructura
Amir Rozenberg, vicepresidente de gestión de productos de Quali, resalta un problema que afecta el rendimiento del equipo. Él afirma que "muchos equipos de desarrollo se encuentran organizando el caos de las definiciones de infraestructura de aplicaciones cultivadas orgánicamente, desarrolladas en buena fe desde el principio, para permitir la eficiencia del equipo en el ciclo de vida del desarrollo de software”.
Rozenberg pregunta si los equipos de desarrollo deben aplicar un enfoque de "hágalo usted mismo” para crear ambientes, o si la organización debe crear estándares. Él señala que "el enfoque recomendado es establecer un equipo central para modelar ambientes en forma de planos para que sean confiables, reutilizables y compatibles. Luego necesitan la capacidad de distribuir esas definiciones de infraestructura para que estén disponibles y los integrantes del negocio las puedan consumir a través de un autoservicio rápido, ya sea integrado en el pipeline automatizado o de forma manual”.
3. Instituir la capacidad de observación y las pruebas continuas en el pipeline de CI/CD
Matt Sollie, director de DevOps en 66degrees, cree que CI/CD puede hacer más que solo empaquetar y enviar código. Él sostiene que "no todos los principios de DevOps son tan glamorosos o visibles como la entrega continua o la construcción de todo como código, pero son igual de importantes. La integración continua es un componente de una postura madura de DevOps, capaz de aportarle mucho a la confiabilidad de una aplicación, pero se necesita propósito, visión y tiempo para construir de manera significativa”.
Sollie reconoce que más que tener una visión, lograr objetivos de confiabilidad y desempeño requiere invertir en prácticas y arquitecturas óptimas. "La capacidad de observación es un principio crítico y costoso porque la confiabilidad no es un estado de encendido o apagado y requiere una recopilación de datos matizados. Con todos los servicios de computación en la nube, seleccionar la herramienta o el servicio adecuado para el trabajo puede brindarle beneficios inherentes de confiabilidad y rendimiento”.
¿Qué deben implementar los equipos de desarrollo ágiles en sus procesos para mejorar el rendimiento? Aquí hay algunas recomendaciones:
- Implementar pruebas continuas antes de aumentar las frecuencias de implementación.
- Considerar la virtualización de los servicios para probar microservicios y APIs de terceros.
- Asegurar pipelines de CI/CD observables para mejorar la detección de las fallas y aislar los problemas del pipeline.
4. Controle las implementaciones con marcadores de funcionalidades y lanzamientos controlados
Las implementaciones no tienen que ser transiciones absolutas en las que todos los usuarios obtienen todos los cambios simultáneamente. Los marcadores de funcionalidades en el código ayudan a configurar y controlar la disponibilidad de una función, mientras que las estrategias de lanzamiento controlado (canary release) permiten a los equipos de desarrollo implementar nuevas capacidades de forma lenta y metódica.
John Kodumal, CTO y cofundador de LaunchDarkly, agrega: "la gestión de las funcionalidades -específicamente los marcadores de funcionalidades- se están convirtiendo rápidamente en prácticas de DevOps que mejoran la confiabilidad y el rendimiento general de las aplicaciones, a la vez que permiten a los desarrolladores innovar continuamente. Al emplear marcadores de funcionalidades, los desarrolladores pueden probar las actualizaciones de las funciones antes de su producción para solucionar los problemas antes del lanzamiento”.
Los controles mejoran la confiabilidad y el rendimiento, pero también ayudan a los equipos de desarrollo a minimizar las interrupciones. Kodumal añade: "los marcadores de funcionalidades mejoran el rendimiento a la vez que brindan a los equipos de desarrollo los controles necesarios para actualizar las aplicaciones sin interrupciones ni tiempo de inactividad”.
5. Establecer estándares rigurosos de capacidad de observación y monitoreo
Al enfocarse ahora en el lado operativo de las responsabilidades de DevOps, los equipos deben considerar un conjunto variado de mejores prácticas para mejorar el rendimiento de la aplicación, incluyendo el desarrollo de estándares de capacidad de observación y la mejora del monitoreo.
Frédéric Harper, director de relaciones con los desarrolladores de Mindee, agrega: "los desarrolladores deben implementar rigurosos procesos de monitoreo y capacidad de observación para garantizar que cada parte de la aplicación funcione correctamente y que los procesos del servidor funcionen sin problemas. Al asegurar este elemento, los equipos de desarrollo pueden recopilar información valiosa para comprender cómo los usuarios utilizan las aplicaciones, posiblemente se eviten problemas futuros, se facilite el soporte a los clientes, y se mejoren las decisiones de negocio o de arquitectura basadas en datos reales”.
6. Amplíe el monitoreo con AIops y automatizaciones
En los días de la web 2.0, las operaciones solo tenían un puñado de archivos de registro y herramientas de monitoreo para revisar los momentos donde había una interrupción o un problema de rendimiento. Hoy en día, ejecutar microservicios, aplicaciones sin servidor y bases de datos de nubes múltiples implica una cantidad significativamente mayor de datos, así como herramientas a consultar, cuando es momento de resolver incidentes e identificar las causas raíz de los problemas. Las plataformas AIops, que centralizan los datos de monitoreo, usan el aprendizaje automático para correlacionar alertas y -en múltiples plataformas- ayudan a Operaciones con la automatización de la respuesta y la recuperación, contribuyendo a minimizar los impactos en el rendimiento.
Mohan Kompella , vicepresidente de marketing de productos de BigPanda, concuerda: "las plataformas de AIops pueden ayudar a los equipos de Desarrollo a preservar la autonomía y la flexibilidad de las herramientas, a la vez que brindan a los encargados de responder a los incidentes centralizados la visibilidad que necesitan para ser la primera línea de defensa en caso de interrupciones” .
7. Definir SLOs y presupuestos de error
Los equipos de DevOps deben ponderar qué prácticas producen el mayor beneficio y abordar los riesgos. Eso requiere que los equipos midan, aprendan y colaboren en las prioridades de DevOps, lo cual no es fácil cuando los beneficios pueden no ser realizables durante meses o años después de implementar las prácticas y herramientas.
Un método para priorizar es adoptar prácticas de ingeniería de confiabilidad del sitio, definir los objetivos de nivel de servicio (SLOs, por sus siglas en inglés) y usar presupuestos de errores. Cuando una aplicación o microservicio excede su presupuesto de errores, le indica al equipo de desarrollo que identifique las causas y se concentre en las soluciones.
Kit Merker, director de operaciones de Nobl9, afirma: "los objetivos de nivel de servicio establecen metas claras para que los equipos de ingeniería tomen mejores decisiones sobre cómo priorizar su trabajo. Devs e ITops no solo pueden centrarse en la tecnología, sino que también pueden centrarse en el servicio”.
DevOps tiene muchas responsabilidades y las mejores prácticas de DevOps ayudan a los equipos a equilibrar su enfoque entre acelerar el desarrollo y mejorar la confiabilidad y el rendimiento. La clave del éxito puede estar en definir declaraciones de problemas, debatir enfoques, iterar soluciones y medir el impacto.
Basado en el artículo de Isaac Sacolick (InfoWorld) y editado por CIO Perú
Puede ver también: