DevOps: algo más que tecnología, todo un cambio de cultura

El desarrollo de software ha cambiado.

Así de sencillo y así de complejo: reconocer los cambios y subirnos al carro… o quedarnos en tierra.

Hemos pasado de los modelos de ciclo de vida secuencial hacia la agilidad, hacia la velocidad de despliegue, la iteración, el incremento hasta conseguir el producto terminado. Pese a que siempre habrá promotores y detractores de esta evolución, la realidad se ha empeñado en demostrarnos que estos cambios de cultura nos están proporcionando mayores avances que los que sólo afectaban a procesos o herramientas. Pero ojo, no es nada sencillo… hablamos de cambios en la organización… esos son cambios en las personas,… los más difíciles de conseguir, y es que las personas por naturaleza nos acomodamos en nuestra zona de confort y a veces hay que sacarnos a empujones…

Nadie ha dicho que evolucionar sea fácil, pero en el fondo todos sabemos que el que no evoluciona no sobrevive… Pongámonos, pues, manos a la obra … sin prisa, pero sin pausa, sin perder de vista el objetivo final pero siendo plenamente conscientes de que sólo yendo paso a paso, de uno en uno y sin correr, podremos llegar sanos a nuestro destino. La implementación de DevOps tiene más de maratón que de 100 metros lisos. Es un esfuerzo continuado, poco a poco, controlando cada hito, cada etapa, para no caer rendidos en el kilómetro 34, sino optimizando nuestros recursos para conseguir nuestra meta.

Pero no es una evolución por capricho ni por quedarnos fuera del mercado, es una evolución necesaria para mejorar. Cuántos de nosotros no hemos sufrido o sufrimos cada vez que tenemos que hacer una subida a producción, cuántos no hemos tenido a todo el mundo encima de nosotros porque se ha producido un error en producción y no conseguimos dar con la solución, cuántas veces nos han presionado con la pérdida de negocio que puede ocasionar a nuestras organizaciones, cuánto tiempo hemos invertido y seguimos invirtiendo en rehacer el trabajo, cuántas veces los errores humanos nos llevan a hacer una mala entrega, cuántos cientos de horas invertimos en el control de versiones, cuántas veces perdemos el foco intentando arreglar errores … Si está en nuestras manos trabajar sólo una vez, que sólo nos tengamos que preocupar por desarrollar y no por saber qué versión estamos tocando, si podemos centrarnos en lo que realmente requiere de nuestra inteligencia humana y el resto lo podemos automatizar … ¡hagámoslo!

Os proponemos algunos pasos, para empezar…

  • Involucrar al personal de operaciones: Los equipos de operaciones deben estar involucrados en el proyecto desde el principio para ayudar en la definición de sus propios requisitos y sus criterios de aceptación. Además, deberemos tener especial cuidado con la priorización de requisitos para que los problemas no afloren en producción.
  • Coordinación entre equipo de desarrollo, QA y Operaciones. Durante la fase de desarrollo, los equipos de desarrollo y QA deben estar centrados en implementar los requisitos y satisfacer los criterios de aceptación tanto funcionales como no funcionales. Para automatizar los procesos de Construcción, Test y Despliegue necesitaremos poder contar con entornos que se asemejen lo máximo a producción. Tenemos que pedir ayuda a Operaciones, que son los que realmente conocen estos entornos.
  • Integración continúa y despliegue continuo. El uso de integración continua nos permitirá automatizar los procesos de Construcción, Test y Despliegue y esto nos ayudará a acortar enormemente los ciclos de entrega. Estos procesos pueden llegar a ser muy complejos y más si hablamos de entornos en producción, en los cuales normalmente no está demasiado bien visto “toquetear”. Existen múltiples herramientas para esta automatización de procesos… elige la tuya o ¡busca quien te ayude a elegirla!
  • Gestión de incidencias. Una vez que estamos en producción, uno de los temas que más nos debe preocupar es contar con herramientas que nos ayuden a monitorizar las aplicaciones, diagnosticar los errores que se produzcan y poder hacer llegar dicha información al equipo de desarrollo para su resolución, si procede. Todo esto nos ayudará a reducir enormemente el tiempo de resolución de los errores en producción.

¿Preparados para el cambio?… ¡Nosotros ya nos hemos subido a DevOps!