A estas alturas, y por muy despistado que estés, si estás ligado con el desarrollo de software, es muy difícil que no hayas escuchado hablar de DevOps. Según a quién preguntes, podrá decirte que es una cultura o una práctica que usa una mezcla de metodologías y se apoya en distintos tipos de herramientas para hacer una entrega de software más rápida y eficiente. Aunque, desde nuestro punto de vista, lo más importante y con lo que nos quedamos es que ayuda a fomentar la unión y comunicación de los principales roles en el proceso de desarrollar un producto.

¿Qué es DevOps?

Como dice el refrán: “en la unión está la fuerza”; no importa si estás en una de las cinco grandes empresas tecnológicas o en una Startup probando su primer MVP, la cultura DevOps te ayudará mucho. Esta filosofía, además de darle un giro al cómo se relacionan las distintas etapas del desarrollo de software, también cambió para siempre la manera en cómo se desarrolla el software hoy en día.

Pero llegar aquí no todo fue color de rosas, antes del cambio de paradigma las cosas eran muy distintas y podríamos decir que “demasiado burocráticas” si hablamos desde el punto de vista ágil. Cuentan nuestros más experimentados, que en aquellos tiempos la comunicación entre los equipos no era muy fluida y que cada equipo estaba en lo suyo sin dar mucha importancia a las necesidades de los demás equipos. Esto hacía que se arrastrara una serie de inconvenientes que afectan directamente al desarrollo del producto.

La vida del desarrollador antes de DevOps, con qué retos se solía encontrar

Síntomas de aquella época sin cultura DevOps:

  • Motivaciones distintas y no alineadas de los distintos equipos.
  • Compartir el código entre equipos sin control de versiones.
  • Poca o nula automatización de los procesos.
  • Silos de información entre los equipos con muros entre ellos donde el sentido de pertenencia empieza y termina dentro del mismo equipo de trabajo.
  • Entornos de desarrollo y pruebas con configuraciones distintas, muchas veces generadas manualmente y con problemas de integración entre entornos.
  • Identificación de fallos en producción, haciendo que el equipo de trabajo se detenga para corregir dichos fallos y perdiendo el foco del desarrollo.

Ahora podemos mirar atrás y preguntarnos cómo era posible llevar a cabo un desarrollo con tantas barreras y problemas. Podemos simplemente decir que eran tiempos distintos y con la adopción de la cultura DevOps se evolucionó de un modelo problemático y complejo, a un modelo más colaborativo, automatizado y ágil.

Poco a poco, con esos primeros evangelizadores de la cultura DevOps, fue integrándose como parte fundamental del desarrollo de software. La clave de adoptar esta cultura fue el impacto directo que tuvo en el producto final, ya que con equipos que tienen una mejor comunicación y coordinación son capaces de:

  • Publicar features más frecuente con mayor control y visión de todo el proceso incrementando la productividad.
  • Tener una colaboración y comunicación real en todo momento del estado en todos los puntos del desarrollo. Esto alinea a todos los equipos en una misma dirección y concentra los esfuerzos en un mismo punto.
  • Generar un feedback loop infinito muy importante en donde los silos de información desaparecen, todos hablan el mismo idioma y aportan ideas o soluciones donde el producto es el mayor beneficiado.
  • La seguridad se ve mejorada y es más robusta, ya que al estar en sintonía todos los equipos se tiene una visión global de los puntos débiles del producto.
  • Aumento de la ventaja competitiva con la exposición de funcionalidades más rápido y continuado.

El flujo de trabajo infinito

Para llegar a esto se debe cambiar la mentalidad y abrir la mente con un espíritu de colaboración, esto puede ser especialmente complejo que requiere el trabajo constante de todos en todos los niveles. Al final, se define visualmente con el símbolo de infinito en donde todas las etapas están relacionadas unas con otras siguiendo un flujo lineal que nunca termina y logrando una mejora continua, orgánica y sostenible en el tiempo.

El esquema lineal y plano, comienza con una planificación desde el punto de vista de negocio con un roadmap, dando una dirección a todos los integrantes del equipo. Luego, el desarrollo materializa las ideas y los planes de negocio implementando las features alineadas al plan. 

La integración continua se encarga de automatizar la revisión, validación y pruebas de las features desarrolladas, y es aquí donde debemos probar exhaustivamente que no hemos roto nada y que lo nuevo a ser implementado está alineado con el plan inicial. Si todo está bien, se procede al despliegue o puesta en producción, a ser posible lo más automatizado posible, limitando la intervención manual y los errores humanos al mínimo.

Una vez las features llegan a producción hay que velar por el buen funcionamiento y desempeño mediante la monitorización del estado de la aplicación. Es aquí donde con los datos obtenidos tenemos un feedback que permite al negocio tomar las decisiones pertinentes y constatar si seguir por el camino actual o pivotar en otra dirección según los intereses y los datos obtenidos.

Conclusiones

DevOps es una cultura que rompe los muros entre los distintos equipos y los hace más productivos. Gracias a ello, el producto evoluciona con mayor rapidez, impactando directamente en clientes y consumidores.

Referencias:

  • The Phoenix Project, Gene Kim
  • DevOps Handbook, John Willis

 

Imagen: Unsplash | @markusspiske