De “nada” a la “nube” en 0,
Una cosa que me tiene muy entretenido en los últimos tiempos, y por lo visto seguirá manteniendo por bastante tiempo más, es la plataforma de servicios en la nube Windows Azure. O mejor.. ¡Microsoft Azure!
Esto es así porque, a finales del año pasado embarqué en un proyecto que, de entre los requisitos fundamentales para funcionar, tenía esta bonita declaración de intenciones:
“La empresa funcionará sin servidores on-premise, los únicos equipos permitidos en una oficina serán impresoras y electrónica de red. Además, todos los costes de infraestructura servidora tienen que seguir un modelo de costes OPEX”
Suena muy bien, y es muy bonito así en el papel, peeeero esto nos lleva a cuestionar una serie de cosas relacionadas con la nube, fuerte candidata a dar solución a estos escenarios:
- ¿Será posible obtener toda la funcionalidad deseada?
- ¿Qué modelos son los más adecuados para cada componente?
- ¿Realmente, está la tecnología preparada para tan arriesgado escenario?
Está claro, había que estudiar la viabilidad del proyecto, y luego encontrar la forma de implementarlo, claro. En esta serie de posts De “nada” a la “nube” en 0, os cuento mis penas y éxitos en este intento, que ha ido ocupando los minutos de mi vida, extra laboral, durante estos últimos tiempos. Espero que sirvan para hacer más fácil la vida a los que tengáis que pasar por lo mismo.
Antes de conectarnos al portal de Azure y empezar a crear cosas a lo loco, que al final nos pueden costar una que otra marcha atrás, refresquemos algunos conceptos de las plataformas de nube. Probablemente estéis ya familiarizados con algunas de las cosas que hablaremos a continuación, sobre todo si le habéis dedicado algo de tiempo a “la nube”. De todas formas, no está demás clarificar estos conceptos y establecer una base común.
Empecemos con una definición, lo más estándar posible, de los conceptos que caracterizan las plataformas de nube. Os recomiendo la definición del NIST, una vez que, al contrario de muchas definiciones presentadas por algunos fabricantes, es lo más neutral posible y evita que acabemos mezclando churras con merinas.
Definición de Cloud Computing del NIST: http://csrc.nist.gov/publications/nistpubs/800-145/SP800-145.pdf
Cuando intentamos describir y clasificar las plataformas de nube, nos referimos a características, modelos de servicio y modelos de despliegue.
- Características: corresponden a los requisitos que una determinada plataforma tiene que cumplir para que se considere una plataforma de nube.
- Modelos de servicio: tienen en cuenta, sobre todo, el equilibrio entre los componentes del modelo computacional, proporcionados por el proveedor y los gestionados, o controlados, por el cliente.
- Modelos de despliegue: son una clasificación de las plataformas según el uso que se hace de los recursos y por parte de quién.
Sin ánimo de quitar importancia a los modelos de despliegue y características de las plataformas de nube, en este post nos centraremos en los modelos de servicio. Azure es una plataforma que está presente en todos ellos y esto es importante desde el punto de vista de un arquitecto IT, porque permite crear soluciones que usen distintos componentes, disponibles a través de los varios modelos, de forma muy integrada. Estamos hablando, lógicamente de los conceptos de SaaS, PaaS e IaaS, o lo que es lo mismo Software como Servicio, Plataforma como Servicio e Infraestructura como Servicio.
Dentro de los modelos de servicio nos encontramos con las siguientes clasificaciones, cada una de ellas describiendo un tipo de solución enfocada a un perfil distinto.
- Software como Servicio (SaaS): El proveedor proporciona al cliente aplicaciones terminadas que se ejecutan en su infraestructura de nube. Normalmente estas aplicaciones están accesibles desde múltiples dispositivos, mediante el uso de plataformas web y/o interfaces nativas creadas para un sistema en concreto. En este caso el cliente no necesita gestionar ninguno de los componentes de la infraestructura, preocupándose solamente con las configuraciones de la propia aplicación y sus datos.
- Plataforma como Servicio (PaaS): La funcionalidad proporcionada al cliente consiste en una plataforma con soporte para lenguajes de programación, herramientas y servicios, sobre los cuales se ejecutan las aplicaciones desplegadas, ya sean desarrollos propios o adquiridos a terceros, construidos para esos componentes específicos. El cliente se encarga de la aplicación (código y todos los componentes empleados durante su desarrollo), sus datos y las configuraciones del entorno en el que está alojada, dejando al proveedor toda la administración de la infraestructura que la soporta (servidores, almacenamiento, red, etc.).
- Infraestructura como Servicio (IaaS): En este modelo se proporciona al cliente capacidad de procesamiento, almacenamiento, redes y otros recursos computacionales, para que este pueda ejecutar sus servidores y aplicaciones. Normalmente estas plataformas van asociadas con plataformas de virtualización, donde el proveedor se encarga de los componentes físicos y de la capa de virtualización, dejando el control de los sistemas operativos y demás componentes tecnológicos en manos del cliente.
Modelos de servicio y perfiles típicos a los que corresponden
A lo largo de los varios artículos que compondrán la serie, me centraré más en la parte de Infraestructura (IaaS), aunque eso no implica que no haga alguna incursión por el resto de modelos de servicio, al final a todos nos toca quitarnos la gorra de ITero de vez en cuando.
Podemos decir que esta ha sido la Parte 0 de esta serie, el artículo que pretendía ser apenas una Introducción y con el que establecíamos unas bases de las plataformas de nube. Ahora que todos estamos en la misma página, ya podré preparar algo sobre el punto de partida en el viaje a Azure. En breve llegará la Parte 1 – ¿Por dónde empiezo? aquí al TecnoChiringuito, mientras tanto nos tomamos otra a vuestra salud.