intive Argentina Blog

Una verdadera cultura DevOps

Normalmente los equipos de desarrollo se desentienden de lo relacionado a lo que llamamos producción, no son realmente parte de todo el proceso de creación de un producto de software. Un equipo que adopta una cultura de DevOps, en cambio, podría definirse como aquel que está involucrado y es responsable del proceso en su totalidad: desde la creación de las historias de usuario hasta cómo nuestra aplicación se comporta en ambientes productivos.  La toma de decisiones sobre dónde, cómo y cuándo vamos a poner nuestras aplicaciones a disposición de los usuarios, empodera al equipo y le da una visibilidad de la gran pintura que es el negocio.

Naturalmente entendemos que DevOps es solamente un rol que se asume por alguien dentro de un equipo de desarrollo ágil. Pero hablar de una cultura de DevOps es hacer partícipe a todo el equipo en la toma de decisiones y las responsabilidades de lo que construimos, buscando una visión holística e integral del negocio. Cuando designamos a una persona “DevOps”, la responsabilidad de lo que sucede con lo relacionado a la infraestructura recae en solo un miembro del equipo, quien también asume la toma de decisiones en las cuales podrían contribuir otros miembros del equipo.

Creando una cultura DevOps

La base para una cultura DevOps efectiva es que dentro del equipo exista una comunicación efectiva, retroalimentación y búsqueda de mejora en los procesos. Cuando estos elementos están presentes grandes cosas van a suceder.

Me gustaría enfocarme en cómo, desde un inicio, un equipo que apenas empieza puede trabajar con una cultura Agile que incluya valores de DevOps. Para empezar, tenemos que tener en cuenta que:

  • Nuestras aplicaciones van a vivir en un ambiente productivo, donde pueden ocurrir diferentes situaciones. El equipo tiene que hacerse responsable de lo que suceda y debe implementar planes de contingencia y seguridad, métricas y alertas que ayuden a identificar situaciones no esperadas como: caídas del sistema, mantenimientos y fallas, entre otros.
  • Existirán historias relacionadas a intereses del negocio y no directamente a agregar valor para el usuario. Así y todo, esas historias facilitarán otras tareas de mantenimiento de la aplicación en ambientes productivos.
  • Nuestro equipo debe enfocar su esfuerzo en agregar valor al negocio, por eso los equipos tanto de desarrollo e infraestructura deben comunicarse y entenderse.

La integración y comunicación desde etapas tempranas entre todas las áreas que participan en el desarrollo del producto logrará que podamos resolver muchas cuestiones con anticipación y, evitar errores o desacuerdos que serían graves para una última fase del desarrollo.

Por ejemplo, en mi experiencia personal muchos proyectos caen en un error, generando un retraso importante en la entrega, que consiste en dejar todo lo relacionado a ambientes de desarrollo y producción para etapas muy avanzadas del producto. Así que, cuando el despliegue de nuestra app ya es inminente y se nota la necesidad de hacer pruebas más profundas, empiezan a surgir problemas: desde inconvenientes en el diseño y la implementación, hasta problemas a la hora de la puesta en escena en producción.

En otros proyectos, en los que se toma en cuenta la creación de ambientes y se plantea en etapas tempranas el definir cómo movemos nuestras aplicaciones a producción, se generan discusiones anticipadas que permiten llegar al momento de la puesta verdadera en escena con problemas mucho más fáciles de resolver. En ese punto del proceso ya se han solucionado los temas más importantes y estamos familiarizados con la infraestructura.

Incluir historias de usuarios desde el principio, no solamente nos facilita la salida a producción sino también el planteo temprano de otros temas y necesidades que incumben a otros equipos, como el de calidad. Por ejemplo, podemos definir cómo hacer las pruebas de manera automática y en qué punto del flujo de desarrollo queremos que esto suceda. También, cómo podemos realizar pruebas en diferentes tipos de escenarios donde podemos manipular las condiciones de infraestructura con el fin de tener conocimiento acerca de qué sucederá con nuestra aplicación bajo ciertas condiciones.

El ADN DevOps

Planificar, construir e integrar automáticamente. Lanzar, monitorear, evaluar, adaptar y, después de todo eso, repetir indefinidamente. Eso es parte del ADN que nuestro equipo, que incluye a la infraestructura como un proceso, debe tener desde el momento de empezar a trabajar.

Rodolfo Cordero

Rodolfo Cordero es desarrollador en la compañía desde junio de 2016. Es Licenciado en Desarrollo de Software, graduado de la Universidad Latina de Costa Rica, país del cual es oriundo. Asiduo lector y melómano, hizo cursos de coctelería y barismo, habilidades con las que deleita al staff de intive en los afters organizados por la compañía.

Deja un comentario