¿Estás cansado de vivir largas pesadillas, que duran meses, salpicadas de retrasos, problemas y caídas de servicio, cada vez que pides a tu equipo IT un sencillo cambio en tu producto digital? ¿Te has resignado a perder competitividad y no evolucionar tu producto sólo por evitar estos problemas?

Cuando ésta es la sensación del responsable de negocio de un producto digital, cuando cualquier modificación de software, por pequeña que sea, enciende las alarmas de la empresa y pone a todo el equipo IT en estado de alerta, se pone de manifiesto que su forma de desarrollar software no es la adecuada.

Continuous Delivery, DevOps y Cloud: Cómo desarrollar software profesional con el time to market del siglo XXI

Mientras el negocio vive forzosamente bajo el yugo del time to market del siglo XXI, las áreas de IT de muchas empresas se han quedado en la prehistoria, utilizando modelos y herramientas de desarrollo software obsoletos, que les hace incapaces de poner en producción una sencilla modificación de software en un plazo razonable.

Sólo unas pocas compañías punteras son capaces de dar respuestas ágiles a los retos del mercado e incluso se pueden anticipar a las necesidades de sus clientes. El resto sigue viviendo una realidad en la que el time to market es sólo una frase en inglés.

¿Por qué la mayoría de las empresas tardan tanto en implementar cambios en un sistema? ¿Cómo se llega al futuro (que ya es presente) en el desarrollo de software donde los cambios se ponen en marcha inmediatamente?

1 Un muro invisible que lastra la competitividad

Desde que surge una necesidad en el entorno de negocio y se realizan los cambios oportunos en el software para darle respuesta, hasta que dichos cambios se ponen en producción, transcurre necesariamente un período de tiempo, que puede ser enormemente largo –alcanzando hasta 7, 8 o 9 meses- si se trabaja con herramientas y modelos de desarrollo software clásicos.

Tradicionalmente las áreas de Desarrollo se rigen por directrices de adaptación al cambio y de generación de nuevas funcionalidades en las aplicaciones; y las áreas de Sistemas se guían por el principio de la estabilidad y el aseguramiento de que las aplicaciones funcionen.

Sin las herramientas y modelos de trabajo adecuados, se crea un ‘muro de la confusión’ entre Sistemas y Desarrollo. Cada área cumple su misión, pero a costa de un enfrentamiento claro en el que el gran sacrificado es el time to market que exige el mercado.

Ante un cambio, los profesionales de Desarrollo pensarán que si todo funciona en su entorno de pruebas deberá funcionar también en el entorno de producción, y achacarán cualquier problema a los profesionales de Sistemas. De igual forma, en Sistemas pensarán que el problema es de Desarrollo si ahora las cosas no funcionan y antes sí lo hacían. Conforme crecen el número de elementos hardware y su heterogeneidad, la posibilidad de error crece exponencialmente. Resolver estos problemas lleva tiempo, y la solución tradicional es habilitar ventanas de tiempo de despliegue en producción muy amplias (meses).

Existe un muro invisible, pero real, que impide dar una respuesta satisfactoria a las necesidades del negocio. Y el time to market en estas condiciones es demasiado largo.

2 Las claves de mejora del time to market: automatización de procesos, y modelo de trabajo

Una vez que el equipo de desarrollo ha hecho un cambio en una aplicación para responder a las necesidades de negocio, son varios los pasos necesarios para ponerlo en producción: propagar el cambio al código de la versión que está en producción, identificar las dependencias con librerías o frameworks en sus versiones correctas, hacer pruebas de integración, generar los artefactos a desplegar, adaptar las configuraciones de las máquinas de producción y, finalmente, desplegar una nueva versión.

Las estadísticas indican que el 80% del downtime de un sistema se debe al despliegue de nuevas versiones de software, una cifra alarmante en un entorno de negocio en el que el cambio es lo permanente. Tal vez por ello se repite tanto la frase: "Si funciona, mejor no tocarlo".

Si se analiza esta situación en perspectiva, en busca de soluciones, se detectan dos necesidades: la automatización de procesos y la mejora del modelo de trabajo entre Desarrollo y Sistemas en cada fase del proceso.

Los procesos escasamente automatizados y los conflictos entre Desarrollo y Sistemas hacen que los tiempos de puesta en producción de un sistema se midan en meses. Y el time to market está así muy lejos de lo deseado.

3 Del diagnóstico a la acción. La hora de evolucionar

Muchas empresas han comprendido la importancia de evolucionar sus herramientas de soporte al desarrollo software y sus modelos de trabajo para no sentirse en la prehistoria de la tecnología. O lo que es lo mismo: a la cola de la competitividad.

Una primera oleada de innovaciones en el soporte al desarrollo de software ya permitió hace tiempo a algunas de estas compañías alcanzar un estado más competitivo. Las herramientas de construcción automática, las primeras herramientas de control de versiones o las de integración continua supusieron un gran avance en la dirección adecuada. Y, junto con las metodologías ágiles, han permitido que muchas empresas mejoren sensiblemente su time to market.

En las empresas que han adoptado estas innovaciones, los equipos de Desarrollo cuentan con herramientas automatizadas que reducen sustancialmente los tiempos de integración. Parte de los equipos de Sistemas ya trabajan tímidamente integrados con los equipos de Desarrollo precisamente para mantener esas herramientas. Es la semilla de un nuevo modelo de trabajo en el que Desarrollo y Sistemas son parte de un mismo equipo -el modelo DevOps-.

Las ventanas de tiempo para las pruebas de integración disminuyen hasta casi cero, pero las de puesta en producción se mantienen. Y, sobre todo, el ‘muro invisible’ entre Desarrollo y Sistemas sigue estando en su mayor parte en pie.

