http://venturebeat.com/2012/06/29/amazon-outage-netflix-instagram-pinterest/

 

Los problemas en los servicios de nube de Amazon, demuestran que no podemos depender de un solo proveedor en algo tan crítico como “Hosting mejorado” como es el tema de la nube. Amazon, guarda, ademas del almacenamiento de contenido estático, parte de la lógica del negocio de muchos servicios, implementado en el API que proveen para aprovechar su plataforma.

Si Pinterest quiere guardar la información de un nuevo usuario, pues utiliza el API de Amazon para comunicarse con la infraestructura para guardar esa información. Como es esta API no interesa, lo que interesa es que si luego Pinteres quiere pasarse a Microsoft Azure, tendrá que rediseñar esa parte de código para utilizar las API de Azure. Esto no es simplemente guardar algunas páginas en PHP o Java como era antes. Se trata de que cada servicio de computación en la nube tiene una capa de encapsulamiento que le añade complejidad al asunto de migrar de proveedor.

Ahora, para ser sinceros, un buen diseño hará que esta dependencia sea la menor posible, haciendo por ejemplo que la parte de interfase de usuario se ejecute en servidores convencionales, que pueden estar almacenados en servicios de hosting convencionales con un costo mucho menor y por sobre todo, pudiendo usar varios proveedores a la vez. El core del negocio sería el único que se ejecutaría en los servidores de nube. Esto haría que la cantidad de código a migrar sea mínima y un ahorro de costos  relativamente alto.

Si bien esto del diseño ayuda, no corrige un problema principal: Aún seguiríamos siendo dependientes de un solo proveedor de código “core”, sería un “hard core”.

Aquí viene una idea para los proveedores de nube abiertos: Un API universal para el manejo de múltiples “hard cores” que sería invocado por todos nuestros Front End ofreciendo una capa de abstracción a todas las llamadas que hagamos al hard core que esta vez, podría estar en múltiples servicios de nube. Un ejemplo:

Si tengo un metodo de crear usuario en Azure, pudiera implementarlo como un servicio REST, y haría lo mismo en Amazon EC2, y lo mismo en Google App Engine. Todos estos servicios estarían registrados bajo un mismo metodo de un servicio mas grande, pero mucho mas ligero, que habitaría en cada Front end donde exista un metodo CrearUsuario y que  elegiría el proveedor de hard core mas conveniente para cada llamada y que haría la gestión de la sesión, ya que el hard core tendría que ser sin sesión para asegurar la máxima redundancia y performance.

En temas de rendimiento, el concepto nuevo aqui es verificar la salud de cada servicio, para lo cual cada proveedor de nube tendría que entregar un método para verificarlo en todo momento. Nuestra capa de abstracción podría hacer esta verificación en un proceso separado y periódico a fin de no afectar el tiempo de procesamiento de cada llamada.

Sería como un MVC donde pondríamos una capa mas entre el V y el C.

Un API abierto tendría que considerar otras cosas como un servicio propio de Accounting , a fin de verificar cuanto se ha utilizado de cada uno de los hardcore, un control central para hacer un override de la inteligencia de forma remota, y tal vez un tema de gestión de los hard core.

Un API para generar “Agentes” que gestionen cada uno de los hard core que tenemos contratados con servicios de gestión remota sería un buen proyecto para los programadores que van por ahí haciendo cosas interesantes solo por diversión.

¿ En  qué lenguaje debe estar ? Java definitivamente porque es el único framework que nos asegura total libertad a la hora de buscar un servicio de hosting.




    Leave a Reply

    Fill in your details below or click an icon to log in:

    WordPress.com Logo

    You are commenting using your WordPress.com account. Log Out / Change )

    Twitter picture

    You are commenting using your Twitter account. Log Out / Change )

    Facebook photo

    You are commenting using your Facebook account. Log Out / Change )

    Google+ photo

    You are commenting using your Google+ account. Log Out / Change )

    Connecting to %s



%d bloggers like this: