Por que sus aplicaciones no estan listas para Openstack
Hacemos un pequeño análisis de por qué las aplicaciones corporativas tradicionales no están preparadas para correr en ambientes OpenStack con hypervisores de código abierto. Cubrimos también cuales son los cambios necesarios desde el punto de vista aplicativo para alcanzar una migración confiable.
Virtualización tradicional vs Cloud Computing
Orígenes y conceptos distintos
Durante años los fabricantes de hypervisores se sacaron los ojos para demostrar quien tenía la solución con mayor disponibilidad, quien podía reducir a cero la interrupción de servicio, quien podía balancear la carga de trabajo de forma automática sin estar operando una consola. Estos sistemas de virtualización estaban pensados para sistemas legacy donde cada administrador de sistemas conocía ampliamente cada uno de sus servidores y los servicios que estos corrían.
Para ejemplificar un poco más todo esto vale poner sobre la mesa un servidor de correo exchange que cualquier empresa podría tener virtualizada en sus centros de cómputo. Cualquier administrador de este servicio sabe cual es la máquina virtual, se preocupa por mantenerla corriendo y se preocupa de atenderlo si le pasa algo.
Por el contrario, las nuevas aplicaciones y servicios están pensados para que si hay un problema con la infraestructura que los soporta los mismos sean resilientes por si mismos permitiendo a los administradores desentenderse del día a día. Como se llama el servidor o donde está corriendo queda en otra capa, fuera de la infraestructura, ya que en caso de existir un problema son los servicios los que se encargan de autogestionarse y reorganizarse para garantizar la continuidad del funcionamiento del mismo.
Pets vs Cattle
Para ser más gráficos aún podemos utilizar un ejemplo de animales y lo hacemos por medio de una comparación entre mascotas y ganado.
Una mascota tiene un nombre, nos preocupamos de que esté saludable y si tiene un problema lo llevamos al veterinario para que sea atendido como corresponde. Por otro lado cuando hablamos de ganado hablamos de volumen, las vacas no tienen nombre, no sabemos donde están pastando y si algo la enferma acabamos con este animal y conseguimos otro.
Comparativamente las mascotas son los tradicionales sistemas de virtualización y el ganado son los sistemas modernos como openstack.
Si queremos portar nuestras aplicaciones tradicionales al mundo moderno de openstack vamos a tener que trabajar en un aspecto clave como es el de la disponibilidad.
Trasladar la disponibilidad de la infraestructura a la aplicación
Son pocas las empresas que al día de hoy corren sus ambientes virtualizados por fuera vmware, Microsoft o Citrix. Estos sistemas tienen sus orígenes basados en los ambientes tradicionales donde la disponibilidad de la infraestructura es fundamental para garantizar el correcto funcionamiento de los servidores/aplicaciones que corren en estas.
Las funciones de alta disponibilidad y la capacidad de mover en caliente servidores virtuales de un servidor físico a otro hicieron que estas tecnologías lograran grandes adeptos en los últimos 10 años y lograron dar un nivel de continuidad a las aplicaciones que no se habían conocido en el pasado.
Esto hizo también que muchos departamentos de desarrollos de las empresas e incluso que muchos fabricantes de software se relajaran a tal punto donde dejaron de trabajar en mejorar o incorporar funciones de disponibilidad dentro de sus aplicaciones.
El nuevo paradigma del cloud computing donde los servidores son económicos, los discos donde corren las máquinas virtuales son locales y la disponibilidad no está pensada para ser provista por la infraestructura hace que las aplicaciones tradicionales con las que cuentan las empresas no sean viables para ser ejecutadas en este tipo de entornos.
Si tenemos alguna intención de mover nuestras aplicaciones hacia entornos como estos debemos trabajar en desarrollar aplicaciones con la disponibilidad totalmente incorporada a estas en cada una de sus capas. Si tenemos applications servers, que se balanceen y mantengan sus sesiones activas. Si tenemos bases de datos que estén distribuidas y redundantes. Cada una de las capas involucradas dentro de una aplicación moderna pensada para correr en la nube requiere su propio nivel de disponibilidad.
Volver a pensar las aplicaciones
Las aplicaciones modernas, pensadas para la nube, tienen varias capas cada una independiente de la otra y cada una de estas con su propio método de disponibilidad.
Es por esto que mover una aplicación moderna, pensada para la nube, puede ser portada en ambientes donde la disponibilidad del servicio de infraestructura pasa completamente a un segundo plano dependiendo enteramente de la aplicación. Por la naturaleza de los nuevos servicios de infraestructura como servicio provistos en soluciones como las de OpenStack hace que estos sean adecuados para correr aplicaciones pensadas para la nube.
Las aplicaciones modernas deberán hacerse cargo completamente de su disponibilidad y de su escalabilidad para poder correr en los nuevos entornos y poder despegarse completamente de la capa del hypervisor permitiendo de esta forma migrar de los tradicionales entornos de vmware, Microsoft y Citrix a los modernos como OpenStack.
Mientras sigamos preocupados por que el servidor que conocemos por nombre y apellido siga corriendo y dando servicios nunca podremos migrar nuestros entornos a la nube.