Dev(QA)Ops

DevOps es una visión avanzada de los principios de desarrollo y entrega de software con eficiencia. Una visión que implica a profesionales —diversificados y mutidisciplinares—capaces de cocrear software con mentalidad ágil y un alto grado de organización técnica para disponer de un entorno de trabajo eficiente (implementación de pipelines con automatización y herramientas integradas, validaciones continuas de calidad, aceleradores de tareas de los proyectos, métricas, trazabilidad, gestión de requisitos, comunicación integrada, cuadros de mando…). Todo ello, al mismo tiempo, tiene como objetivo que el software entregado asegure los niveles óptimos de calidad desde una perspectiva global, donde calidad significa todo aquello que debe prevenir los defectos y potenciar la excelencia en el momento de la entrega, desde las diferentes perspectivas que un usuario pueda percibir.

En DevOps, la calidad de software es, por tanto, un principio fundamental, que debe ser transversal y continuo durante todo el proceso de entrega del software, de principo a fin. Por ello, las actividades de aseguramiento de calidad (QA) como el testing adoptan una destacable diversidad de formas (funcional, de rendimiento, de seguridad, de carga, de usabilidad…) y se abordan en distintos niveles (tests unitarios, tests de integración, tests end-to-end…). Este es también el motivo por el que debe hacerse hincapié en una metodología Dev(QA)Ops, con un cometido principal: lograr entregas rápidas con un alto nivel de calidad.

Para entender mejor Dev(QA)Ops y sacar el máximo partido de esta práctica, debemos tener en cuenta el decálogo de principios que lo imbuyen de sentido y utilidad.

1. En DevOps se requiere liderazgo (con foco en los procesos, personas y tecnología) y gobernanza. Las nuevas contribuciones de software necesitan ser gestionadas con sentido a través de flujos orquestados con la mayor automatización posible y que comprueben de forma sistemática que los umbrales de calidad son capaces de detectar los posibles defectos en cada potencial foco de generación de estos, para así impulsar el progreso de las versiones candidatas de software hacia su puesta en producción.

2. El sentido de equipo y los valores asociados son críticos. Por eso, en DevOps es necesario cultivar y adoptar una mentalidad ágil, con una visión única y compartida dirigida a cogenerar valor.

3. Las contribuciones de software deben fluir desde el código hasta su puesta en producción mediante una pipeline que coordine, para cada nueva entrega, una secuencia de acciones (compilación, creación de entornos, gestión de datos de prueba…) y validaciones contínuas de calidad (análisis de código, tests, métricas…) a través de quality gates con dosis de automatización. Cuando a través de este flujo se valida que existe un nivel de calidad suficiente, se asegura un despliegue en cada entorno de acuerdo con el riesgo asumible y definido en los quality gates. Como proceso tecnológico, el pipeline debe sustentarse en herramientas que impulsen la optimización de procesos para una entrega continua más fluida.

Dev(QA)Ops tiene un cometido principal: lograr entregas rápidas con un alto nivel de calidad

4. El desarrollo de software es un proceso de creación, por lo que entre sus valores se encuentran la creatividad, la mentalidad abierta y la creación colaborativa. Los artefactos en DevOps (historias de usuarios, contribuciones de código…) se apalancan en procesos de cocreación en los que, desde el comienzo del proyecto, intervengan diferentes roles de especialización y multitarea que lo enriquezcan (negocio, desarrolladores, testers, UX, arquitectos, ingenieros de infraestructura…). Además, el modelo de integración continua debe ser aplicado a través de un enfoque sistemático de ramas de código, contribuciones y fusiones con políticas claras.

5. Disponer de datos y analizarlos de manera avanzada es la base de la eficiencia. Es crucial, pues, utilizar los datos generados en los proyectos para incorporarlos como asistencia a las decisiones (manuales o automatizadas) en los entornos DevOps, utilizando la analítica avanzada y la inteligencia artificial como técnicas clave. Así se pueden mejoran las decisiones estratégicas —con automatización del análisis y la predicción de datos—, aplicar umbrales de indicadores de calidad autoadaptables y progresar con mayor eficiencia y anticipación a lo largo de la pipeline.

6. Uno de los principios que se ha consolidado en los últimos años es la usabilidad: en DevOps siempre debe aspirarse a mejorar la experiencia de usuario. Por eso, más allá de ser ágiles, en cada proyecto hay que velar por la calidad del software bajo todos los prismas que puedan afectar a la percepción de los usuarios.

7. La potencia de DevOps está impulsada principalmente por la automatización, que libera el tiempo de los empleados en tareas más rutinarias y permite ampliar su capacidad de trabajo en tareas especializadas y de creación de mayor valor. Por esto, en el entorno del desarrollo de software resulta crítico que los procesos de creación integren con más intensidad estrategias de automatización.

8. En relación con el punto anterior, el despliegue a los diferentes entornos y los despliegues finales a producción pueden ser automatizados o, según el caso, semiautomatizados. Para ello, son clave los enfoques cloud y su arquitectura, así como la generación y gestión de datos estructurados que permitirá avanzar en estos caminos.

9. La fuerza del DevOps como metodología está en aprovechar los conocimientos de un equipo multidisciplinar, por lo que la existencia de un canal de comunicación centralizado es crítico en la coordinación. En DevOps, los profesionales necesitan comunicarse y disponer de herramientas que se integran en el pipeline, que notifican e interactúan con otras herramientas y profesionales. En este sentido, irá ganando más popularidad el enfoque de ChatOps.

10. De igual manera que los equipos DevOps cuentan con profesionales especializados en diversos campos, las habilidades de esto no deben centrarse exclusivamente en aptitudes técnicas, sino que incluirán conocimientos de diversas áreas, incluyendo capacidades interpersonales como el liderazgo, la colaboración o el empuje de la industrialización de procesos de entrega de software. De esta manera, el perfil T-Shaped (o programador en forma de T) será cada vez más esencial, fomentando conocimientos de visión transversal y especialización técnica en algunas de las disciplinas necesarias en DevOps.

En definitiva, la era Dev(QA)Ops está aquí para quedarse y, apoyada por unos principios que le ofrecen potencia, agilidad y efectividad, promete dar un nuevo impulso al desarrollo de software con y de calidad.

Albert Tort, CTO Sogeti España y Director del SogetiLabs España