DevOps: Mejores Prácticas

Manuel Cubillo | 25 de agosto, 2020

En un artículo anterior, definimos DevOps como una mentalidad que le permite a una compañía mejorar constantemente su flujo de valor, adoptando una dinámica de trabajo fluida entre tres departamentos: desarrollo, operaciones y QA. Además, hablamos de los principios básicos que se deben aplicar para que la mentalidad DevOps predomine a lo largo de todo el proceso de creación de software.

Una vez que se conocen los principios básicos, es hora de entrar en acción. En este artículo, hablaremos acerca de una serie de prácticas clave para la buena implementación de una estrategia DevOps.

Pruebas Automatizadas Continuas

Uno de los aspectos clave de DevOps es garantizar la calidad desde el inicio. Correr pruebas lo antes posible y tan menudo como sea posible es la única forma de garantizar un código de calidad. Aquí es donde entra en juego el equipo de QA. Entre más competentes sean estos especialistas en pruebas, mejor será su asistencia a la hora de asegurar la calidad. La mayor contribución del equipo de QA es la implementación de pruebas continuas. 

Ésta es la ejecución de pruebas de principio-a-fin a través de todas las etapas existentes del ciclo. Se puede aplicar a todo tipo de desarrollo de software. El propósito de las pruebas continuas es detectar errores lo antes posible, lo cual significa que solucionarlos será más fácil y más económico. En general, reduce cualquier riesgo al plazo de entrega y garantiza que cualquier cambio realizado en el código pueda ser desplegado en cualquier momento; de este modo, el software es entregable en todo momento.

Esto no se puede lograr sin la automatización de pruebas: la práctica de aplicar herramientas y frameworks para crear un script que automatiza las pruebas comunes (aquellas que verifican la funcionalidad del software). Al automatizarlas, éstas se pueden correr en cualquier momento del proceso. Ejecutar pruebas automatizadas constantemente permite que cualquier problema se solucione apenas sea detectado, lo cual significa que la calidad del código será mucho mejor.

Integración Continua

Como es usual en DevOps, todas las prácticas se complementan y se refuerzan mutuamente. La integración continua (CI por sus siglas en inglés) combina un conjunto de herramientas, premisas y prácticas que aceleran la entrega de software de alta calidad. Se eliminan los embotellamientos (como por ejemplo, las pruebas manuales) y se minimiza el riesgo de que surjan problemas técnicos en las últimas fases del ciclo de lanzamiento. Con CI, los equipos construyen el software y corren pruebas unitarias cada vez que un desarrollador añade código nuevo al repositorio. Así, acortar los ciclos de retroalimentación se hace más fácil, agilizando las respuestas a las demandas del mercado y erradicando errores rápidamente. CI le permite a los desarrolladores crear soluciones de primer nivel en una serie de pasos cortos y rutinarios. Al brindar retroalimentación instantánea, el código se revisa y se modifica regularmente. Una vez más, la calidad queda garantizada desde el inicio. 

CI implica otro hábito crucial: integrar código constantemente. Si se aspira implementar una estrategia DevOps, lo último que se quiere es integrar cambios en el código fuente con poca frecuencia, particularmente si se hace en las últimas fases del ciclo. Una integración continua del sistema monitorea el repositorio en todo momento. Cuando se añade código, el servidor CI actualiza los cambios más recientes y construye el software. Ejecutar un compilador sobre todo el código actualizado puede identificar numerosos problemas (dependencias que hagan falta, problemas de módulo/interfaz, errores de sintaxis que no han sido detectados, para nombrar algunos). Realizar esta tarea constantemente transformará la integración de código en una serie de pasos más pequeños, más frecuentes, y mucho más manejables. Algo tan sencillo puede tener efectos impresionantes y puede mejorar el desempeño del equipo dramáticamente.

Despliegue Continuo

Esta es una extensión de la práctica anterior. Con un despliegue continuo, cualquier cambio que se le haga al código pasa por todo el proceso y se promueve sistemáticamente al siguiente ambiente de prueba, donde la integración sucede automáticamente. Por lo general, esto continúa a través de todo el proceso hasta que en algún momento se requiere de una aprobación manual (generalmente durante la transición entre desarrollo y operaciones). Es este paso manual que el despliegue continuo revoluciona: lo automatiza. Esto significa que cualquier versión actualizada del software que funciona pasa a producción sin ningún tipo de interacción humana. 

Gracias al despliegue continuo, desarrollo puede disminuir el tiempo que transcurre entre cambiar/añadir una funcionalidad al código y su despliegue a producción. En otras palabras, la capacidad de respuesta del negocio mejora.

Monitoreo Continuo

Cuando un software pasa a la etapa de producción, es el equipo de operaciones el que se hace cargo. Se aseguran de que el software funcione correctamente. Para lograrlo, deben de vigilar el ambiente en todo momento, así garantizando su estabilidad. El monitoreo continuo es un proceso que constantemente modifica y ajusta las herramientas de monitorización (o su configuración). Aquí es donde, una vez más, la automatización es crucial: es el pilar de esta práctica. Le permite a operaciones mantener actualizada la configuración en medio de los crecientes cambios que se pueden dar dentro de una infraestructura. 

Sin embargo, como la esencia de DevOps es “shift left”, es importante incluir otro elemento de esta práctica: el monitoreo proactivo. También conocido como monitoreo sintético, lo que hace es emular usuarios reales para llevar a cabo ciertas acciones o utilizar funcionalidades clave del software que se está creando. En vez de monitorear interacciones reales, supervisa lo que el usuario encontraría en la realidad. Implementar este tipo de monitoreo significa que se pueden identificar y rectificar errores antes de que cualquier usuario interactúe con el software - la prevención es clave. El monitoreo proactivo funciona como un mecanismo de alerta temprana. En contraste al enfoque tradicional de monitorear solamente durante las últimas etapas (producción y despliegue), esta práctica monitorea los ambientes de pre-producción. De este modo se obtiene una visión continua del desempeño. Se puede considerar como un monitor cardiaco para software, uno que lleva un registro del desempeño al desplegar nuevas versiones en diferentes ambientes. Al validar las nuevas versiones del software en tiempo real y asegurándose de que funcionan como deben, se puede desplegar con confianza.

El Secreto es la Adaptabilidad

Es importante recordar que no existe una receta única para implementar DevOps: lo que funciona bien para algunas compañías no aplica para otras. Una estrategia DevOps varía de negocio a negocio y de proceso a proceso; por lo tanto, la forma en que se implementan las prácticas anteriores también varía. Así que lo mejor es analizar la situación, ver cuáles opciones son viables e introducir las prácticas DevOps que mejor se acoplen a las necesidades de la empresa.

.Contáctenos

Contenido

Categorías

Compartir Artículo

Artículos Destacados