Se ve un avance hacia la madurez en el desarrollo de software gracias a la automatización de procesos y a la integración parcial entre los equipos de Desarrollo y Sistemas. Pero muchos problemas siguen sin solucionarse, y el time to market ideal sigue lejos.

4 ‘Continuous Delivery’ y ‘DevOps’: la segunda oleada de innovaciones

Las nuevas herramientas de soporte al desarrollo de Continuous Delivery, y el modelo de trabajo DevOps, marcan un antes y un después en el desarrollo software profesional. Estas soluciones, que permiten automatizar completamente el proceso de despliegue en producción, cambian radicalmente la forma de desarrollar y desplegar el software, ya que si algo funciona en la máquina de un desarrollador, el funcionamiento en producción está garantizado.

Estas herramientas permiten la configuración automatizada de dónde se despliega cada parte de la aplicación y qué configuración específica necesita cada máquina, en función de sus características físicas y sistema operativo. De este modo, no es necesario preocuparse en cada despliegue de estas configuraciones específicas, y se puede automatizar completamente el proceso de despliegue, con la garantía de que si algo funciona en la máquina de un desarrollador, va a funcionar exactamente igual en producción.

En este escenario ya no son necesarias las tareas manuales de despliegue, configuración y pruebas. El equipo de Sistemas se centra únicamente en mantener y configurar estas herramientas de soporte al desarrollo, y trabaja de forma completamente integrada con el equipo de Desarrollo. Hemos llegado así al concepto de DevOps: se disuelven las fronteras entre Sistemas y Desarrollo.

Se alcanza un grado casi total de automatización de procesos y de aseguramiento de calidad, y un nuevo modelo de trabajo en el que se ha derribado el ‘muro de la confusión’ entre las áreas de Desarrollo y Sistemas, que trabajan conjuntamente. El tiempo de puesta en marcha puede medirse en días, y el time to market óptimo es una realidad cercana.

5 -‘Continuous Deployment’, y ‘Cloud’: la excelencia en el desarrollo de software en el siglo XXI

Cuando las herramientas de soporte al desarrollo han evolucionado lo suficiente para dar una buena respuesta a las necesidades del negocio, y el modelo de trabajo DevOps elimina los conflictos entre Desarrollo y Sistemas, la capacidad del hardware es el último cuello de botella que puede retrasar la puesta en producción. El escenario para un time to market óptimo requiere así de un modelo aún más evolucionado, apoyado en capacidades Cloud.

La capacidad de Continuous Deployment se adquiere cuando se despliegan todas las herramientas de Continuous Delivery en una infraestructura Cloud, junto con el propio hardware virtualizado, pasándose así al concepto de Platform as a Service (PaaS).

El equipo de Sistemas se dedica a mantener la nube y los sistemas de soporte al desarrollo, pero lo hace desde una perspectiva global, para todos los proyectos o productos.

Para los equipos de Desarrollo la flexibilidad es absoluta, porque además de poder desplegar con seguridad, no necesitan prever con antelación necesidades de carga o picos de tráfico. La nube es elástica y se adapta en tiempo real a las necesidades. Alcanzamos el santo grial del desarrollo software profesional: el tiempo de puesta en producción es prácticamente inmediato.
Las compañías que ya trabajan con este modelo (Netflix, Google, Facebook, Etsy, LinkedIn), han conseguido que las áreas de negocio puedan tomar decisiones y verlas implementadas near to real time.

“Our developers never have to have a meeting with ITops, or file a ticket asking someone from ITops to make a change to a production system, or request extra capacity in advance. They used to spend hours a week in meetings with Ops discussing what they needed, figuring out capacity forecasts and writing tickets to request changes for the datacenter. Now they spend seconds doing it themselves in the cloud”

Adrian Cockcroft, director of cloud systems architecture for Netflix (marzo 2012)

¿Cómo puede ayudar Paradigma a alcanzar este nivel de madurez?

[caption id="attachment_2485" align="aligncenter" width="800"]

Paradigma desarrollo web

Paradigma Digital garantiza un modelo de trabajo de alto rendimiento.[/caption]

La gran mayoría de herramientas que han permitido estos enormes avances están basadas en software libre. Esto tiene la ventaja de que no tienen coste de licencia, pero son muchísimas las alternativas y no todas son fiables o adecuadas para todos los escenarios.

Montar el ecosistema de herramientas adecuado para poner en marcha un modelo DevOps y desarrollar software profesional de forma moderna, requiere mucha experiencia y conocimiento de las alternativas a nuestra disposición. Si queremos estar ya en el máximo nivel de madurez apoyándonos en Cloud, aún se complica más el panorama de opciones. El apoyo de un socio tecnológico que nos ayude a llegar a buen puerto y mantener en cada momento la mejor selección de herramientas y/o proveedores es fundamental.

Paradigma Digital ofrece una suite completa y cohesionada de productos de soporte al desarrollo profesional, basada en una aproximación best of breed al ecosistema de productos open, junto con un modelo de trabajo que permite sacarles el máximo rendimiento.

Además, entendemos que raramente empezamos de cero, y los planes de cambio tipo big bang en procesos tan asentados dentro de las compañías no suelen dar buen resultado; por eso ayudamos a nuestros clientes a trazar el plan de transición adecuado para conseguir entrar cuanto antes en el siglo XXI del desarrollo software profesional.

El time to market ya no se mide con el calendario, se mide con el reloj. Es hora de tomar decisiones.

Cuéntanos qué te parece.

Los comentarios serán moderados. Serán visibles si aportan un argumento constructivo. Si no estás de acuerdo con algún punto, por favor, muestra tus opiniones de manera educada.

Suscríbete

Estamos comprometidos.

Tecnología, personas e impacto positivo.