spinner

DevOps más que una herramienta, una cultura de productos para el cliente

En la actualidad cuando hablamos sobre DevOps hay un tanto de confusión respecto a qué nos referimos cuando se menciona este término. Una búsqueda en portales de empleo arroja resultados como “Ingeniero DevOps”, “Desarrollador DevOps”, “Arquitecto DevOps”, “Security DevOps” o simplemente “DevOps”. Los requisitos pueden ser variados y en ocasiones son una larga lista de carta a Santa Claus, buscando conocimientos técnicos extensos.

Cuando hablamos de implementar DevOps en una organización, en automático se remite a utilizar herramientas de software tales como Jenkins, Docker, Ansible, Terraform, Python, Chef, etc. También conceptos tales como “integración continua”, “despliegue continuo” o similares y que para lograr esto debemos contratar o capacitar a una persona o empresa que se encargue de estas tareas.

DevOps, una cultura más que una práctica. Fuente: opcito.

Tenemos la idea de que al implementar DevOps en nuestra empresa, vamos a dar un salto cualitativo y cuantitativo en los tiempos de desarrollo y la calidad de lo que producimos, respondiendo a la frenética necesidad de entregar cosas y productos lo más pronto posible.

En estos días es bastante común oír de un cliente “tenemos un sistema monolítico y lo queremos convertir a contenedores, necesitamos un DevOps que nos ayude en eso”. Con la idea de que al implementar Jenkins, Bitbucket, y crear un cluster de Docker en la nube vamos a poder realizar este proceso fácilmente.

Pero DevOps debemos entenderlo “más allá del uso de herramientas técnicas”, no por contratar a una persona o empresa que domine el software antes mencionado va a mejorar nuestra producción de software y aplicaciones. No es una solución mágica que va a venir a resolver los problemas de desarrollo y entrega de productos. Si lo vemos de esta manera nos limitamos a los alcances y fortalezas que el modelo DevOps puede brindar a una organización.

Ahora bien, ¿qué planteamiento queremos hacer?, que DevOps no es únicamente el uso de un sin fin de herramientas tal parece que mientras más se usen, mejor, sino que esto va más allá, DevOps es similar a movimiento Agile que se está implementando en diferentes tipos de empresas, que lo que busca es eso, volver ágil el desarrollo de los productos, aplicaciones, software, etc. No se limita exclusivamente a desarrollo de software siempre pensando y poniendo en primer lugar lo que el cliente interno o externo está solicitando y espera como resultado.

Agile y DevOps parten de la misma idea, entregar productos y mejoras de una manera más rápida a los clientes, ir creciendo dichos productos y hacerlo de manera constante. DevOps no es el uso de herramientas técnicas, se basa en dichas herramientas para la entrega de resultados a los clientes.

DevOps no es sólo tecnología, es una cultura de desarrollo de productos enfocada en el cliente, basada en la colaboración del equipo de trabajo dentro del proyecto, no sólo de las personas de Desarrollo y Operaciones. Este enfoque es muy similar a lo que se menciona para Agile: el trabajo iterativo, incremental y evolutivo para la entrega de un producto.

Stakeholders y flujo de comunicación en un proceso de IT. Fuente: Gurú.

 

Esto también es parte de un proceso de cambio cultural dentro de la organización. Al implementar una metodología Agile/DevOps buscamos mejorar los tiempos de entrega de nuestros productos, crear entornos diferentes (dev, qa, prod) pero con características similares, pensar en pequeñas entregas funcionales en vez de aplicaciones completas, identificar los errores en etapas tempranas del desarrollo, permitir a los desarrolladores desplegar sus cambios de manera automatizada, monitorear los pasos de este proceso y el funcionamiento en general, son enunciados de una cultura DevOps. La parte técnica se apoya fuertemente en la automatización de tareas para el despliegue de estos productos.

Se mencionaba el ejemplo “pasar de monolítico a microservicios” como parte de las tareas que le encomiendan a un DevOps. Pero este tipo de proyecto requiere de una involucración de todas las personas del equipo, desde un Product Owner que comprenda la visión de a dónde se quiera llegar, el Scrum Master que organice el trabajo del equipo, los integrantes del Scrum Team que entiendan la nueva forma de trabajo por periodos cortos de tiempo similar a los Sprints de SCRUM pero siempre con el objetivo de entregar un producto o mejora real al cliente.

La imagen más común cuando hablamos de DevOps es la siguiente:

Flujo Dev Ops. Fuente: medium.

 

Lo que trata de expresar son las diferentes fases dentro del desarrollo de un producto pensando en las entregas que se van realizando al cliente, estos pasos son los que buscamos generalmente automatizar en nuestros proyectos con herramientas tales como Jenkins, Maven, SonarQube, Artifactory, Docker, Kubernetes, entornos Cloud. Hablamos que DevOps es facilitar la vida a los desarrolladores de software, pero en verdad es facilitar la vida a los clientes.

Del lado técnico, DevOps apoya en las tareas de automatización de las entregas de software: desde el momento en que el Desarrollador coloca su código en un repositorio central lo cual puede suceder muchas veces en un mismo día, dependiendo del tamaño del equipo, las diferentes herramientas DevOps ayudan para labores tales como compilar el código, verificar la calidad del mismo, realizar pruebas unitarias, crear imágenes para ser usadas en contenedores, actualizar el entorno de trabajo, avisar de una nueva versión liberada, etc.

 

Dev+Ops. Fuente: dzone.com

 

Todo lo anterior a través de un proceso automatizado que puede poner en producción un nuevo cambio en cuestión de pocos minutos, además de implementar mecanismos de monitoreo en cada uno de estos pasos y en la operación del software. Es en estos pasos donde DevOps apoya para entregar rápidamente productos y entregables mediante la automatización.

Un entorno DevOps nos debería de entregar un modelo “PaaS” (Platform as a Service) disponible para que los equipos puedan comenzar a utilizarlo de inmediato, tomando los elementos necesarios para el despliegue de sus aplicaciones.

Conclusión:

DevOps es bastante más que el instalar, configurar y operar software para automatizar el despliegue de aplicaciones. DevOps implica un cambio de mentalidad en la forma de trabajar de los equipos de trabajo, poniendo al cliente como objetivo principal buscando hacer entregas rápidas de productos, ir creciendo estos y adaptarse a los cambios solicitados. Todo esto basado en la automatización con herramientas de software, en un enfoque de trabajo Agile.

 

Imagen: pexels.com

Las opiniones vertidas por el autor son enteramente suyas y no siempre representan la opinión de BBVA Next Technologies.

¿Quieres saber que más cosas hacemos en BBVA Next Technologies?