DevOps se asocia principalmente a la colaboración entre desarrolladores y operaciones para mejorar la entrega y la fiabilidad de las aplicaciones en producción. Las mejores prácticas más comunes tienen como objetivo sustituir los procedimientos manuales y propensos a errores que se gestionan en los límites entre los equipos de desarrollo y operaciones por automatizaciones más sólidas. Estas incluyen la automatización del canal 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. En cuanto a las operaciones, las mejores prácticas de desarrollo para mejorar la fiabilidad de las aplicaciones incluyen la mejora de la observabilidad de las aplicaciones, el aumento de la supervisión y la automatización de las operaciones de la nube y la infraestructura.
Pero, ¿qué pasa con la mejora del rendimiento de las aplicaciones, las bases de datos, los conductos de datos y la infraestructura de la nube? En este post, he consultado con expertos y he identificado siete oportunidades en las que las prácticas y metodologías de devops pueden afectar al rendimiento y a la experiencia del usuario.
1. Incorporar prácticas de seguridad en las aplicaciones desde el primer día
Lo último que necesitan los equipos de desarrollo es desplegar nuevas capacidades con vulnerabilidades de seguridad. Una interrupción o degradación de la seguridad afecta a la experiencia de los usuarios y crea importantes problemas empresariales. Una de las mejores prácticas de devops es cambiar la seguridad a la izquierda colaborando con infosec en los requisitos, probando las vulnerabilidades del código dentro de los conductos CI/CD e implementando otras prácticas de seguridad en el desarrollo de software. Mike Elissen, defensor senior de los desarrolladores en Akamai, dijo: “un componente crítico de la fiabilidad de la aplicación es la disponibilidad, y tomar las medidas apropiadas para asegurar adecuadamente una aplicación contra los ataques de aplicaciones web, ataques DDoS, y más, puede significar la diferencia entre permanecer en línea o fuera de línea”. Elissen afirmó que el cambio a la izquierda forma parte de la transformación de devops a devsecops. Y continuó: “estamos viendo que el ‘giro a la izquierda’ en la incorporación de la seguridad en devops es cada vez más pronunciado, creando en última instancia una cultura devsecops más fuerte y haciendo 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, expuso un problema que afecta al rendimiento de los equipos. Mencionó: “muchos equipos de devops se encuentran organizando el caos de las definiciones de la infraestructura de las aplicaciones, que crecen orgánicamente y que se desarrollaron de buena fe al principio, para permitir la eficiencia del equipo en el ciclo de vida del desarrollo de software”. Rozenberg se pregunta si los equipos de devops deben aplicar un enfoque de “hágalo usted mismo” para crear entornos o si la organización debe crear estándares. Según explicó, “el enfoque recomendado es establecer un equipo central que modele los entornos en forma de planos para que sean fiables, reutilizables y conformes. A continuación, deben tener la capacidad de distribuir esas definiciones de infraestructura para que estén disponibles, para que los componentes de la empresa las consuman a través de un autoservicio rápido, ya sea integrado en el pipeline automatizado o de forma manual”.
3. Instituir la observabilidad y las pruebas continuas en la canalización CI/CD Matt Sollie, director de devops en 66degrees, consideró que el CI/CD puede hacer algo más que empaquetar y empujar el código. “No todos los principios de devops son tan glamurosos 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 uno de los componentes de una postura madura de devops que puede añadir mucho a la fiabilidad de una aplicación, pero se necesita propósito, visión y tiempo para construir de forma significativa“. Sollie reconoció que más que tener una visión, alcanzar los objetivos de fiabilidad y rendimiento requiere invertir en prácticas y arquitecturas óptimas. “La observabilidad es un principio crítico y costoso, porque la fiabilidad no es un estado de encendido o apagado y requiere una recopilación de datos matizada. Con todos los servicios de computación en la nube, la selección de la herramienta o el servicio adecuados para el trabajo puede aportar beneficios inherentes a la fiabilidad y el rendimiento”. ¿Qué deberían implementar los equipos de desarrollo ágil en sus procesos para mejorar el rendimiento? He aquí algunas recomendaciones:
Implementar pruebas continuas antes de aumentar las frecuencias de despliegue
Considerar la virtualización de servicios para probar los microservicios y las API de terceros
Garantizar que los conductos de CI/CD sean observables para mejorar la detección de fallos y aislar los problemas de los conductos
4. Controlar los despliegues con indicadores de funciones y lanzamientos controlados Las implementaciones no tienen por qué ser transiciones absolutos en los que todos los usuarios reciben todos los cambios de una sola vez. Los indicadores de funciones en el código ayudan a configurar y controlar la disponibilidad de una característica, mientras que las estrategias de lanzamiento controlado permiten a los equipos de desarrollo desplegar nuevas capacidades de forma lenta y metódica. John Kodumal, director de tecnología y cofundador de LaunchDarkly, añadió: “la gestión de funciones, y en concreto los indicadores de funciones, se están convirtiendo rápidamente en prácticas de desarrollo que mejoran la fiabilidad y el rendimiento general de las aplicaciones, al tiempo que permiten a los desarrolladores innovar continuamente. Al emplear indicadores de características, los desarrolladores pueden probar las actualizaciones de características antes de la producción para solucionar problemas antes del lanzamiento”. Los controles mejoran la fiabilidad y el rendimiento, pero también ayudan a los equipos de desarrollo a minimizar las interrupciones. Kodumal afirmó: “Los indicadores de funciones mejoran el rendimiento al tiempo que ofrecen a los equipos de desarrollo los controles necesarios para actualizar las aplicaciones sin interrupciones ni tiempos de inactividad“.
5. Establecer normas rigurosas de observabilidad y supervisión Centrándonos ahora en el lado ops de las responsabilidades de devops, los equipos deberían considerar varias mejores prácticas para mejorar el rendimiento de las aplicaciones, incluyendo el desarrollo de estándares de observabilidad y la mejora del monitoreo. Frédéric Harper, director de relaciones con los desarrolladores en Mindee, afirmó: “Los devops deben implementar procesos rigurosos de monitorización y observabilidad para garantizar que cada pieza de la aplicación funciona correctamente y que los procesos del servidor se ejecutan sin problemas. Al asegurar este elemento, los equipos de devops pueden reunir información valiosa para entender cómo los usuarios utilizan las aplicaciones, posiblemente prevenir futuros problemas, facilitar el soporte a los clientes y mejorar las decisiones de negocio o de arquitectura basadas en datos reales“.
6. Ampliar la supervisión con AIops y automatizaciones En los días de la web 2.0, las operaciones sólo tenían un puñado de archivos de registro y herramientas de monitoreo para revisar cuando había una interrupción o un problema de rendimiento. Hoy en día, la ejecución de microservicios, aplicaciones sin servidor y bases de datos multicloud implica un número significativamente mayor de datos y herramientas que consultar a la hora de resolver incidencias e identificar las causas raíz de los problemas. Las plataformas AIops que centralizan los datos de monitorización, utilizan el aprendizaje automático para correlacionar las alertas, y ayudan a las operaciones a automatizar la respuesta y la recuperación en múltiples plataformas pueden contribuir a minimizar los impactos en el rendimiento. Mohan Kompella, vicepresidente de marketing de productos de BigPanda, estuvo de acuerdo: “las plataformas AIops pueden ayudar a los equipos de devops a preservar la autonomía y la flexibilidad de las herramientas, a la vez que proporcionan a los responsables de la respuesta a incidentes centralizados la visibilidad que necesitan para ser la primera línea de defensa ante las interrupciones”.
7. Definir los SLO y los presupuestos de error Los equipos de Devops deben equilibrar qué prácticas producen el mayor beneficio y abordar los riesgos. Esto requiere que los equipos midan, aprendan y colaboren en las prioridades de devops, lo que no es fácil cuando los beneficios pueden no ser realizables hasta 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 fiabilidad del sitio, definir objetivos de nivel de servicio (SLO) y utilizar presupuestos de error. Cuando una aplicación o microservicio supera su presupuesto de errores, indica al equipo de desarrollo que debe identificar las causas y centrarse en las soluciones. Kit Merker, director de operaciones de Nobl9, afirmó: “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. Los Devs y los ITops no pueden estar sólo centrados en la tecnología, sino que pueden pasar a estar centrados en el servicio”. Los equipos de desarrollo tienen mucho que hacer, y las mejores prácticas de desarrollo ayudan a los equipos a equilibrar su enfoque entre la aceleración del desarrollo y la mejora de la fiabilidad y el rendimiento. La clave del éxito puede estar en la definición de los planteamientos de los problemas, el debate de los enfoques, la iteración de las soluciones y la medición del impacto.
-Isaac Sacolick, cio.com
Comments