Implementacion azul verde esquema numero 01

Desarrollo Continuo de Software: entorno de Implementación Azul Verde.

Los entornos de Implementación Azul Verde permiten, de manera automática, probar nuestro futuro servidor de producción para luego activarlo de manera fácil y rápida.

Por este vuestro blog os hemos dicho lo que no debe hacer un administrador de red así como también os indicamos las herramientas que todo administrador de sistemas debe conocer (indispensables, teniendo en cuenta que lo único constante es el cambio). Por supuesto que como sistema de monitorización, obra en la que trabajamos constantemente en esta gran comunidad de software libre, os recomendamos ampliamente a Pandora FMS  y, además, establecimos que el respaldo de datos no es un lujo sino una necesidad (y los errores típicos que se cometen al respaldar nuestros datos a buen resguardo); pero ¿podemos ir incluso más allá de este esquema básico y simplificado de trabajo?

Un buen administrador de sistemas siempre piensa en todo, e ir un paso más allá implica que debemos agudizar nuestro ingenio al 110% ¿qué tal si tenemos «servidores de repuesto» para nuestro sistema de producción? Si la empresa para la que trabajamos toma a bien considerar esta inversión de dinero para contar con una protección extra, y teniendo en cuenta que ningún software puede permanecer estático, siempre se necesita la evolución porque lo único constante es el cambio ¿podemos trabajar en ambos aspectos, seguridad y desarrollo?

Implementación Azul Verde

En castellano suena extraño este nombre pero explicaremos brevemente en qué queremos abstraernos con este substantivo: en idioma inglés, de donde proviene, significa «Blue-Green Deployments to Release Software Safely» lo que traducido significaría «(Esquema de) Implementación Azul/Verde para Liberar Software de manera Segura». Nosotros simplemente lo denominaremos «Implementación Azul Verde«. Atentos y atentas entonces al concepto siguiente:

Este esquema de trabajo consiste en tener una copia exacta del servidor en producción para ir implementandole, de manera automática, la cadena de desarrollo (Integración Continua de Software, su Distribución Continua e Implementación Continua) en dicho equipo para que, cuando hayan finalizado satisfactoriamente todas la pruebas con datos reales, intercambiar ambos servidores (redirigiendo por medio de dirección IP) sin detener en ningún momento la producción.

Para finales del siglo pasado podíamos comunicar a los usuarios y usuarias que nuestro sistema, el que estuviéramos desarrollando, iba a estar fuera de línea unas cuantas horas (o incluso días) y la gente lo tomaba con mucha calma y no nos reprochaban sino lo mínimo («¿Podéis hacer de noche dicho trabajo?«). Ahora entrando ya en la tercera década del siglo XXI no nos permiten siquiera unos cuantos minutos fuera de línea ¿Cómo podemos implementar software en tan poco tiempo y de paso de manera segura? La Implementación Azul Verde es la respuesta a nuestras necesidades.

Abstracción

La teoría siempre es importante pero, para explicarlo sencilla y rápidamente, imaginemos por un instante que tenemos un blog cuyo motor de administración corre bajo WordPress y cuya base de datos está en un motor de base de datos MySQL. Para simplificar las cosas, olvidemos dónde subimos nuestras imágenes y ficheros adjuntos que acompañan cada entrada, así como los balanceadores de carga, DNS, monitorización con Pandora FMS, etcétera. La siguiente figura ilustra nuestro planteamiento:

Implementacion azul verde esquema numero 01

En el recuadro azul estarían nuestras oficinas, una red interna en la cual mediante nuestros ordenadores portátiles accedemos a un servidor Git donde reposa nuestro proyecto, que sería en este caso un simple tema para WordPress. En color verde esquematizamos lo que vería nuestro público, nuestros lectores del blog en el servidor de producción, y al que aún no hemos embellecido con nuestro futuro tema.

Como entenderéis, acá los colores son importantes para nosotros los humanos, vosotros podréis escoger los colores que mejor os parezcan, lo primordial es que sean diferentes para distinguirlos rápidamente. Acá usaremos entonces los colores verde para indicar producción y azul para indicar el desarrollo.

Integración Continua de Software, su Distribución e Implementación

