¿Por dónde empiezo?
Ahora que hemos sentado las bases de las plataformas de nube, en la Parte 0 de esta serie, publicada hace ya algún tiempo, es hora de remangarse un poco y empezar a crear cosas en Azure.
Hay algunos elementos que debemos preparar antes de crear nuestra primera máquina virtual, pero como veréis no es nada complicado, y de esta forma empezaremos con un entorno ordenadito que no nos traerá problemas en cuanto empecemos a crecer en la nube.
Grupo de afinidad
El primer concepto que quiero introducir hoy es el de “grupo de afinidad”, este debe ser el primer elemento que creamos en nuestra suscripción de Azure y el que sirve de base a todo lo demás.
El grupo de afinidad tiene dos funciones realmente, una a nivel lógico y otra a nivel más físico, relacionada con la asignación de recursos.
A nivel lógico, los grupos de afinidad permiten agrupar recursos de procesamiento y almacenamiento que tienen una relación entre ellos, por ejemplo, el almacenamiento (VHD) que usa una determinada máquina virtual. En una perspectiva un poco más amplia, podemos considerar también un conjunto de máquinas virtuales relacionadas entre ellas, o que comparten alguna característica común, por ejemplo los recursos asignados a un departamento, u organización, en el caso de que gestionemos varias entidades desde una misma suscripción.
Esta sería la parte lógica que nos ayuda a tener la casa ordenada desde el punto de vista del administrador de recursos en la nube. Por otra parte, el grupo de afinidad tiene también unas implicaciones físicas en lo que toca a la asignación y consumo de recursos, como hemos comentado anteriormente.
Los aspectos principales que los grupos de afinidad nos permiten controlar a nivel físico son el rendimiento y los costes. Un grupo de afinidad está asociado a un determinado CPD de Azure, pero como todos sabemos, en Azure los CPDs están constituidos por contenedores con clusters y racks (cada contenedor se encarga de una serie de servicios concretos de la plataforma), por lo que es interesante tener un poquito más de control sobre la colocación de los elementos de nuestra plataforma dentro del mismo.
Por exagerar un poco el ejemplo para que quede del todo claro, seguro que a ninguno se nos ocurriría crear el almacenamiento de una máquina virtual en el CPD de Chicago y ejecutar la máquina virtual en el CPD de Ámsterdam (aunque quisiéramos no sería posible, pero para que se entienda el concepto). Esto generaría una latencia tremenda perjudicando el rendimiento, además de los costes a nivel de comunicaciones, una vez que en Azure se facturan los datos enviados fuera del CPD.
Al colocar los recursos dentro del mismo grupo de afinidad, no solo estamos agrupándolos en términos lógicos pero también le estamos diciendo a Azure que esos recursos deben colocarse los más próximo posible dentro del CPD, si posible en el mismo cluster o contenedor. Esto reduce la latencia y optimiza el rendimiento del entorno.
La creación del grupo de afinidad es bastante sencilla, solo tenemos que darle un nombre, una descripción (opcional), la suscripción asociada e indicar en que CPD de Azure va a “vivir” este grupo de afinidad. Una vez hecho esto, estamos listos para crear los recursos asociados al grupo de afinidad y Azure se encargará del resto.
Creación de grupo de afinidad en Azure
De momento esta opción solo está disponible a través del portal “antiguo” de Azure, el que se encuentra en producción. El nuevo portal está en Preview por lo que es de esperar que, poco a poco, todo vaya encontrando su lugar allí también. La creación del grupo de afiniddad se realiza entrando a Configuración –> Grupos de Afinidad.
Grupos de afinidad en el portal de Azure
Este fue el primer paso en nuestro viaje hacía la nube, en los proximo pasos nos iremos acercando a nuestro objetivo a través del almacenamiento y la red. Espero que disfrutéis del viaje tanto como yo.
Entradas relacionadas:
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.
Entradas relacionadas: