Hace ya algunos años, recuerdo que en un banco en el que trabajé, teníamos una “ventana” de despliegue dos veces al mes (dos jueves). Es decir, únicamente había dos días al mes en los que podías desplegar algo en el entorno de Producción. No sólo eso, además tendrías que hacer la petición como una semana antes… es decir, si querías desplegar alguna nueva funcionalidad tendrías que tenerla lista como 10 días antes del paso a Producción. Todavía más, cada paso por el entorno previo tardaba una semana al menos, así que si tenías un cambio en el entorno de Integración o Desarrollo, podías contar aproximadamente con un mes para ver ese cambio en el entorno de Producción… todo muy ágil ¿no?.
Evidentemente se trataban de otros tiempos. Las aplicaciones eran aplicaciones silo que tenían una base de usuarios (en este caso empleados del propio banco), el ciclo de vida de la aplicación se contaba en años y se quería máxima estabilidad en un proceso crítico (el paso a producción) que era como un parto.

Nuevos tiempos

En mi opinión, si hacemos una nueva aplicación o un conjunto de nuevos servicios, y necesitamos una ventana de despliegue para ponerlos en producción, tenemos un problema. 

En primer lugar, si entendemos la ventana de despliegue como un periodo de pérdida de servicio para estos servicios, ¿que momento sería ese?. Es cierto que en el pasado, las aplicaciones estaban pensadas para un colectivo concreto (normalmente un colectivo interno) que trabajaba en horario de oficina y que, por suerte, nos dejaba el fin de semana libre para poder hacer y deshacer con el aplicativo en producción. O un cierto número de horas por las  noche, donde también se aprovechaba para ejecutar algunos batch necesarios para consolidar datos, importarlos, exportarlos, etc. etc.

¿Que ventana de inactividad podríamos tener ahora con servicios globales (ya no hay noche) y que pueden ser usadas por todo tipo de colectivos (ya se nos acabó el fin de semana)?.

¿Hace falta realmente una ventana de inactividad o una ventana para el despliegue de PRO? si los servicios están bien hechos creo que no.

¿Por qué digo esto?

  1. Estamos hablando de unos servicios cuya dirección física no conocen sus clientes. Gracias al registro de servicios podemos logar la transparencia en la ubicación de estos. 
  2. También, a buen seguro, tendremos un componente que hace de balanceador para las varias instancias de estos servicios. Servicios que estarán desplegados en varios nodos de un servidor de aplicaciones. 
  3. ¿No se podrían coordinar el balanceador y los nodos para ir apagando uno a uno, actualizando el desplegable de los servicios y volver a ponerlos online uno a uno sin que el cliente se ni siquiera se entere?.

¿Para qué queremos entonces una ventana de despliegue? Si tenemos una, tendremos que hacernoslo mirar, seguramente hay algo que no funcione como debería.