lunes, 23 de mayo de 2011

Arquitectura Cloud básica

Es irónico pero, despúes de empezar a hablar de las bondades del Cloud y definir los elementos de su arquitectura básica, a blooger le dio por fastidiarse. También se fastidió mi último post y algunos de mis borradores.

Eso me pasa por no tomar la medidas que hay que tomar en cualquier entorno:
  • Copias de seguridad
  • Plan de contingencia
Y es que en el Cloud no existe la magia y hay que tener en cuenta que las ventajas exponenciales que se pueden experimentar y pueden ofrecer a usuarios y desarrolladores crecen de igual forma en la complejidad de su gestión y mantenimiento.

Así que para enmendar mi torpeza haré un breve resumen de lo que presentaba en la última entrada.

Arquitectura Cloud básica

Los elementos fundamentales de la arquitectura cloud no difieren mucho de aquellos que tradicionalmente conocemos. Antes de desplegar ningún tipo de servicio o desarrollo, es preciso disponer de una plataforma que nos ofrezca los recursos necesarios para el ciclo de vida completo de nuestra aplicación: Un contenedor de ejecución, una fuente de acceso a datos, ... Y esta plataforma, a su vez, ha de descansar en alguna infraestructura que le ofrezca los recursos de cómputo, memoria, red...

Un ejemplo concreto tradicional
Servicio: Una página web
Plataforma: Un servidor web, Una base de datos
Infraestructura: Un PC o servidor

Evidentemente la evolución de la tecnología y de la mano de la virtualización ha provocado la revolución de las arquitecturas tradicionales. Escalabilidad, Disponibilidad, Redundancia, Balanceo de Carga, ... vuelven a ser conceptos conocidos que están subiendo de escalafón constantemente.


SaaS

Se trata de la capa más externa, destinada al usuario final, principalmente. Es el Software como Service (Software as a Service). En esta capa se dan servicios de lo más vario pinto. Desde servicios de correo electrónico, álbumes de fotos, gestión de contactos, gestión de proyectos... hasta servicios que nos ofrecen almacenamiento. En este plano nos encontramos con gmail, flickr, salesforce, teambox y dropbox, por poner algunos ejemplos.

PaaS

Se trata de la capa intermedia y que cada vez está adquiriendo más importancia. Fundamentalmente desde el punto de vista de los desarrolladores. Es la Plataforma como Service (Platform as a Service). En esta capa encontramos los recursos necesarios para poder desplegar nuestras aplicaciones (nuestros servicios). Algunas referencias tenemos en Google App Engine, Azure, Heroku, ...

El pasado mes de Abril entró en juego una solución promovida por VMWare de la que hablé en CloudFoundry: Nueva PaaS (Platform as a Service)

Ya hablaba del vértigo que estaba despertando la plataforma y las numerosas aportaciones para soportar PHP y Erlang. Otra muestra es un fork reciente para dar soporte a aplicaciones Python y Perl, llamado Stackato. Esto es una muestra más del incentivo que supone disponer de soluciones abiertas y la garantía de calidad y competitividad en el mercado.

IaaS

Se trata de la capa que gestiona la infraestructura como un servicio (Infrastructure as a Service). Es aquí donde se realiza la provisión de los recursos de bajo nivel, número de procesadores, cantidad de memoria, almacenamiento, ancho de banda... incluso el sistema operativo que será el último estrato de recubrimiento del servicio. Servicios de infraestructura encontramos en Amazon, RackSpace, GoGrid, ...

De la mano de RackSpace disponemos de una solución libre, OpenStack. Una solución que está adquiriendo un protagonismo importante. Muestra de ello es la elección de Ubuntu como plataforma Cloud para su paquetería de la nube en lugar de Eucalyptus, como venía haciendo en versiones anteriores.

Como se puede apreciar, cada vez son más las soluciones y opciones en este nuevo reto. Medios de difusión, estrategias de mercado y apuestas innovadoras por parte de organizaciones grandes y pequeñas están despejando un camino que deja de estar tan en el aire como cabría pensar.

Esta vorágine aumenta el desafío constante de los usuarios, responsable e ingenieros de TI que vuelven a ver cómo se pone patas arriba los procedimientos y protocolos tradicionales de desarrollo, despliegue y aprovisionamiento. Uno experimenta la sensación de que... después de todo lo aprendido, volvemos a estar como al principio... aprendiendo.

Por esta razón trataré de hacercarme a las distintas capas con alguna prueba de concepto para conocer algo más de este nuevo mundo (si no pierdo más posts :D )

Siguiente parada... OpenStack.

martes, 3 de mayo de 2011

CloudFoundry: Nueva PaaS (Platform as a Service)

En el pasado mes de Abril, de la mano de vmware y springsource, nace una nueva solución en el mundo de la nube. Una solución PaaS que permite el despliegue de aplicaciones evitando la complejidad de las configuraciones hardware, software y servicios subyacentes necesarios para el correcto ciclo de vida de cualquier aplicación, desde su desarrollo hasta su puesta en marcha.

Pero... ¿qué es esto de la nube? Ciertamente el número de definiciones y conceptos es dispar. En muchos casos no se termina de tener una idea clara de ¿qué es la nube?. Quizá por eso se denomine de forma tan difusa ;-).

En algunos casos (Grid and Cloud Computing: A Business Perspective on Technology an Applications, por ejemplo) se ve el Cloud Computing como una evolución del Grid Computing. Y creo que no les falta razón. De hecho comparten muchos puntos en común en la orientación de su paradigma y con unas virtudes muy similares.

No prentendo hacer una comparativa en toda regla, ni mucho menos. No creo que tenga los conocimientos adecuados para hacer algo de semejante calado medianamente bien, prefiero traeros un artículo muy interesante donde realizan este análisis desde los distintos ángulos entre el Cloud Computing, Grid Computing y Distributed Systems: Cloud Computing and Grid Computing 360-Degree Compared.

En esta evolución, no son pocos los movimientos que se vienen desarrollando en este tipo de plataformas. Véase como ejemplo:
Pero hay algo que, a mi parecer, hace a CloudFoundry algo diferente.

  1. Proyecto Open Source: www.cloudfoundry.org. El código está disponible en https://github.com/cloudfoundry Y esto hace que sea muy muy interesante.
  2. Sin restricciones en los frameworks soportados.
  3. Cloud Foundry Micro Cloud. Previo registro nos pueden habilitar una micro nube descargable de forma que podamos hacer nuestras pruebas en nuestros propios entornos. Nos da la capacidad de tener PaaS en una de nuestras máquinas.
Definitivamente creo que springsource y vmware han hecho un movimiento muy inteligente a la hora de proporcionar una plataforma tan abierta. En su FAQ justifican y detallan esta elección. 

Esto es lo que se puede ver a simple vista. Espero poder entrar en mayor detalle según me acerque a las plataformas con ejemplos sencillos que nos permitan conocer mejor sus características y modos de uso.