Esta cadena de producción la tendremos, de manera privada, en nuestro entorno Azul. Básicamente consiste en que nuestros desarrolladores constantemente y en cortos períodos de desarrollo, estarán alimentando nuestro servidor Git que custodia el control de versiones. También deberemos tener un software como Jenkins para compilar de manera automática y que muestre de manera temprana los posibles errores de programación y notifique oportunamente. Por último dichos cambios serán implementados a nuestro servidor Azul para evaluar con datos reales y usuarios beta (o incluso procesos automatizados usando Pandora FMS Experiencia de Usuario).

Acá debemos aclarar que el proceso de Implementación Azul Verde no descansa sobre un software específico, ni sobre una piedra angular: es más bien un todo que deberemos administrar y configurar cada vez que iniciemos un nuevo ciclo de desarrollo.

Detalles previos a la Implementación Azul Verde

Por razones de economía, tanto de tiempo como de dinero, los servidores web con WordPress tienen la base de datos en un mismo ordenador. Para la Implementación Azul Verde dicha base de datos estará ubicada en un lugar distinto, a fin de que ambos servidores, Azul y Verde, puedan ser utilizados al mismo tiempo: uno por nosotros de manera privada y otro para nuestros cibernautas visitantes.

  • El motor de base de datos puede ser, en su conjunto, un esquema maestro y esclavo o incluso un racimo de servidores.
  • De igual manera nuestro servidor Verde también puede ser un racimo de servidores con balanceadores de carga, más sin embargo nuestro servidor Azul no necesita tanto gasto de dinero y recursos solo para nosotros. Eso sí, cuando lo coloquemos en producción deberá ser el maestro de ese racimo de servidores, replicando su contenido con nuestro nuevo tema para WordPress.
  • Siempre deberemos tener muy presente en todo momento que estamos trabajando con datos reales, no una copia, por lo tanto las operaciones de escritura tendrán siempre que ser revisadas dos y hasta tres veces antes de ser registradas y deben ser solamente las estrictamente necesarias. Un esquema más elaborado lo tendremos en cuenta al final de este artículo.
Por favor, lea también   La jerigonza de los programadores: el Vocabulario de Progamadores

Implementación Azul Verde y su puesta en funcionamiento

El punto neurálgico para nuestro cambio a servidor de producción se ubica en nuestra entrada a la red de área local. En el gráfico la hemos representado toda y junta, pero aclaramos que esta estructura puede tener muchas variantes. Debemos entonces, al menos, especificar de qué consiste:

  • Entrada y salida al Internet: nuestro «Internet Service Provider ISP» nos proporciona de muchas maneras distintas nuestra conexión hacia y desde Internet (modem, ethernet, fibra óptica, etcétera).
  • Muro de fuego: se encarga de filtrar desde y hacia donde van las peticiones de entrada y salida.
  • Nuestro enrutador de direcciones: «Network Address Translation NAT» se encargará de dirigir el tráfico al servidor verde (público en general) y cuando tengamos nuestro servidor azul listo en un instante comenzará a redirigir el tráfico al nuevo entorno.
  • Lo anterior está apoyado en nuestro propio «Domain Name System DNS» (dado el caso de que tengamos varias redes de área local dispersas con nuestros equipos).
  • A su vez, subyacente, se encuentra nuestro propio «Dynamic Host Configuration Protocol DHCP«.
  • Y como director de orquesta recomendamos usar phpIPAM para la planificación y documentación de las direcciones IP de todos y cada uno de nuestros dispositivos.

Intercambiando servidores

En el servidor Azul haremos todas nuestras pruebas normales y automatizadas para cuando tengamos todo listo, y basados en la monitorización de la carga de trabajo del servidor Verde, el punto horario de menor uso: allí configuraremos nuestro NAT para que redirija el tráfico hacia la nueva versión ¡nuevo tema para nuestro blog en WordPress!

Implementación Azul Turquesa Verde

 

Como bien especificamos, nuestro ejemplo era un simple tema para WordPress pero ¿qué sucedería si necesitamos desarrollar un complemento («plugin») para WordPress? Bien sabido es que, generalmente, se programa para que cada sitio web (y cada uno de sus usuarios) tengan la capacidad de configurar y/o guardar sus preferencias personalizadas. La mejor manera de guardar estos valores es en la misma base de datos pero modificado la estructura lo cual conlleva una serie de inconvenientes que retrasarían nuestro intercambio de servidores Verde y Azul. Es por ello necesario un paso adicional al cual, de nuevo, asignaremos un color, en esta caso Turquesa (o el color que vosotros queráis).

Implementacion azul verde esquema numero 02

Modificando nuestro servidor de base de datos

La estrategia para no detener en ningún momento la producción consiste en no modificar las estructuras ni objetos existentes en nuestra base de datos. Por el contrario lo que vamos es agregar objetos y/o tablas nuevas para copiar toda la información existente de la vieja a la nueva estructura que será usada por el complemento que estemos desarrollando. Hasta acá todo bien, el pequeño detalle es que a cada instante nuevos valores son agregados a la base de datos y deben ser copiados de inmediato a las nuevas estructuras ¿cómo atacamos esto? Pues dándole características especiales a nuestro servidor de paso Turquesa.

Servidor Turquesa

Tendrá características especiales:

  • Apenas lo instalemos y conectemos a la red, descargará el nuevo código y se conectará a la base de datos.
  • Verificará que hayan sido creadas las nuevas estructuras, las creará de ser necesario.
  • Copiará todos los datos existentes a las nuevas estructuras.
  • Quedará funcionando constantemente copiando lo que agreguen nuestros usuarios públicos. Esta estrategia es más económica que instalar disparadores que copien el contenido a nivel de base de datos y no por aplicación externa. Dependerá de que se converse los administradores de bases de datos con los programadores para sopesar cuál estrategia es más económica: la que retrase al mínimo la producción será la indicada. Recordad ser corteses y sinceros en todos los procesos de diálogos entre ambos equipos, y que todo quede claro y bien documentado «por escrito» para evitar males mayores.
  • Se debe sopesar la idea de instaurar una variable global de escritura tipo verdadero y falso y además otra que indique a los usuarios que salven su trabajo lo más pronto posible porque va a haber un período de no escritura a la base de datos. Con un esfuerzo mayor podríamos hacer transparente este proceso al usuario, escribir temporalmente a una segunda base de datos mientras hacemos el cambio de servidores de prueba a producción y luego insertar esos datos definitivamente. Es un proceso más elaborado pero cada quien elegirá su plan de acción más conveniente.
  • A su vez el servidor Turquesa funcionará con nosotros mismo como programadores para probar el código siempre escribiendo en la base de datos de manera paralela a las estructuras antiguas y nuevas.
  • Este esquema es algo más difícil de lograr que la Implementación Azul Verde pero no imposible. Probablemente necesitaremos de código adicional de auditoría para garantizar que ningún dato se extravíe o tergiverse en el camino.
  • Por último, repitiendo el ciclo, migraremos al servidor Azul el cual solo usará las nuevas tablas y consultas y con el tiempo podremos borrar, previo respaldo, los datos anteriores.

La utilización de un software de monitorización es de capital importancia, Pandora FMS es capaz de informarnos de una manera cuantitativa y objetiva el nivel de estrés agregado en nuestros equipos por dichas maniobras. Recordad siempre que la Flexibilidad es nuestra consigna y la versión Enterprise contempla atención personalizada para estos casos únicos de desarrollo de software, ¡siempre contáis con un excelente aliado!

Conclusión

Si bien fue rápida la explicación, no subestiméis para nada ninguno de los procesos aquí expuestos. Tratamos de dar una visión global del asunto pero como siempre «el diablo está en los detalles»: bien vale la pena adquirir un software de planificación de proyectos donde plasmar y establecer la ruta a seguir.

Un software de gestión de incidencias como Integria IMS para que sea utilizado todo el personal, sin ninguna jerarquización previa, podrá hacer más fluida la comunicación; además se puede gestionar el proyecto planificado para retribuir los eventos al plan original. Después de todo somos seres humanos y una buena coordinación de esfuerzos podrán hacer más llevadero el camino hacia el éxito de nuestras metas.