Computación en nube

Definición de Computación en nube

La computación en nube consiste en proporcionar recursos bajo demanda de una manera rápida y flexible según las necesidades, empezando por servidores virtuales, almacenamiento o aplicaciones. La idea es ofrecer servicios a la carta a través de Internet o servicios propios a través de una red privada. La arquitectura informática que propone la nube no es nueva, el clustering o el grid son propuestas anteriores que ya hacían uso de esta arquitectura horizontal. Estas arquitecturas se utilizan para aplicaciones de procesamiento técnico donde en un sistema formado por más subsistemas con cierta autonomía, mantienen una interrelación continua entre ellos. El modelo de nube aquí aporta un nuevo uso, como granjas de servidores virtuales, donde se pueden ejecutar aplicaciones para los servicios de Internet o las necesidades en las redes privadas, con configuraciones dinámicas y con recursos variables. Las novedades que incorpora esta tecnología son la escalabilidad, la facilidad de uso y un nuevo modelo de precios.

– La escalabilidad es una de las claves de la nube. Nos permite trabajar con unos recursos limitados y si nuestras necesidades informáticas aumentan, podemos tener muchos más recursos sin tener que hacer mucho más que pagar.

– La facilidad de uso pasa por unas aplicaciones que nos facilitan el acceso a la nube. Añadir nuevos recursos a nuestra infraestructura de red es muy sencillo y seguro, ya que sólo necesitamos una clave cifrada que nos permita conectar con la infraestructura y un usuario autorizado por el administrador de la nube.

– El uso de tarifas basadas en el gasto elástica de los recursos, acerca los servicios para la mayoría de empresas y / o usuarios que no quieren malgastar dinero y recursos para su sistema informático.

Las nubes pueden ser utilizadas para gestionar incrementos de las necesidades informáticas tanto de usuarios no muy avanzados como de grandes empresas. Según las políticas de las nubes y de los servicios que ofrecen, ellos determinan un precio y se cobra por el uso de la máquina o servicio, así podremos sol ∙ licitar más o menos recursos según nuestras necesidades, obtener más recursos puntualmente si nos quedamos cortos o recortar si nos sobran. Este nuevo modelo de precios nos ofrece la posibilidad de igualar el precio de tener 1 máquina funcionando 100 horas a pleno rendimiento, con 100 máquinas trabajando sólo 1 hora con las ventajas que ello conlleva para empresas con necesidades de cálculo muy elevadas. De esta manera lo que obtenemos es un coste más real al consumo producido ya la vez nos permite un sistema escalable sin tener que preocuparnos por el coste del nuevo hardware ni el mantenimiento, sólo pagaremos por el uso que hacemos.

Metodología de Virtualización en nube

La computación en nube nos ofrece un nuevo punto de vista a la hora de hablar de versatilidad en términos de infraestructura de servidores y de aplicaciones en sistemas escalables. Para esta nueva infraestructura es necesario diferenciar las implementaciones de forma que podemos hablar de computación en nube en 3 capas. A continuaciòn se clasifican las diferentes capas en función de los servicios que podemos ofrecer.

SaaS: Software como Servicio, es la capa más alta y nos permite disponer de una aplicación terminada para que esté a disposición de los usuarios finales en un sistema escalable. Por ejemplo Gmail es un producto de Google implementado como SaaS

PaaS: Plataforma como Servicio, es la capa del medio y ofrece servicios de almacenamiento, tiempo de cómputo y otros servicios para simplificar el desarrollo de aplicaciones, especialmente de páginas web.

Un ejemplo de PaaS se Google Engine App o Windows Azure que nos ofrecen servicios que respaldo aplicaciones mayoritariamente web. Los lenguajes soportados son el java y Python en el caso de Google Engine Apps. Microsoft dispone de Windows Azure como servicio, que es compatible con visual studio y soporta SOAP, REST, XML y PHP.

IaaS: Infraestructura como Servicio, es la capa inferior y nos ofrece la posibilidad de tener como servicio, máquinas virtuales cargadas con una imagen predefinida, con almacenamiento, tiempo de cómputo y una infraestructura de red. Un ejemplo es Amazon EC2

Tipología de la nube

Cualquiera de las implementaciones de la computación en nube pasa por hacer una diferenciación entre 3tipos de nubes: públicos, privados e híbridos. Las nubes públicas, son aquellas empresas que nos ofrecen servicios de computación en una nube preestablecido y público. Estas empresas tienen montada su propia infraestructura de nube y por un coste según el consumo que hacemos, nos ofrecen las diferentes implementaciones posibles de las nubes (IaaS, SaaS, PaaS). Esto conlleva que los trabajos de los diferentes usuarios ejecuten todos en los mismos servidores, dicho de otro modo, los usuarios no saben realmente dónde se encuentran sus datos. En este modelo los usuarios no son propietarios de ningún hardware, sólo lo son de sus datos. La versatilidad de la nube permite que pueda ser interesante tanto para usuarios como pequeñas y medianas empresas que no quieran tener una infraestructura de servidores ni gastar dinero en su mantenimiento del hardware ni las actualizaciones. Como ejemplo de nube pública hay Amazon EC2 y Google Engine Apps.

Las nubes privadas son aquellas en que un usuario es propietario de las máquinas, los discos y de la red, donde se implementa una arquitectura de nube de forma privada. Esta tipología nos permite disponer de las diferentes capas IaaS, SaaS, PaaS en función de las necesidades de la empresa. En este caso podremos decidir qué usuarios tienen acceso a la nube, qué aplicaciones y servicios corren en cada máquina. En el mercado podemos encontrar software que nos permite montar una infraestructura de nube en nuestras máquinas, por ejemplo Eucalyptus Open Source, VMware Sphere, OpenNebula.

Las nubes híbridos son en esencia una mezcla de los 2 modelos anteriores tanto el público como el privado. El objetivo es tener una nube privada con los servicios necesarios y distribuir la carga en función de las necesidades informáticas a una parte pública compartida por una tercera empresa, que nos ofrece escalabilidad externa por un precio por uso. La idea de nube híbrido es interesante para las empresas pero, hay que tener en cuenta que muchos procesos de sincronización en bases de datos podrían traer problemas de demora y costes añadidos a los servicios. Esto conlleva cierta complejidad a la hora de determinar cómo distribuir la carga en una nube híbrido, donde por el momento determinan que deben ser aplicaciones pequeñas sin muchos condicionantes.

Alternativas de software
Entre muchas de las alternativas de software encontramos OpenNebula, Microsoft Azure, VMware sphere4 y Eucalyptus que se describirán a continuación.

OpenNebula
OpenNebula es uno de los proyectos que pretende desarrollar un conjunto de herramientas de nivel empresarial para la construcción de cualquier tipo de nube ofreciendo una infraestructura como servicio (IaaS). Ofrece a los usuarios de infraestructuras una plataforma elástica para permitir la escalabilidad de servicios para satisfacer las demandas dinámicas de recursos. El proyecto OpenNebula es una herramienta abierta y flexible que se adapta a los entornos de centros de datos para construir cualquier tipo de implementación en nube. Puede ser utilizada principalmente como una herramienta de virtualización para gestionar la infraestructura virtual en el centro de datos o el clúster. OpenNebula también puede escalar dinámicamente en muchas nubes externos, por lo que permitirá la construcción de una nube híbrido. OpenNebula hace lo siguiente:
– Administración las redes virtuales: redes de interconexión virtual entre máquinas virtuales.
– Crear máquinas virtuales donde agrega la descripción en la base de datos.
– Ejecuta máquinas virtuales. De acuerdo con la política de asignación, el planificador decide ejecutar las máquinas virtuales
– Administración de imágenes, antes de ejecutarse las imágenes se transfieren a las máquinas virtuales. Después de la ejecución, las imágenes pueden ser copiadas de nuevo al repositorio.
– Administración de las máquinas en ejecución donde se inician de forma periódica se pueden obtener sus consumos, sus estados y pueden ser apagadas, suspendidas o paradas.

Los principales componentes funcionales de una nube privada OpenNebula son los siguientes:

– Hypervisor: es el gestor de virtualización instalado en los recursos del cluster que OpenNebula aprovecha para la gestión de las máquinas virtuales dentro de cada host.
– Virtual Infrastructure Manager: es el gestor centralizado de máquinas virtuales y de los recursos, que nos proporciona una gestión virtual de la red. También gestiona el ciclo de vida de las máquinas virtuales y la tolerancia a los fallos.
– El planificador: nos permite diferentes políticas para el balanceo de la carga.
OpenNebula adopta una arquitectura clásica, un front-end, y un conjunto de nodos del clúster en el que se ejecutan las máquinas virtuales. Al menos debe haber una red física que una todos los nodos del clúster y el front-end.

Los componentes básicos de un sistema de OpenNebula son:
– Un front-end, donde se ejecuta el OpenNebula y servicios de clúster.
Nodos, son máquinas que deben tener capacidades para soportar el hipervisor para proporcionar los recursos necesarios para las máquinas virtuales.
– Un repositorio de imágenes, es cualquier medio de almacenamiento que contiene las imágenes de las máquinas virtuales.
– Un servicio OpenNebula, que es el servicio principal del sistema. Gestiona las máquinas virtuales y administra los subsistemas de clúster (red, almacenamiento y hipervisores)
– Drivers, son los programas utilizados por el núcleo y los subsistemas de clúster, por ejemplo, un determinado hipervisor o un sistema de almacenamiento de archivos.
– El usuario hace uso del servicio OpenNebula para crear y administrar sus propias máquinas virtuales.

Los nodos físicos pueden tener implementadas diferentes soluciones de hipervisores como XEN, KVM, o VMware. OpenNebula puede ejecutar máquinas virtuales y recopilar información sobre los recursos físicos y virtuales de todos los sistemas. También puede interactuar con los servidores de «Amazon EC2».
La arquitectura interna OpenNebula se puede dividir en tres capas:
– Herramientas
– Núcleo
– Drivers

Herramientas
Esta capa contiene las herramientas distribuidas con OpenNebula, como el intérprete de comandos, el planificador y también herramientas de terceros.
– Intérprete de comandos: utilidad para los administradores de infraestructuras y los usuarios que proporciona OpenNebula para manipular manualmente la infraestructura virtual.
– Planificador: es una entidad independiente en la arquitectura OpenNebula, que se puede adaptar fácilmente o cambiar, ya que está disociado del resto de los componentes. el planificador permite distribuir los recursos y la carga.

OpenNebula núcleo

El núcleo está formado por un conjunto de componentes para controlar y vigilar las máquinas virtuales, las redes virtuales y el almacenamiento. Los principales componentes funcionales del núcleo OpenNebula son:
– Soltud Manager, para gestionar las solicitudes del cliente. Virtual Machine Manager, para gestionar y supervisar las máquinas virtuales. Transfer Manager, para gestionar las imágenes VM. Virtual Network Manager, para gestionar las redes virtuales. Host Manager, para gestionar y supervisar los recursos físicos. Base de datos, almacenamiento persistente para las estructuras de datos. Drivers OpenNebula tiene un conjunto de módulos integrados para interactuar con los diferentes controladores.