Computación en la Nube con Amazon EC2

37
Proyecto sobre el tema de interés AWS - 2009/2010 Cloud Computing con Amazon EC2 Pablo Iñigo Blasco Ignacio Trevilla García Miguel Ángel Pérez Valencia

description

El paradigma Cloud Computing se centra en solucionar uno de los problemas fundamentales e históricos que en la actualidad que se enfrentan las ITs cuando tienen que hacer uso de servicios o aplicaciones en Internet: La necesidad de incrementar la capacidad de usuarios manteniendo la calidad en el servicio, mejorar la disponibilidad o añadir funcionalidades al vuelo en sus servicios en Internet sin tener que realizar una inversión y planificación en una nueva infraestructura, entrenar a nuevo personal o cambiar el software existente en toda la infraestructura. El presente trabajo pretende abordar la explicación de los conceptos básicos de lo que se conoce como Cloud Computing, pero sobre todo pretende analizar y detallar como está siendo abordado dicho paradigma por Amazon centrándose en el servicio conocido como Amazon Elastic Cloud Computing (Amazon EC2).

Transcript of Computación en la Nube con Amazon EC2

Page 1: Computación en la Nube con Amazon EC2

Proyecto sobre el tema de interés

AWS - 2009/2010

Cloud Computing con Amazon EC2

Pablo Iñigo Blasco Ignacio Trevilla García Miguel Ángel Pérez Valencia

Page 2: Computación en la Nube con Amazon EC2

Cloud Computing con Amazon EC2 - AWS 09-10 Licencia Creative Commons By-Nc-Sa

Licencia y copyrightEl presente trabajo se encuentra bajo la licencia Creative Commons By-Nc-Sa que le permite crear trabajos derivados y redistribuirlos atribuyendo a los autores originales el copyright correspondiente siempre y cuando además mantenga la licencia y no use la obra con fines comerciales.

El propósito de usar tal licencia es el permitir que futuros alumnos puedan aprovechar nuestro trabajo para ampliarlo o utilizarlo en otro trabajo distinto, sin que los autores originales, nosotros, pierdan el crédito por el esfuerzo realizado y que futuras versiones sigan los mismos términos.

Copyright y algunos derechos reservados por:

• Pablo Iñigo Blasco

• Ignacio Trevilla García

• Miguel Ángel Pérez Valencia

Página 1

Page 3: Computación en la Nube con Amazon EC2

Cloud Computing con Amazon EC2 - AWS 09-10 Licencia Creative Commons By-Nc-Sa

Versión1.0 Junio 2010 Versión inicial del trabajo

1.1 Septiembre 2010 Inclusión de los términos de licencia CC By-Nc-Sa y algunos cambios en el formato

Página 2

Page 4: Computación en la Nube con Amazon EC2

Cloud Computing con Amazon EC2 - AWS 09-10 Licencia Creative Commons By-Nc-Sa

Índice de contenidoResumen.......................................................................................................................................................... 7Introducción...................................................................................................................................................... 7El paradigma Cloud Computing........................................................................................................................ 8

Cloud Hosting.............................................................................................................................................. 9Diagrama de Conceptos del Cloud Computing .........................................................................................10Interés actual en Cloud Computing............................................................................................................10

Descripción de Amazon EC2 .........................................................................................................................11Aspectos técnicos...................................................................................................................................... 12

Instancia............................................................................................................................................... 12Potencia de cómputo (ECU)................................................................................................................. 12Zonas de disponibilidad........................................................................................................................12Gestión del servicio.............................................................................................................................. 13Escalabilidad, elasticidad y distribución de carga.................................................................................13

Aspectos económicos................................................................................................................................ 13Tipos de servicios adicionales................................................................................................................... 16

Servicios complementarios a IaaS........................................................................................................16Elastic Block Storage (EBS)............................................................................................................16Auto Scaling & Cloud Watch............................................................................................................17Elastic Load Balancing.................................................................................................................... 17Virtual Private Cloud (VPC).............................................................................................................18

Servicios complementarios a PaaS......................................................................................................18Simple Storage Service (S3)...........................................................................................................18Relational Database Service (RDS).................................................................................................18Simple Queue Service (SQS)..........................................................................................................18Simple DB........................................................................................................................................ 18

Diagrama de conceptos del Cloud Computing con Amazon EC2 .............................................................19Crecimiento y futuro de EC2...................................................................................................................... 19

Caso de estudio ............................................................................................................................................. 21Descripción de la empresa y su servicio....................................................................................................21Definición del problema ............................................................................................................................ 21Estudio de demanda.................................................................................................................................. 21Propuesta de solución con Amazon WebServices.....................................................................................22

Requisitos............................................................................................................................................. 22Servicios involucrados..........................................................................................................................22

Servicio de almacenamiento de bloques EBS.................................................................................22Servicio de base de datos RDS.......................................................................................................22Amazon Auto-Scaling & Elastic Load Balancer...............................................................................23Amazon EC2................................................................................................................................... 23

Arquitectura ......................................................................................................................................... 23Planificación de costes de la propuesta con Amazon Web Services....................................................25

Conclusiones.................................................................................................................................................. 27FAQ................................................................................................................................................................ 29Resumen de esfuerzo..................................................................................................................................... 34Referencias..................................................................................................................................................... 36

Página 3

Page 5: Computación en la Nube con Amazon EC2

Cloud Computing con Amazon EC2 - AWS 09-10 Licencia Creative Commons By-Nc-Sa

Índice de ilustracionesIlustración 1: SaaS sobre servicios de Cloud Computing.................................................................................8Ilustración 2: Evolución del hosting................................................................................................................... 9Ilustración 3: Diagrama de conceptos del Cloud Computing..........................................................................10Ilustración 4: Gráfica sobre porcentaje de ofertas de empleo con el termino "cloud computing"....................11Ilustración 5: Gráfica de Google Trends para el término "cloud computing"...................................................11Ilustración 6: Precio/hora por tipo de instancia y modo de contratación.........................................................15Ilustración 7: Gráfica de monitorización de instancias en Cloud Watch..........................................................17Ilustración 8: Diagrama de conceptos de Cloud Computing con Amazon EC2...............................................19Ilustración 9: Ancho de banda consumido por AWS respecto del resto de webs de Amazon.........................20Ilustración 10: Top 500k de sitios en Cloud - Marzo 2010...............................................................................20Ilustración 11: Gráfica de la demanda según horario del caso de estudio .....................................................22Ilustración 12: Arquitectura de la solución propuesta para el caso de estudio................................................23

Página 4

Page 6: Computación en la Nube con Amazon EC2

Cloud Computing con Amazon EC2 - AWS 09-10 Licencia Creative Commons By-Nc-Sa

Índice del FAQ- ¿Qué es Cloud Computing? ........................................................................................................................ 29- ¿Qué ventajas ofrece Cloud Computing? ....................................................................................................29- ¿Todo son ventajas? .................................................................................................................................... 29- ¿Qué perspectivas de futuro tiene el Cloud Computing? ¿Será la forma de alojamiento del futuro? ..........29- ¿Que empresas ofrecen servicios basados en Cloud Computing? .............................................................30- ¿Que tipo de aplicaciones son las mejores candidatas para cloud computing? ..........................................30- ¿Qué es Amazon EC2? ............................................................................................................................... 30- ¿Qué otros servicios ofrece Amazon relacionados con EC2? .....................................................................30- ¿Ejemplos reales de empresas u organizaciones que hayan migrado a Amazon EC2? (a ser posible españolas) ..................................................................................................................................................... 30- ¿Qué criterios usa Amazon a la hora de facturar por el uso de sus servicios? ...........................................31- ¿Qué es una hora de uso de instancia?.......................................................................................................31- Tengo una aplicación que quiero migrar a Amazon EC2 ¿Cómo puedo medir las horas de uso para saber cuando podría costar?.................................................................................................................................... 31- ¿Es rentable para Amazon proveer estos servicios? ...................................................................................31- ¿Qué se debe tener en cuenta a la hora de realizar una aplicación si se quiere alojar en los servicios de Cloud Computing que ofrece Amazon? .........................................................................................................31- ¿Como se realizan las indemnizaciones en caso de incumplimiento de contrato? .....................................32- ¿Cual podría ser el coste de correr una aplicación web corriente en Amazon EC2? ..................................32- ¿Qué tipo de aplicaciones se obtienen un mayor beneficio gracias a Amazon EC2? .................................32- ¿Cómo se gestionan las instancias? ...........................................................................................................33- ¿Qué es una AMI?........................................................................................................................................ 33- ¿Qué es una ECU?...................................................................................................................................... 33- ¿Qué es Utility Computing?.......................................................................................................................... 33

Página 5

Page 7: Computación en la Nube con Amazon EC2

Cloud Computing con Amazon EC2 - AWS 09-10 Licencia Creative Commons By-Nc-Sa

ResumenEl paradigma Cloud Computing se centra en solucionar uno de los problemas fundamentales e históricos que en la actualidad que se enfrentan las ITs cuando tienen que hacer uso de servicios o aplicaciones en Internet: La necesidad de incrementar la capacidad de usuarios manteniendo la calidad en el servicio, mejorar la disponibilidad o añadir funcionalidades al vuelo en sus servicios en Internet sin tener que realizar una inversión y planificación en una nueva infraestructura, entrenar a nuevo personal o cambiar el software existente en toda la infraestructura.

El presente trabajo pretende abordar la explicación de los conceptos básicos de lo que se conoce como Cloud Computing, pero sobre todo pretende analizar y detallar como está siendo abordado dicho paradigma por Amazon centrándose en el servicio conocido como Amazon Elastic Cloud Computing (Amazon EC2).

IntroducciónEn este apartado se realiza una introducción al contexto de trabajo, la web, la web orientada a servicios, la situación empresarial y los problemas potenciales de escalabilidad con los que se enfrenta hoy día.

La nube, o Cloud es una infraestructura hardware que puede hospedar aplicaciones y servicios con gran capacidad de escalabilidad y disponibilidad. Los proveedores de esta infraestructura presentan un modelo pay-per-use, de modo que el uso de esta infraestructura presenta un servicio en sí. La principal ventaja del modelo es la capacidad y flexibilidad a la hora de escalar una aplicación o servicio para que sea capaz de soportar mayor número de usuarios o picos de demanda mayores. Existen muchos servicios basados en Cloud públicos en Internet con amplio reconocimiento. Algunos ejemplos de aplicaciones web que se sustentan en este paradigma son Tweeter, Google Docs o Menéame. Se trata de servicios que están sujetos al uso de muchos usuarios de manera simultanea. Estas aplicaciones requieren una infraestructura subyacente muy potente aunque por el contrario no siempre hacen uso completo de ella. Como consecuencia aparece un concepto muy importante en el Cloud Computing: Compartir la infraestructura. Mientras las aplicaciones unas en la nube no están usando demasiados recursos, otras aplicaciones pueden estar haciendo uso de ellos. Conceptos como acuerdos a nivel de servicio que aseguren un ratio de disponibilidad, rendimiento y calidad toman una gran importancia en este paradigma.

Este paradigma es joven por lo que es difícil encontrar definiciones de conceptos totalmente aceptadas. Además "Cloud computing" son palabras que actualmente están de moda (Buzz Words) ya que actualmente representan un nicho de mercado muy potente y en crecimiento por lo que cada organización enfoca los conceptos de este paradigma desde un punto de vista propio según sus intereses.

El presente estudio ofrece una vista general flexible y abierta de los conceptos básicos de Cloud Computing centrándose en el enfoque de Cloud que Amazon, la empresa mejor posicionada actualmente en este sector. El estudio se centrará el servicio de Cloud principal de Amazon: EC2.

Para una mejor comprensión el trabajo se ha dividido en varias secciones. En la primera sección se realizará una introducción al contexto del trabajo en la situación empresarial actual y a los problemas que se presentan. En la segunda sección se comentará de que trata el paradigma del Cloud Computing y que utilidad tiene, en el contexto mencionado en la sección anterior, para resolver algunos de los problemas presentados y definir conceptos que son necesarios para entender el resto del trabajo y pavimentar el camino a otros trabajos relacionados con Cloud Computing para que puedan obviar esta parte, por lo que nos hemos extendido en los conceptos todo lo que hemos considerado necesario. En la tercera sección se explicará como se han aplicado los conceptos del paradigma para en el caso de los servicios ofrecidos por Amazon y más concretamente el servicio Amazon EC2. En la cuarta sección presentaremos un caso de estudio que permita, de una manera práctica, comprender mejor que es lo que ofrece Amazon EC2 y las diferencias respecto a una solución no basada en Cloud Computing. En la quinta sección realizaremos un análisis sobre los resultados comparativos del caso de estudio de la sección anterior dando relevancia sobre todo al factor coste. En la sexta y última sección se expondrán algunas conclusiones que han obtenido los miembros del grupo tras la realización de este trabajo.

Página 6

Page 8: Computación en la Nube con Amazon EC2

Cloud Computing con Amazon EC2 - AWS 09-10 Licencia Creative Commons By-Nc-Sa

El paradigma Cloud ComputingSe podría definir el término Cloud Computing como el ofrecer un servicio a través de Internet consistente en prestar acceso a recursos de computación, de modo que el cliente no tiene que preocuparse de la gestión y mantenimiento de la infraestructura subyacente que se usa para prestar esos servicios, si no sólo de usar los recursos contratados para realizar sus actividades. Por la parte del proveedor el prestar servicios de esta manera le permite optimizar su inversión en hardware y mantenimiento, ya que aprovecha el hardware al máximo al distribuir esos recursos entre todos sus usuarios minimizando el desperdicio. Por la parte del cliente el no depender de un hardware o infraestructura física concreta le permite centrase en el uso que hace de ella ahorrándose los costes de mantenimiento, además de que siempre que necesite mas recursos simplemente deberá contratarlos al proveedor que los pondrá rápidamente a su disposición, con lo que se permite una gran escalabilidad y una optimización del gasto al tener siempre contratado lo que se necesita y al pagar sólo lo que se usa.

Sobre el concepto de este paradigma se distinguen 3 tipos de servicios basados en Cloud Computing:

● Infrastructure as a Service (IaaS): El servicio que se ofrece es una infraestructura y recursos virtuales, similares a los existentes en cualquier ordenador, sobre los cuales se puede ejecutar una plataforma de aplicaciones, como por ejemplo un sistema operativo.

● Platform as a Service (PaaS): El servicio que se ofrece es una plataforma, compuesta por ejemplo por servidores de aplicaciones y/o bases de datos, sobre la cual los clientes pueden ejecutar sus aplicaciones. El proveedor del servicio se encargará de gestionar los recursos disponibles en la plataforma para que la aplicación del cliente esté siempre funcionando de manera óptima.

● Software as a Service (SaaS): El servicio que se ofrece es una aplicación orientada al usuario final, el cual la accede a través de Internet, y cuyo uso es lo que los clientes contratan al proveedor. Este tipo ya existía actualmente y se ha estado explotando sin relación con Cloud Computing, pero en nuestro caso cuando mencionamos SaaS nos referimos específicamente a aquellas aplicaciones que funcionan sobre servicios de alguno de los otros dos tipos (IaaS o PaaS), dejando para otro momento una definición más precisa del término. La mayoría de aplicaciones que funcionan sobre un Cloud son aplicaciones que entran en este tipo de servicio, convirtiendo al proveedor de la aplicación en proveedor de SaaS a la vez que es usuario del proveedor de servicios de Cloud, tal y como ilustra la siguiente figura[12]:

El Cloud Computing se basa en recursos de computación disponibles online, a cuyo conjunto de hardware y software que le permite funcionar denominaremos Cloud, pero esos recursos pueden no estar accesibles a cualquier usuario y el uso que haga de ellos el proveedor de los mismos hace que podamos distinguir dos tipos de Cloud:

● Public Cloud: Son aquellos Clouds que son comercializados por sus propietarios de manera pública que los recursos sean explotados por terceros. Un buen ejemplo de esto es Amazon EC2.

● Private Cloud: Los Cloud privados son aquellos que son utilizados dentro de los límites de una

Página 7

Ilustración 1: SaaS sobre servicios de Cloud Computing

Page 9: Computación en la Nube con Amazon EC2

Cloud Computing con Amazon EC2 - AWS 09-10 Licencia Creative Commons By-Nc-Sa

organización pero cuya explotación no es comercializada públicamente como en el caso de Public Cloud.

Cloud HostingCloud Hosting no es mas que la aplicación de los conceptos de Cloud Computing para ofrecer un servicio de hosting pero sobre una infraestructura Cloud Computing, en lugar de sobre un hardware concreto o sobre sistemas virtualizados que comparten hardware. Se puede entender como Cloud Hosting a la evolución, desde el punto de vista de los proveedores de servicio de hosting, de la tecnología sobre la que realizaban sus servicios tendiéndose siempre hacia un mejor aprovechamiento de los recursos hardware disponible en el lado del proveedor y a una mayor economía en el gasto por servicios contratados, pero con mejores prestaciones, en la parte del cliente. Esto se ilustra en el siguiente gráfico[16]:

En todos los casos no podemos perder de vista el hecho de que se está tratando a la nube como una utilidad (Utility Computing), al estilo de las redes de abastecimiento de agua y electricidad de nuestras ciudades, donde contratamos unas capacidades y pagamos por el uso que hacemos de ellas. Esto no es algo nuevo, recordemos por ejemplo el sistema operativo predecesor de los sistemas Unix, pero estamos en el momento en el cual la tecnología lo permite y las empresas están apostando por ello. Atributos del Cloud Computing La consultora Gartner[17] ha identificado 5 atributos que se encuentran normalmente en los servicios ofertados de Cloud Computing, aunque cada servicio se ajusta a estos atributos de manera diferente:

● Basado en servicios: El cliente utiliza el servicio de manera transparente a todo lo que hay detrás (hardware, infraestructura, mantenimiento, disponibilidad, ...). Las características del servicio se rigen por las necesidades concretas del cliente y por niveles de servicio que por cuestiones tecnológicas.

● Escalable y elástico: La escalabilidad se refiere a la habilidad de añadir o eliminar recursos del servicio y es una característica que tiene que proveer la infraestructura subyacente. Entre tanto la

Página 8

Ilustración 2: Evolución del hosting

Page 10: Computación en la Nube con Amazon EC2

Cloud Computing con Amazon EC2 - AWS 09-10 Licencia Creative Commons By-Nc-Sa

elasticidad está mas relacionada con el modelo económico en tanto que permite incrementar y decrementar los recursos de manera automatizada para atender la demanda real del servicio y minimizar costes.

● Compartido: Los servicios comparten una piscina de recursos para aprovechar las economías de escala y maximizar el uso de esos recursos ya que estarán siendo utilizados a la vez por múltiples clientes con distintos fines.

● Medida de uso: El proveedor del servicio establece unas medidas de uso sobre las cuales define sus precios y planes de pago. Esto permite al proveedor definir pagos por uso, planes de descuento, ofertas e incluso servicios gratuitos que le permitan atraer mas usuarios a su servicio.

● Uso de tecnologías de Internet: Los servicios llegan a los clientes a través de tecnologías de Internet sobre protocolos como HTTP, REST y otras tecnologías de la web.

Nosotros por nuestra parte añadiríamos un atributo mas para caracterizar la abundancia de los recursos que necesita el servicio para escalar de manera elástica. Tal es la abundancia y la facilidad para incrementar el uso de recursos que da la impresión de no tener límite y por ello denominamos al atributo Recursos virtualmente ilimitados.

Diagrama de Conceptos del Cloud Computing Para ilustrar los conceptos y facilitar su comprensión se ha preparado un diagrama con los conceptos más importantes involucrados en el paradigma de Cloud Computing. En el diagrama se representan los conceptos relacionados entre sí comenzando por la definición principal del Cloud Computing y extendiendo las relaciones por los conceptos adyacentes.

Interés actual en Cloud ComputingEl Cloud Computing y el SaaS están de moda actualmente, lo que significa que hay mucho buzz alrededor de esos conceptos y los sectores involucrados comienzan a buscar empleados que estén preparados para atacar las posibilidades que ofrece. Esta tendencia la podemos observar en las ocurrencias de las palabras 'cloud' y 'computing' en sitios de publicación de ofertas de empleo como indeed.com[7], observándose como hay un notable incremento desde enero del 2008 hasta enero del 2010.

Página 9

Ilustración 3: Diagrama de conceptos del Cloud Computing

Page 11: Computación en la Nube con Amazon EC2

Cloud Computing con Amazon EC2 - AWS 09-10 Licencia Creative Commons By-Nc-Sa

También podemos usar google trends para obtener una gráfica que nos muestre la tendencia en cuanto a las búsquedas sobre estos términos:

En la cual podemos observar como a partir de finales de 2007 comienza a generarse más búsquedas y noticias sobre estos dos términos y como en la actualidad parece mantenerse cierta tendencia al alza en el número de búsquedas, lo que ratifica el interés actual sobre este tema y como las noticias atraen un mayor interés sobre el.

Descripción de Amazon EC2 La empresa Amazon ofrece desde hace tiempos ciertos servicios a través de su subsidiaria Amazon Web Services LLC, ofrecidos para ser explotados por desarrolladores mediante servicios web sobre REST, entre los que ahora se incluyen servicios basados en Cloud Computing de entre los cuales Amazon Elastic Compute Cloud (Amazon EC2) es el objetivo de este trabajo.

Página 10

Ilustración 4: Gráfica sobre porcentaje de ofertas de empleo con el termino "cloud computing"

Ilustración 5: Gráfica de Google Trends para el término "cloud computing"

Page 12: Computación en la Nube con Amazon EC2

Cloud Computing con Amazon EC2 - AWS 09-10 Licencia Creative Commons By-Nc-Sa

Aspectos técnicosTécnicamente no se conocen los detalles internos de como funciona el Cloud de Amazon, pero si se conocen los detalles técnicos del servicio que ofrece, que son los que importan a los clientes ya que Cloud Computing, entre otras cosas, trata de la abstracción respecto a los detalles técnicos concretos, como ya hemos comentado anteriormente. Amazon ofrece su servicio EC2 como un servicio tipo IaaS. Los clientes del servicio suben a EC2 una imagen de un sistema operativo virtualizado la cual se arrancará y se ejecutará en el Cloud de Amazon.

InstanciaEn EC2 se define el término instancia como un conjunto de recursos de computación que estarán disponibles para una imagen en ejecución y es el símil de lo que sería un hardware real sobre el que ejecutar un sistema operativo. Cuando contratas una nueva instancia tienes que elegir un tipo de entre los predeterminados, lo cual determina los recursos máximos disponibles para esa instancia. Por ejemplo una instancia estándar dispone de los siguientes recursos:

● 1,7 GB de memoria RAM .● 1 unidad de computo (equivale a un procesador) .● 160 GB de almacenamiento en la instancia .

Los recursos de memoria, computación y el espacio de disco que usa la instancia están reservados, pero el ancho de banda y el medio de almacenamiento de disco subyacente está compartido entre todas las instancias, por ello si cada instancia en funcionamiento intenta usar tanto ancho de banda o realizar tantas operaciones de IO como pueda todas recibirán una parte proporcional, pero si hay instancias que usen menos de esos recursos el sobrante puede ser aprovechado por otras instancias. Pero no todas las instancias tienen acceso a dichos recursos de la misma manera ya que hay definidos dos niveles diferentes de rendimiento en la IO. Uno es el nivel bajo y el otro es el nivel alto. En el alto cuando se requieren mas recursos se asignan en cantidades mucho mayores que en el nivel bajo que reciben asignaciones mas pequeñas, afectando esto por tanto al rendimiento de las aplicaciones.

Las instancias de por si no incluyen ningún software, al igual que un pc recién comprado que no incluye sistema operativo, por tanto hay que utilizar una imagen de un sistema operativo que será cargado en la instancia y puesto a funcionar cuando ésta se inicie. Las imágenes tienen que estar realizadas de una manera determinada para que EC2 sea capaz de arrancarlas y ejecutarlas, siendo dicho formato denominado Amazon Machine Image o AMI, término que usaremos de ahora en adelante. Los tipos de sistemas operativos soportados son Windows y Linux (prácticamente cualquier distribución), pero para usar un sistema operativo en EC2 es necesario incluir en el kernel del sistema extensiones de virtualización que permitan la ejecución en el Cloud de Amazon.

Potencia de cómputo (ECU)En las instancias el recurso que modela lo que sería el procesador de un servidor tradicional se denomina ECU (EC2 Compute Unit) el cual es la unidad de computo de la instancia. Un ECU provee la potencia de computo equivalente de un procesador a 1.0-1.2 GHz Opteron o Xeon del año 2007. Esta definición se ha establecido de manera que permita a los clientes saber aproximadamente el rendimiento de un tipo de instancia, habiendo algunos que incorporan hasta 20 ECUs. Los diferentes tipos de instancias y sus características se comentarán en el apartado dedicado a los detalles económicos de Amazon EC2.

Zonas de disponibilidadAmazon ofrece los servicios de EC2 desde centros de proceso de datos en 4 regiones diferentes, dos en Estados Unidos, una tercera en Europa y la cuarta en Asia. A cada región se las denomina zona de disponibilidad y cuando se contrata una instancia para una de esas zonas ya no se puede cambiar su ubicación. Lo habitual es contratar las instancias en la zona de disponibilidad mas próxima si los clientes del servicio van a estar ubicados en una zona concreta o tener instancias en todas las zonas de disponibilidad si el servicio va a ser accedido por clientes distribuidos globalmente.

Página 11

Page 13: Computación en la Nube con Amazon EC2

Cloud Computing con Amazon EC2 - AWS 09-10 Licencia Creative Commons By-Nc-Sa

Gestión del servicioEl control de la contratación de instancias, la gestión del estado de las mismas y otras operaciones se pueden realizar tanto desde la web de Amazon Web Services, donde el cliente de EC2 dispondrá de un panel de control desde el que gestionar sus instancias, llamado AWS Management Console, como desde una extensión de Firefox o desde una aplicación a medida realizada por terceros ya que existe una API en forma de servicio web REST que permite realizar la gestión del servicio. Hay que destacar que todos los servicios ofrecidos por Amazon Web Services disponen de una API que permite a los desarrolladores integrar esos servicios con sus aplicaciones, lo cual teóricamente permitiría que las aplicaciones funcionando en el Cloud de Amazon pudieran gestionar ellas mismas algunos aspectos de manera automática.

Escalabilidad, elasticidad y distribución de cargaEn EC2 la escalabilidad la proporciona la facilidad con la cual uno puede contratar nuevas instancias para hacer frente a un pico de carga y la elasticidad la provee el hecho de que las instancias se pueden añadir o eliminar bajo demanda siendo necesario esperar tan solo unos minutos. De este se pueden limitar los recursos existentes a lo estrictamente necesario minimizando el desperdicio por sobreprovisionamiento.

La escalada de recursos se puede realizar de manera automática mediante un servicio adicional denominado Amazon Cloud Watch, que se encarga de monitorizar las instancias y que además provee adicionalmente, sin coste para el cliente a parte de lo que cueste Cloud Watch, el servicio Auto Scaling, el cual permite definir reglas ciertas condiciones que harán que se creen nuevas instancias o que se detengan algunas de las existentes, manteniendo así el número de instancias activas a medida de las necesidades de la aplicación de manera transparente.

También existe un servicio adicional de interés, denominado Amazon Elastic Load Balancer, que permite la distribución de la carga entre varias instancias para una mayor seguridad y tolerancia a fallos, dado que también es capaz de detectar instancias que no funcionan correctamente y redirigir el tráfico hacia otras instancias que funcione correctamente. Este servicio es opcional ya que los clientes pueden definir esta parte de la arquitectura de la manera que deseen.

Si fuera necesario y como ya hemos comentado en el punto anterior, Amazon tiene una API tipo servicio web REST que permitiría a los desarrolladores que la propia aplicación gestionara la escalada de recursos.

Aspectos económicosAmazon ofrece 3 formas de contratación de instancias, contratación de instancia bajo demanda, contratación de instancia reservada (por uno o tres años) y contratación de instancia SPOT.

Además, Amazon ofrece distintas características de instancia para poder seleccionar cual es la que mejor se adapta a nuestras necesidades. Así, ofrece 4 distintas regiones (EEUU Virginia, EEUU California, Irlanda y Singapur) para que según donde nos encontremos, la latencia sea menor. Además, ofrece distintas características en cuanto al tipo de instancia. Los tipos existentes son: Standard, High-Memory y High-CPU. Dentro de estas tres divisiones hay otras subdivisiones en función del "tamaño" (cantidad de recursos). Dentro de Standard hay 3 subdivisiones (Small, Large y Extra Large). Dentro de High-Memory hay 3 subdivisiones (High-Memory Extra Large, High-Memory Double Extra Large y High-Memory Quadruple Extra Large) y dentro de High-CPU hay 2 subdivisiones (High-CPU Medium y High-CPU Extra Large). Todas las instancias son plataformas de 64 bit excepto la Standard Small y la High-CPU Medium que son de 32 bit, respecto al rendimiento de la IO todas tienen un rendimiento alto excepto la Standard Small, la High-CPU Medium y la High-Memory Extra Large que tienen un rendimiento moderado. El resto de características de las instancias se resumen en la siguiente tabla:

Tamaño Standard High-Memory High-CPU

Small RAM: 1,7 GBECUS: 1HD: 160 GB

Medium RAM: 7,5 GB RAM: 1,7 GB

Página 12

Page 14: Computación en la Nube con Amazon EC2

Cloud Computing con Amazon EC2 - AWS 09-10 Licencia Creative Commons By-Nc-Sa

ECUS: 4HD: 850 GB

ECUS: 5HD: 350 GB

Large RAM: 15 GBECUS: 8HD: 1960 GB

Extra Large RAM: 17,1 GBECUS: 6,5HD: 420 GB

RAM: 7 GBECUS: 20HD: 1960 GB

Double Extra Large RAM: 34,2 GBECUS: 13HD: 850 GB

Quadruple Extra Large RAM: 68,4 GBECUS: 26HD: 1960 GB

Las instancias siempre se pagan por horas de uso, aunque una persona desee que su instancia este activa 5 minutos, debe pagar una hora por ella ya que sólo se facturan horas completas. Si a lo largo de la hora desea activarla y desactivarla todas las veces que quiera, puede hacerlo, siempre dentro del plazo de la hora. La hora empieza a contar desde que se activa por primera vez la instancia. Así, si tu instancia está activa de 8 horas, aunque nadie realice procesamiento ninguno en ese tiempo, Amazon cobrará lo mismo, ya que el cobro se realiza dependiendo de las horas que se tenga activa la instancia, no del uso que se le dé.

El precio de cada hora de uso varía en función del tipo de instancia y la forma de contratación. Para instancia bajo demanda se cobra un precio por hora de uso diferente del resto sin opciones de ahorro.

Para la instancia reservada se paga una cuota fija anual o tri-anual y después además se paga por cada hora de uso de la instancia, igual que con la instancia bajo demanda, pero a un precio mucho mas bajo, de modo que si se van a tener instancias funcionando muchas horas al día esta opción permite ahorrar dinero.

En las instancias SPOT, el usuario determina cuanto desea pagar por una hora de uso una instancia de unas determinadas características en una determinada región. En EC2 en un momento dado pueden haber muchos recursos libres que no estén siendo usados por ninguna instancia, estos recursos se asignan entonces a los clientes que hayan contratado instancias SPOT para que se ejecuten. Cuando se contrata una instancia SPOT el usuario especifica el precio máximo que está dispuesto a pagar por una hora de uso de instancia SPOT, su instancia (o instancias) se ejecutarán cuando el precio especificado esté por encima del precio por hora de las instancias SPOT, precio que varía dinámicamente en función de la cantidad de recursos disponibles para instancias SPOT y la demanda de instancias SPOT. Mientras menor sea la cantidad de recursos sin usar y mayor la demanda de instancias SPOT mas alto será el precio por hora usado para determinar la asignación. Una vez que el precio/hora especificado por el usuario está por encima del precio/hora de las instancias SPOT la instancia comenzará ejecutarse y no parará hasta que el precio/hora máximo especificado por el usuario quede por debajo del precio/hora de la instancia SPOT o que el usuario detenga la ejecución de la instancia. El precio/hora que se factura al usuario es el precio/hora de la instancia SPOT determinado por Amazon (el usado para la comparación) al inicio de cada hora de ejecución, no el máximo especificado por el usuario. Además si es Amazon la que termina la instancia porque el precio ha subido por encima del límite máximo del usuario el tiempo de la hora de ejecución actual no se factura al cliente como una hora completa.

A fin de facilitar una comparación en la siguiente tabla se muestran los precios por hora de los diferentes tipos de instancia para las tres modalidades de contratación. En el caso de instancias SPOT los precios mostrados son los que se encontraban en la web de EC2 a la hora de copiarlos, pero esos precios son actualizados cada 30 minutos ya que como se ha mencionado antes varían en función de los recursos y la demanda. Todos los precios son para la zona situada en Europa (Irlanda) y para instancias con Linux.

Tipo/Tamaño Precio/hora On-Demand

Precio/hora Reserved Precio/hora SPOT

Standard Small 0,095$ 0,04$ 0,042$

Standard Large 0,38$ 0,16$ 0,165$

Standard Extra Large 0,76$ 0,32$ 0,313$

Página 13

Page 15: Computación en la Nube con Amazon EC2

Cloud Computing con Amazon EC2 - AWS 09-10 Licencia Creative Commons By-Nc-Sa

High-Memory Extra Large

0,57$ 0,24$ 0,246$

High-Memory Double Extra Large

1,34$ 0,56$ 0,585$

High-Memory Quadruple Extra Large

2,68$ 1,12$ 1,171$

High-CPU Medium 0,19$ 0,08$ 0,079$

High-CPU Extra Large 0,76$ 0,32$ 0,321$

La tabla anterior hay que complementarla con la siguiente tabla en la que se muestra el coste del precio fijo a pagar por reserva de instancias:

Tipo/Tamaño Reserva 1 año Reserva 3 años

Standard Small 227,50$ 350$

Standard Large 910$ 1400$

Standard Extra Large 1820$ 2800$

High-Memory Extra Large 1325$ 2000$

High-Memory Double Extra Large

3185$ 4900$

High-Memory Quadruple Extra Large

6370$ 9800$

High-CPU Medium 455$ 700$

High-CPU Extra Large 1820$ 2800$

En la siguiente gráfica mostramos una comparación del precio por hora según el modo de contratación de instancias y el tipo de instancia.

Si se necesita que una aplicación web esté activa las 24 horas del día, lo conveniente es contratar instancias reservadas (reservar la instancia), en las cuales se obtiene un mejor precio/hora al pagar una

Página 14

Ilustración 6: Precio/hora por tipo de instancia y modo de contratación

Page 16: Computación en la Nube con Amazon EC2

Cloud Computing con Amazon EC2 - AWS 09-10 Licencia Creative Commons By-Nc-Sa

cantidad fija cada 1 o 3 años. Si tu aplicación va a estar siendo utilizada las 24 horas del día durante al menos 254 días al año, esta modalidad es mas barata que una instancia bajo demanda. Este servicio premia a los clientes que hagan una buena planificación del consumo de recursos que van a realizar. Este ahorro, que puede parecer un poco escaso a primera vista, es muy significativo en máquinas de altas prestaciones que debamos tener activas 24/7 todos los días del año. Veamos un ejemplo:

● Las instancias del tipo High-CPU Extra Large Tienen un coste de 0.76 $/hora (para Unix/Linux) en la antigua fórmula de contratación. Con estos datos el coste anual de esta máquina si nunca la detuviéramos sería de: 0.76 $/h * 24 h/día * 365 días/año = 6,657 $/año (4,930 euros aprox.)

● En el nuevo sistema de pago estas instancias tienen un coste de 0.32 $/hora y una cuota anual de 1.820 $. Con estos datos el coste de esta máquina sería el siguiente: 0.32 $/h * 24h/día * 365 días/año + 1,820 $/año = 4,623 $/año (3,423 euros aprox.)

Cabe destacar que en las instancias bajo demanda la hora cada vez está más barata (en el mismo ejemplo anterior, la máquina Linux costaba 0.80$ en Marzo de 2.009) mientras que el precio de las instancias reservadas el precio por hora es más caro (0.24$/hora en el ejemplo anterior en Marzo de 2.009) pero la cuota fija se reduce (el coste anual era de 2.600$ en Marzo de 2.009).

Es posible contratar instancias de varios tipos, de modo que es posible tener una aplicación en una instancia reservada, activarla y controlar a través de la propia aplicación o del monitor que ofrece Amazon el uso de la CPU de la instancia. Si se supera el 80%, es posible crear una nueva instancia bajo demanda, con una réplica de la imagen de la instancia reservada y dividir el procesamiento en las dos instancias. Cuando el uso vuelva a ser inferior al 60%, se puede desactivar la instancia contratada bajo demanda y realizar todo el procesamiento en la instancia reservada. Si estos picos de procesamiento no son demasiado frecuentes, o no deseamos realizar un estudio previo de la frecuencia con la que ocurren, esta es la forma más adecuada de utilizar los servicios que nos ofrece Amazon

Uno de los puntos a destacar es que además de pagar por estos servicios, se debe pagar también por el tráfico de la red. Amazon distingue entre transferencia de datos de entrada y transferencia de datos de salida. Si bien, el coste de este servicio no es excesivamente caro, debe tenerse en cuenta a la hora de planificar el coste real de la aplicación. Por ejemplo, el coste actual del tráfico de salida, si se tiene un tráfico de entre 10 y 40GB es de 0.11$ cada GB

Destacar también que Amazon suele ofrecer ofertas por sus servicios, por lo que es conveniente estar pendiente de las ofertas vigentes. Por ejemplo, hoy en día tienen una oferta de no cobrar la transferencia de datos de entrada (hasta Junio de 2.010), o distintas tarifas si la transferencia de datos se hace dentro de la misma región

Tipos de servicios adicionalesAmazon ofrece además de EC2 servicios adicionales que pueden ser utilizados de forma complementaria para crear aplicaciones mas escalables. Algunas de ellas pueden ser etiquetadas como herramientas complementarias a nivel de IaaS o PaaS. Las herramientas complementarias a nivel de IaaS aumentan la flexibilidad de la infraestructura y se centran en servicios de almacenamiento: S3 y EBS. Por otra parte las herramientas complementarias a nivel PaaS ofrecen servicios que pueden facilitar el desarrollo de ciertos tipos de aplicaciones pero que de alguna forma impone unas restricciones en el diseño de las mismas. Algunos ejemplos son servicios de almacenamiento en bases de datos o sistemas de paso de mensajes para conjuntos de aplicaciones integradas.

Servicios complementarios a IaaS

Elastic Block Storage (EBS)

EBS provee un servicio de almacenamiento en disco independiente que puede ser usado por una instancia de Amazon EC2 como si de un dispositivo de almacenamiento local se tratase. El contenido del almacenamiento permanece independientemente de que la instancia asociada se apague, algo que no ocurre en el almacenamiento estándar de una unidad EC2. Se trata de un servicio de almacenamiento de alta disponibilidad, fiabilidad típicamente en aplicaciones que necesitan una base de datos o un sistema de

Página 15

Page 17: Computación en la Nube con Amazon EC2

Cloud Computing con Amazon EC2 - AWS 09-10 Licencia Creative Commons By-Nc-Sa

archivos estable.

EBS permite creación de volúmenes de almacenamiento desde 1GB hasta 1TB pudiéndose asociar múltiples volúmenes a una ECU. Se pueden formatear particiones con distintos sistemas de almacenamiento. Los volúmenes se crean en una zona de disponibilidad determinada y la información del volumen es automáticamente replicada dentro de la misma zona para evitar perdidas en caso de fallo de un componente hardware. Además se pueden crear copias de seguridad a través del servicio S3. El sistema de pago es tanto por volumen de almacenamiento como por número de operaciones I/O.

Auto Scaling & Cloud Watch

Auto Scaling & Cloud Watch es un paquete compuesto por dos servicios en el que el usuario paga por usar Cloud Watch y Auto Scaling se puede usar gratis. Este servicio tiene un coste de $0.015 por hora para cada instancia que se tiene contratada. Auto Scaling es un servicio que permite el escalado automático del número de instancias en uso según un conjunto de reglas definidas. Con este sistema se puede asegurar la capacidad de respuesta en picos de demanda además de una mayor tolerancia a fallos si se utiliza junto con el Elastic Load Balancing.

Cloud Watch es un servicio de monitorización de recursos Amazon EC2. Permite visualizar el estado de uso de recursos, el rendimiento operacional y los patrones de demanda existentes. Métricas interesantes que incluye son: uso de CPU, lecturas y escrituras en disco, tráfico en la red. Se integra con los servicios de Auto Scaling y Elastic Load Balancing, permitiendo también monitorizar el funcionamiento de estos servicios. La forma de pago es por el número de instancias que se monitor izan.

Elastic Load Balancing

Elastic Load Balancing es un servicio de balanceo de carga orientado a aplicaciones web que distribuye el tráfico entre múltiples instancias EC2. El balanceo permite tener una alta capacidad de tolerancia a errores en las aplicaciones independientemente de la capacidad de carga de la aplicación o de que alguna instancia caiga en un fallo crítico. El balanceador puede detectar "el estado de salud" (EC2 instance health) y deja de enrutar tráfico hacia ella. Se trata de una herramienta fácil de gestionar a través de línea de comandos.

Página 16

Ilustración 7: Gráfica de monitorización de instancias en Cloud Watch

Page 18: Computación en la Nube con Amazon EC2

Cloud Computing con Amazon EC2 - AWS 09-10 Licencia Creative Commons By-Nc-Sa

Virtual Private Cloud (VPC)

VPC es un servicio que es capaz de integrar de forma segura la infraestructura de una compañía con la nube en forma de VPN asociando las instancias virtuales a un rango de IPs configurable. Con este sistema se pueden definir distintas subredes, reglas de enrutado y seguridad según las necesidades de la compañía. La forma de pago es por número de conexiones-VPN a la hora y por la tasa de transferencia utilizada. Es útil cuando se desea aumentar la disponibilidad de algún servicio crítico en la empresa. Un ejemplo de uso típico puede ser cuando se desea mover, poco a poco una aplicación web a la nube, pudiendo comenzar primero por el servidor de bases de datos, luego con el servidor web, etc.

Servicios complementarios a PaaS

Simple Storage Service (S3)

S3 se trata de un servicio de almacenamiento básico accesible desde Internet que sirve como herramienta para diseñar sitios web con almacenamiento mas escalable, fiable, rápido, barato y sencillo. Ofrece un conjunto de funcionalidades básicas en forma de diccionario o mapa: read/write/delete. Estas funcionalidades se ofrecen en forma de servicios web REST o SOAP. Los objetos almacenados pueden tener tamaños desde 1 byte a 5 Gigabytes. Los datos son almacenados en una región geográfica llamada bucket que deben ser elegidos para definir la latencia óptima del sistema. Hay tres bucket US-Standard, US-Western y EU. Los datos nunca almacenan su bucket, aunque pueden ser copiados a otros buckets. También dispone de servicios de autenticación por motivos de seguridad.

El acuerdo de nivel de servicio asegura una disponibilidad de un 99.9% donde la indemnizaciones por incumplimiento (hasta el 99%) es del descuento del 10% del pago, un 20% en el caso de no mantener disponibilidad superior al 99%. La forma de pago es dual: se paga por almacenamiento, aunque a mayores tamaños se paga una tasa menor por Gb. También se paga por uso de la red. Para contratos pequeños se paga por request (PUT,COPY,POST, etc.) para contratos mayores se paga por uso de ancho de banda.

Relational Database Service (RDS)

RDS permite crear, escalar y utilizar bases de datos relacionales en la nube. Se trata de un servidor de base de datos MySql montado sobre una infraestructura escalable. Ofrece la creación automática de backups. Se puede acceder a los servicios a través de cualquier herramienta diseñada para mysql por lo que en lo general lo hace independiente a la plataforma de desarrollo.

Se paga por la cantidad de almacenamiento utilizado, procesamiento y transferencia de datos utilizado de forma muy similar a las ECUs. De hecho cada tipo de Instancias de DB que Amazon ofrece tiene asociada una configuración específica de EC2, por ejemplo: Quadruple Extra Large DB Instance: 68 GB de memoria, 26 ECUs (8 virtual cores con 3.25 ECUs cada uno), plataforma de 64-bit.

Simple Queue Service (SQS)

SQS es un servicio de comunicaciones escalable entre aplicaciones mediante el paso de mensajes almacenados en una cola. Permite comunicaciones entre cualquier tipo de aplicación en Internet, independientemente de la red en la que se encuentre o la tecnología con la que esté siendo desarrollado. Se trata de una pieza clave en la integración de aplicaciones y presumiblemente su uso es óptimo cuando se trabaja con Instancias EC2 ya que utilizan la misma infraestructura. Al igual que los otros servicios, el almacenamiento de las colas pueden ser localizados en tres regiones distintas según las necesidades de disponibilidad

A nivel de desarrollo se pueden crear un número limitado de colas con un número ilimitado de mensajes de 8KB como máximo. Los mensajes son almacenados hasta 4 días. El acceso a estos servicios se realiza mediante una interfaz de operaciones a través de un servicio web SOAP. La forma de pago está basada en la cantidad de datos transferidos y los precios propuestos son asequibles.

Simple DB

Simple DB es un servicio escalable, fiable y flexible de base de datos no relacional que ofrece precios

Página 17

Page 19: Computación en la Nube con Amazon EC2

Cloud Computing con Amazon EC2 - AWS 09-10 Licencia Creative Commons By-Nc-Sa

económicos. El acceso a esta base de datos se realiza mediante el protocolo HTTP y sus comandos básicos. La forma de pago es por tasa de transferencia utilizada y almacenamiento. Al igual que la mayoría de servicios de AWS se requiere la elección de una región de trabajo acorde a las necesidades de disponibilidad.

Diagrama de conceptos del Cloud Computing con Amazon EC2

Tras la presentación de los elementos que componen Amazon EC2 presentamos un diagrama que ilustra los elementos presentados de manera simplificada. En este diagrama se ha seguido el mismo proceso que en el diagrama de conceptos de Cloud Computing, se ha comenzado por un concepto central y se han ido situando aquellos conceptos relacionados a partir del mismo:

Crecimiento y futuro de EC2Desde el lanzamiento de EC2 el interés por los servicios prestados por Amazon Web Services LLC no ha hecho mas que incrementar. Muestra de ello es la siguiente gráfica publicada en el blog oficial de Amazon Web Services en la cual podemos notar el incremento en el tráfico generado por las aplicaciones que usan el Cloud Computing de Amazon desde que se lanzó el servicio en 2006 hasta finales de 2007[11]:

Página 18

Ilustración 8: Diagrama de conceptos de Cloud Computing con Amazon EC2

Page 20: Computación en la Nube con Amazon EC2

Cloud Computing con Amazon EC2 - AWS 09-10 Licencia Creative Commons By-Nc-Sa

Por otro lados otros datos[14] apuntan a que el uso de EC2 podría estar creciendo a un ritmo de un 10% mensual, pero no hay datos concretos actualizados publicados por Amazon.com como la anterior gráfica. Lo que si está claro es que EC2 es un servicio muy demandado y que dadas las ampliaciones y rebajas en precios[13] se está consolidando como líder del sector, lo cual se refleja en la siguiente gráfica[15]:

Página 19

Ilustración 9: Ancho de banda consumido por AWS respecto del resto de webs de Amazon

Ilustración 10: Top 500k de sitios en Cloud - Marzo 2010

Page 21: Computación en la Nube con Amazon EC2

Cloud Computing con Amazon EC2 - AWS 09-10 Licencia Creative Commons By-Nc-Sa

Caso de estudio El presente caso de estudio persigue aportar un ejemplo básico de aplicación de los servicios ofrecidos por AWS sobre cloud computing. Primero detallaremos los requerimientos y características de un servicio de películas online que permite a sus usuarios ver películas a cualquier hora del día, para seguidamente aplicar los servicios de AWS (EC2 y otros) para describir una posible solución al problema que ilustre y clarifique la función de cada servicio de AWS y la posible arquitectura final de un despliegue en la nube. El caso de estudio y la posible implementación aquí presentados han sido creados con la idea de ilustrar de manera mas práctica los conceptos y servicios descritos, sin pretensión de optar a la categoría de solución real a un problema real.

Descripción de la empresa y su servicioLa empresa es un videoclub que se dedica a despachar películas por streaming y el beneficio principal de la empresa esta basado en dos aspectos, la publicidad en su web e incrustada en los vídeos para los usuarios normales, y el pago por cuenta premium para los usuarios que no deseen publicidad.

● El hosting para la web es un hosting sencillo básico que provee de una base de datos mysql y un servidor apache PHP.

● El hosting para el streaming consiste en un número de servidores estático y un balanceador DNS. Cada servidor almacena todas las películas en un disco duro local para evitar el consumo del ancho de banda producido por un disco duro común o SAAN.

● La infraestructura software responsable de suministrar el servicio de streaming de queda servidor es un Apache con un módulo de streaming que se encarga de utilizar un archivo en algún dispositivo de almacenamiento y suministrarlo en forma de streaming al cliente concreto.

Definición del problema La empresa ha estado durante varios años en un hosting y ha adquirido fama y ha tenido éxito. El negocio ha sido rentable mientras ha habido un número de usuarios pequeño. Sin embargo a medida que ha ido creciendo la demanda, el servicio ofrecido por el sistema ha empeorado y en las horas puntas el hosting no ha sido capaz de responder con la calidad deseada a los usuarios. Desde ese momento, se han comenzado a perder usuarios, incluso en las horas de menor demanda, ya que el servicio está perdiendo popularidad.

La decisión de la empresa es estudiar un sistema de hosting más flexible: cloud computing con Amazon Web Services, que pueda ajustar los costes de mantenimiento de la infraestructura y responder a un eventual cambio significativo en la demanda.

Durante los últimos meses se ha hecho un análisis de la demanda del servicio para tener una base de conocimiento que sirva para adquirir una nueva infraestructura que permita ofrecer un servicio de calidad a los usuarios. Como solución, se ha planteado que esta infraestructura esté mantenida sobre el paradigma de Cloud Computing con Amazon WebServices.

Por otra parte, la potencia del servidor web comienza a quedarse limitado, especialmente el acceso a la base de datos actualmente constituye un cuello de botella y limita el correcto funcionamiento del sistema, por lo que la solución planteada debe tener en cuenta este aspecto.

Estudio de demandaEn los datos se distinguen dos claros segmentos horarios en la demanda:

● Baja demanda:○ Matinal- Nocturno : 1:00 am – 5:00 pm ○ Nº de Usuarios medio: 700 usuarios ○ Diversidad de películas: 50%

● Alta demanda: ○ Tarde: 5:00 pm – 1:00 am○ Nº de Usuarios medio: 3500 usuarios ○ Diversidad de películas: 80%

Página 20

Page 22: Computación en la Nube con Amazon EC2

Cloud Computing con Amazon EC2 - AWS 09-10 Licencia Creative Commons By-Nc-Sa

Los datos de consumo también ha sido estudiados: ● El porcentaje medio de duración de una película es de 120 minutos.● La reproducción de una película con calidad media tiene un coste de 548 Kbps (buena calidad), por lo

que cada segundo de visualización de una película consume este ancho de banda (aproximadamente ya que hay ineficiencias en los protocolos de transporte que no se tienen en cuenta).

● El tamaño de datos medio a transmitir por película (película completa) es de 470,35 MBytes. ● Actualmente hay unas 1000 películas en catálogo.

Propuesta de solución con Amazon WebServices

Requisitos● No tener que cambiar la aplicación web y el resto del desarrollo software. ● Capacidad de reaccionar ante los actuales cambios de demandas diarios. ● Flexibilidad para readaptar el sistema ante un eventual cambio de demanda a medio plazo.

Servicios involucrados

Servicio de almacenamiento de bloques EBS

Este servició permitirá almacenar de forma permanente los archivos de las películas y será accesible entre las distintas instancias de Amazon EC2. Otra posible opción de sistema de almacenamiento elástico es Amazon S3. Sin embargo esta opción se ha descartado ya que su uso de este servicio es a través de servicios web por lo que es contrario a la opción del uso del servidor de streaming. Por el contrario, EBS es percibido por cada instancia como un dispositivo de bloques propio lo que facilita el mantenimiento de la infraestructura software desarrollada hasta el momento.

Servicio de base de datos RDS

Este servicio permitirá mantener el diseño e implementación de la aplicación web simplemente cambiando la cadena de conexión a la base de datos. Dado que se pretende que el mantenimiento

Página 21

Ilustración 11: Gráfica de la demanda según horario del caso de estudio

Page 23: Computación en la Nube con Amazon EC2

Cloud Computing con Amazon EC2 - AWS 09-10 Licencia Creative Commons By-Nc-Sa

Amazon Auto-Scaling & Elastic Load Balancer

Para contratar Amazon Auto-Scaling es necesario contratar Amazon Cloud Watch. Este servicio tiene un coste de $0.015 por hora para cada instancia que se monitorice. Con Amazon Auto-Scaling, se agrega una condición, si se detecta que se cumple la condición, se agrega la cantidad de instancias que se ha seleccionado a un grupo de instancias. Es decir, este servicio permitirá agregar nuevas instancias cuando aumente el número de usuarios, como ocurre a partir de las 17:00. De la misma manera, se agrega una condición para ir apagando instancias, para que no sea necesario pagar por instancias que no se están utilizando.

Con Amazon Load Balancer ocurre algo similar, se le puede establecer una condición a partir de la cual se realiza una nueva distribución de carga entre las instancias que pueden recibir tráfico. Ambos servicios se pueden utilizar conjuntamente sin ningún tipo de problemas.

Amazon EC2

Instancias que se van a contratar. Este servicio permitirá alojar tanto servidores web como servidores de streaming. Además, se podrán dar de baja y alta instancias según las necesidades del sistema. Se contratarán diferentes tipos de instancias según el tipo del servidor, consiguiendo así una mejor adaptación al tipo de problemas que puede suponer tener dos tipos de servidores distintos.

Arquitectura La arquitectura de la implementación con servicios de AWS es la mostrada en el siguiente diagrama:

La carga generada por los usuarios será distribuida entre las distintas instancias de EC2 activas (servidores) mediante el uso del servicio Elastic Load Balancing (ELB) [19]. Este servicio balancea la carga entre las instancias asignadas y se integra perfectamente con el Auto-Scaling. El propio servicio ELB es además capaz de escalar en función de la carga evitando que el balanceador se convierta en un cuello de botella, esto es porque Amazon ha implementado un sistema de DNS Round Robin [20] que es transparente al usuario de este servicio. Si nosotros mismos usáramos algún tipo de software para el balanceado de carga nos encontraríamos con que el cuello de botella sería el ancho de banda de la instancia del balanceador que está en torno a los 35Mbps [21], aunque este es un dato es empírico y varía según el tipo de instancia,

Página 22

Ilustración 12: Arquitectura de la solución propuesta para el caso de estudio

Page 24: Computación en la Nube con Amazon EC2

Cloud Computing con Amazon EC2 - AWS 09-10 Licencia Creative Commons By-Nc-Sa

mientras que AWS tiene este problema mas que resuelto.

Los balanceadores de carga distribuirán las peticiones entre todos los servidores existentes los cuales ante un pico de peticiones comenzarán a saturarse. Es en este momento donde entra el servicio Auto-Scaling, el cual comenzará a lanzar nuevas instancias, de entre las contratadas por el cliente del servicio, para satisfacer el aumento de la carga. Podemos observar como se han separado los balanceadores en dos grupos, por un lado los que distribuyen la carga de la web y por otro los que distribuyen la carga del servicio de streaming ya que se han separado los servidores en dos grupos por tener diferentes requerimientos de ancho de banda y procesamiento de modo que podemos escoger el mejor tipo de instancia en cada caso. Claramente la mayor carga de tráfico la soportarán las instancias de streaming y sus balanceadores debido a la masiva cantidad de datos que hay que transmitir.

En esta arquitectura cada servidor de streaming se encarga de satisfacer las peticiones de los clientes accediendo a las películas, cacheandolas en memoria y sirviéndolas a los clientes, de modo que sucesivas peticiones sobre al misma película serán servidas mucho mas rápidamente, siendo el mejor aprovechamiento cuando la variabilidad entre películas es la mínima (50%). Al ser este un servicio bajo demanda es complicado organizar los servidores de manera que se maximice el uso de los datos cacheados y tal problema no es el objetivo de este trabajo, así que supondremos que esta estrategia es aceptable.

Los servidores de streaming tienen como única función el streaming de vídeo a los usuarios cacheando las películas para acelerar el proceso. El ancho de banda de cada instancia está limitado por lo que las películas a servir por cada instancia estará limitado por este ancho de banda. No conocemos cual este ancho de banda pero como ya comentamos antes para las instancias pequeñas es de 35Mbps [21] , que tiene un rendimiento de IO inferior a otras instancias, así que para instancias mayores podemos suponer que es mayor. Por tanto podemos concluir que cada servidor de streaming puede sostener en torno a 70 conexiones concurrentes de streaming y dada esa cantidad de películas necesitamos una instancia con mucha memoria para el cacheo, que en base al número de conexiones superior anteriormente comentado sería una instancia High-Memory Double Extra Large ya que provee 43,2 GB de memoria RAM y tiene ECUs mas que de sobra para manejar el número de conexiones.

Para los servidores de streaming necesitaremos siempre tener como mínimo la cantidad suficiente para atender a los usuarios del horario de baja demanda, esto es 700/70 = 10 instancias. Estas instancias van a estar funcionando de manera fija 24 horas al día así que se reservaran durante un período de tres años para reducir su coste. Luego hemos de provisionar instancias para satisfacer la demanda en el horario de alta demanda y para hacer frente a posibles picos en el servicio. Para ello primero necesitamos cubrir el horario de baja demanda con 3500/70 - 10 = 40 instancias (restamos las instancias reservadas) más otras 10 por si hay picos de demanda superiores a 3500 usuarios, lo cual permitiría aguantar picos de hasta 4200 usuarios. El tener mas instancias bajo demanda no supone un coste adicional ya que si no se usan no se pagan. El criterio para el escalado será el tráfico de salida de las instancias que se relaciona con el número de clientes al que está sirviendo, de manera que si una instancia está sirviendo al 85% del máximo de clientes se arrancará una instancia, también si una instancia deja de servir peticiones será apagada.

Los servidores web alojan la web que es el punto de acceso al servicio por los usuarios. Esta web es la misma que se utilizaba en la anterior versión del servicio pero con un diseño ligeramente variado y configurada para funcionar en varias instancias a la vez. El tipo de instancia seleccionado es Standard Medium ya que la Standard Small tiene sólo un ECU y su rendimiento de IO es medio, mientras que la Standard Medium tiene mejor rendimiento de IO, 4 ECUs y mas RAM para cachear contenidos.

Los servidores web son capaces de aguantar muchas peticiones de los usuarios, pero para calcular costes necesitaremos suponer un número máximo de usuarios. Supongamos que cada servidor web es capaz de aguantar 800 peticiones por segundo, de modo que en período de baja demanda podríamos funcionar con un sólo servidor pero en períodos de alta demanda necesitaríamos 5 servidores. El primero sería una instancia reservada por tres años y los otros 4 serían instancias bajo demanda que serían arrancadas cuando el primer servidor sobrepasara las 700 peticiones por segundo.

Todas las instancias comparten un volumen EBS donde se encuentran las películas a servir a los clientes y las instancias de los servidores web comparten el acceso a una base de datos RDB que contiene

Página 23

Page 25: Computación en la Nube con Amazon EC2

Cloud Computing con Amazon EC2 - AWS 09-10 Licencia Creative Commons By-Nc-Sa

información sobre películas, usuarios y sesiones activas, de modo que los usuarios autenticados serán los que tendrán acceso a las películas, permitiendo además controlar las películas que accede cada usuario entre otras posibles características del servicio.

Para el servicio RDB se ha seleccionado la opción Large Db Instance que tiene las siguientes características: 7.5 GB de RAM, 4 ECUs y plataforma de 64-bit. Adicionalmente para la base de datos se contará con 30 GB de almacenamiento. Para el servicio EBS se seleccionará un espacio de almacenamiento de 2 TB donde habrá sitio mas que de sobra para almacenar las películas y los archivos comunes de la aplicación.

Planificación de costes de la propuesta con Amazon Web ServicesLos costes de servicio se obtienen aplicando las tarifas expuestas por AWS a lo descrito anteriormente para la demanda especificada. Para ello vamos a calcular o estimar las cantidades de los conceptos por los cuales se factura para un período de 30 días.

● Instancias: El número de instancias de cada tipo ya se comentó anteriormente, pero lo volveremos a detallar para que quede bien claro: ○ Standard Large

■ Reservadas: 1 □ Horas de uso: 720 (24h al día 30 días 1 instancia) □ Precio por hora: 0,16$ □ Coste de reserva: 1400$ 3 años □ Coste horas: 115,2$

■ On-Demand: 4 □ Horas de uso: 960 (8h al día 30 días 4 instancias) □ Precio por hora: 0,38$ □ Coste horas: 364,8$

○ High-Memory Double Extra Large ■ Reservadas: 10

□ Horas de uso: 7200 (24h al día 30 días 10 instancias) □ Precio por hora: 0,56$ □ Coste de reserva: 49000$ 3 años (4900$ por instancia) □ Coste horas: 4032$

■ On-Demand: 40 (Hay otras 10, pero no se usan realmente, están por si hay subidas repentinas en la demanda, pero no es lo esperado) □ Horas de uso: 9600 (8h al día 30 días 40 instancias) □ Precio por hora: 1,34$ □ Coste horas: 12864$

● Ancho de banda: Respecto al ancho de banda tenemos que hacer ciertas suposiciones, pero el único que podemos calcular directamente es el de salida de las instancias de streaming que está directamente relacionado con el número de usuarios. Para el resto haremos ciertas suposiciones:○ Web

■ De salida: 19,5 GB al mes por servidor. 5 GB en baja demanda y 14,5 GB en alta demanda.■ De entrada: 1,75 GB al mes. 0,5 GB en baja demanda y 1,25 GB en alta demanda.

○ Streaming:■ De salida: El volumen de datos de salida es el número de usuarios multiplicado por el bitrate

(kbps) medio de las películas y por el número de segundos que hay en 30 días. El resultado hay que convertirlo de Kbps a MB.□ En baja demanda:

► Usuarios: 700► Tiempo: 12 horas al día, 30 días al mes.► Bitrate: 548 Kbps► Total (Kbps): 497145600000► Total (GB): 57875,4 ► Total (TB): 56,5

□ En alta demanda: ► Usuarios: 3500► Tiempo: 8 horas al día, 30 días al mes.

Página 24

Page 26: Computación en la Nube con Amazon EC2

Cloud Computing con Amazon EC2 - AWS 09-10 Licencia Creative Commons By-Nc-Sa

► Bitrate: 548 Kbps► Total (Kbps): 1657152000000► Total (GB): 192918 ► Total (TB): 188,4

□ En total: 244,9 TB■ De entrada: El volumen de entrada a los servidores de streaming es desconocido, pero

podemos suponer 4 bytes por cada 8192 bytes de datos enviados.□ En baja demanda: 28,3 GB □ En alta demanda: 94,2 GB

○ Totales:■ De salida:

□ Total: 250812,9 GB□ Precio por GB: 0,08$□ Coste: 20065,32$

■ De entrada: □ Total: 122,5 GB□ Precio por GB: 0,10$□ Coste: 12,25$

■ Otros servicios de AWS utilizados: □ RDS:

► Horas de uso: 720 (24h al día 30 días) ► Precio por hora: 0,48$► Espacio de almacenamiento: 30GB► Precio por GB: 0,11$► IO (millones): 18144 en baja demanda y 60480 en alta demanda (supuesto 20

operaciones de IO por usuario y segundo) ► Precio por millón de IO: 0,11$ ► Coste: 8997,54$

□ ELB: Se usarán dos balanceadores de carga, uno para la web y otro para el servicio de streaming. ► Balanceadores: 2 ► Horas: 1440 (24h al día, 30 días, 2 balanceadores)► Precio hora: 0,028$► Tráfico: 250812,9 GB► Precio GB: 0,008$► Coste: 2046,82$

□ EBS: Se tendrá un disco de 2 TB de capacidad donde caben de sobra las películas existentes en el catálogo mas otras nuevas que se vayan sumando. Para calcular el precio además se necesita una estimación del número de millones de operaciones de IO, el cual estimamos en una media de 20 por usuario y por segundo.► IO

▪ Baja demanda:▫ Usuarios: 700▫ Tiempo: 3600 * 12 * 30▫ Total IO (millones): 18144

▪ Alta demanda:▫ Usuarios: 3500▫ Tiempo: 3600 * 8 * 30▫ Total IO (millones): 60480▫ Espacio de almacenamiento: 2048 GB▫ Precio por GB: 0,11$ ▫ Precio por IO (millón): 0,11$▫ Coste: 8873,92$

► Cloud Watch:▪ Horas de monitorización: 18480 (suma de las horas de todas las instancias) ▪ Precio hora: $0.015 ▪ Coste: 277,2$

En la siguiente tabla mostramos el resumen del coste mensual de los servicios:

Página 25

Page 27: Computación en la Nube con Amazon EC2

Cloud Computing con Amazon EC2 - AWS 09-10 Licencia Creative Commons By-Nc-Sa

Concepto Coste

Uso de instancias reservadas 4147,2$

Uso de instancias bajo demanda 13228,8$

Consumo de ancho de banda 20077,57$

RDS 8997,54$

Elastic Load Balancer 2046,82$

Elastic Block Storage 8873,92$

Cloud Watch 277,2$

Total de coste mensual: 57647,12$ (47219,54€) Coste anual: 691765,44 (566504,04€)

A lo anterior hay que añadir el coste cada tres años de las instancias reservadas que asciende a 50400$.

ConclusionesCloud Computing no es sólo un Buzz Word y aunque ahora esté de moda muchas empresas están basando parte de su negocio en servicios como Amazon EC2, por lo que en un futuro, una vez haya pasado su máximo de popularidad, habrá un nicho de negocio importante. Aunque, como suele pasar en estos casos, aún hay cierta falta de consenso a la hora de definir que es exactamente Cloud Computing, con lo que nos podemos encontrar que según a quién le preguntemos obtendremos definiciones con diferencias importantes. En nuestro trabajo hemos utilizado aquellas definiciones que parecían mas comunes a nuestro juicio.

También es importante destacar que las aplicaciones no pueden ejecutarse tal cual sobre Amazon EC2 ya que la arquitectura necesaria para sacar provecho al servicio EC2 y a los servicios relacionados puede ser distinta de la que pueda tener una aplicación realizada sobre servidores privados, lo cual implica que es necesario aprender como funciona EC2 y como sacarle partido a los servicios antes de realizar ningún cambio.

En el aspecto económico EC2 es un servicio cuya viabilidad hay que estudiar antes de lanzarse ya que hay que tener en cuenta el diferente modelo de facturación, hacer planes fiables sobre la cantidad de recursos a necesitar, adaptar la aplicación para sacar provecho a EC2 y finalmente dimensionar el uso a lo que se necesite. Para un sitio pequeño o una aplicación que no genera un gran tráfico o en la cual no importa que durante los picos de actividad algunos usuarios queden sin atender satisfactoriamente Amazon EC2 puede no ser una opción viable, ya que un hosting tradicional económico podría servir perfectamente a los propósitos y a un precio muy inferior.

Hay un aspecto negativo, común a todos los servicios de este tipo, relacionado con la inseguridad que provoca en la empresa el depender de un proveedor externo para realizar parte de sus operaciones, si no es que dependen totalmente. Cuando una empresa migra sus procesos de negocio e infraestructura hacia una solución de Cloud Computing está dejando una parte importante de sus activos en manos de un tercero, lo cual siempre genera ciertas reticencias ya que si el proveedor experimenta problemas o si hay un fallo en las redes de conexión a Internet, que a su vez dependen de uno o más proveedores distintos, la empresa sufriría grandes pérdidas. Esta claro que para asumir estos riesgos las empresas acuerdan niveles de servicio mínimos con los proveedores (SLAs), pero en el caso de Amazon EC2 el acuerdo que hay disponible en la web no nos parece suficiente indemnización para un servicio del cual puede depender el futuro de una empresa.

En esta línea también podemos comentar que igual de valiosos son los datos almacenados en el servicio que los procesos de negocio que sustenta. En este punto el cliente del servicio deberá confiar en que las medidas de seguridad del proveedor evitarán que sus datos puedan ser robados y esto es algo que no hemos visto mencionado en ninguna parte acerca de EC2. Por tanto, dado lo anterior y el hecho de que las aplicaciones necesitan adaptaciones para funcionar en

Página 26

Page 28: Computación en la Nube con Amazon EC2

Cloud Computing con Amazon EC2 - AWS 09-10 Licencia Creative Commons By-Nc-Sa

EC2, podemos concluir que se genera una dependencia bastante fuerte entre el cliente de EC2 y el proveedor del servicio, de modo que es mucho mas difícil cambiar a otro proveedor o una vuelta a una solución de hosting tradicional que antes de adoptar EC2.

Finalmente, un último punto negativo, es el hecho de que a pesar de que Cloud Computing promueve la idea de que las aplicaciones pueden ir incrementando la cantidad de recursos que tienen asignados de manera infinita esto en la práctica no es totalmente cierto. EC2 por ejemplo permite un incremento en la contratación máximo de 20 instancias por zona de disponibilidad y por día. En la realidad bajo la nube hay un hardware concreto y un servicio de mantenimiento que tiene que luchar por conseguir que se cumplan los acuerdos de nivel de servicio y de disponibilidad, donde tanto el hardware como la capacidad de crecimiento en un momento dado son finitos, por lo que podría llegarse al momento en el que el proveedor tuviera que poner límites mas estrictos a la adquisición de nuevos recursos para mantener los niveles de servicio.

Página 27

Page 29: Computación en la Nube con Amazon EC2

Cloud Computing con Amazon EC2 - AWS 09-10 Licencia Creative Commons By-Nc-Sa

FAQPara realizar esta FAQ, se han escogido profesionales del mundo de la informática que no tenían conocimientos de este paradigma, se les ha explicado brevemente lo que significa Cloud Computing, y se han apuntado las dudas que les han ido surgiendo. Después, se ha completado con una serie de cuestiones que se nos han ido presentado. Las preguntas y sus respuestas son las siguientes:

- ¿Qué es Cloud Computing? Es una forma de computación a través de Internet usando recursos compartidos de muchos ordenadores en lugar de usar los recursos hardware y software de una máquina local, lo cual suele permitir una mayor escalabilidad al no estar sujetos a unos recursos hardware fijos y una mayor eficiencia ya que se aprovecha mejor el hardware que hay bajo la nube.

- ¿Qué ventajas ofrece Cloud Computing? La principales ventajas del Cloud Computing son:

● Escalabilidad: La nube proporciona recursos virtualmente "ilimitados", permitiendo incrementar o decrementar los recursos disponibles a medida que se necesiten e incluso puede realizarse automáticamente.

● Simplicidad: El cliente se ve liberado de tareas de gestión y mantenimiento de infraestructuras o plataformas, con lo que se puede centrar en su negocio.

● Ahorro: El Cloud Computing permite a las empresas ahorrar en costes ya que no tienen que invertir en hardware ni gastar dinero en el mantenimiento y gestión de la infraestructura. Además permite pagar sólo por los recursos consumidos por las aplicaciones. Uno de los puntos en los que más se ahorra es a la hora de hacer las pruebas de capacidad, ya que no es necesario duplicar la infraestructura ni parar los sistemas de producción para utilizar los recursos que éstos estaban utilizando.

● Ubicuidad: Acceso a los recursos desde cualquier punto con conexión a Internet

- ¿Todo son ventajas? No. También tiene sus desventajas, como todo en la vida. Las principales desventajas son:

● Sensación de Inseguridad: La empresa sitúa activos importantes para su actividad (datos, lógica de negocio) en la nube, sobre la cual no tiene ningún control por pertenecer a un tercero, por lo cual no puede controlar totalmente las políticas de seguridad en los servicios y debe confiar absolutamente en el proveedor de servicios.

● Integración: No suele ser fácil integrar los sistemas que funcionan en la nube con sistemas que ya estuvieran en funcionamiento en la organización.

● Fallos: Existen dos puntos de fallo externos a la infraestructura de la organización, uno es el proveedor de conexión a Internet y el otro es el proveedor de servicios de Cloud Computing. Si cayera un proveedor de servicios de Cloud Computing todos los que usen ese servicio quedarían en una muy mala situación, de igual manera si un proveedor de Internet o parte de la red cae se estaría en la misma situación.

● Disponibilidad: El proveedor de Cloud Computing puede realizar paradas del servicio por cuestiones varias (como mantenimiento) en contra de la voluntad del cliente.

- ¿Qué perspectivas de futuro tiene el Cloud Computing? ¿Será la forma de alojamiento del futuro? Actualmente el cloud computing se está empezando a explotar masivamente como SaaS debido en parte a que es la nueva Buzz word de moda y en parte a las ventajas ya mencionadas. En el futuro con la tendencia a usar cada vez mas servicios online y el aumento de la inversión en desarrollo de aplicaciones bajo el modelo SaaS el Cloud Computing se muestra una pieza fundamental para aquellas organizaciones que no pueden costearse su propia infraestructura para atender cientos de peticiones por segundo, satisfacer sus enormes necesidades de cálculo o permitirles responder a picos espontáneos de tráfico con las garantías de fiabilidad y disponibilidad necesarias.

Página 28

Page 30: Computación en la Nube con Amazon EC2

Cloud Computing con Amazon EC2 - AWS 09-10 Licencia Creative Commons By-Nc-Sa

- ¿Que empresas ofrecen servicios basados en Cloud Computing? ● Extranjeras

○ Microsoft ○ Google ○ Amazon ○ Salesforce ○ Soho ○ IBM ○ Rackspace

● Españolas ○ ASPGems. ○ Ilion sistemas. ○ Litebi

- ¿Que tipo de aplicaciones son las mejores candidatas para cloud computing? Aquellas que aprovechan todas sus ventajas y que no se ven afectadas mayormente por las desventajas.

● Aplicaciones que en determinados momentos pueden experimentar grandes cargas, sin que ello justifique una nueva inversión en recursos para controlarlas.

● Aplicaciones que para su despliegue requieren una infraestructura en los que la organización no quiere o no puede invertir.

● Aplicaciones que tengan que ser accesible desde múltiples localizaciones geográficas distantes entre sí.

● Aplicaciones críticas que requieran una fiabilidad y una disponibilidad para las cuales la organización no está preparada para afrontar.

● Aplicaciones que resultan mas baratas de ejecutar en la nube que en una infraestructura privada de hardware.

- ¿Qué es Amazon EC2? Es un servicio de Cloud Computing de tipo IaaS principalmente. Amazon EC2 (Elastic Compute Cloud) se basa en la utilización de sistemas operativos virtualizados, que se suben en forma de imágenes de instalación de dichos sistemas operativos, denominados AMIs (Amazon Machine Image), que corren sobre la infraestructura de Cloud Computing de Amazon.

- ¿Qué otros servicios ofrece Amazon relacionados con EC2? Amazon EC2 es parte de un conjunto mucho mayor de servicios que se ofrecen bajo una división específica de la compañía conocida como Amazon Web Services. Los servicios que nos interesan a nosotros por estar basados en los conceptos de Cloud Computing son:

● Amazon Virtual Private Cloud: Permite extender la VPN de una organización a instancias en la nube. ● Amazon Elastic Block Store (EBS): Almacenamiento de datos persistente independiente del espacio

de almacenamiento de la instancia de EC2. Servicio complementario a EC2. ● Auto Scaling: El número de instancias asignadas pueden incrementarse automáticamente cuando

ocurre un pico de uso o bajo petición de la propia aplicación. Este servicio es totalmente configurable por el usuario.

● Elastic Load Balancing: Balanceo de la carga automático entre las instancias disponibles. ● CloudWath: Monitorización de las instancias de EC2. ● Amazon Simple Storage Service: Amazon S3 es un servicio de almacenamiento de archivos que

proporciona de manera sencilla un medio para almacenar y recuperar cualquier cantidad de datos. La diferencia entre S3 y EC2 es que mientras que S3 es un sistema de almacenamiento EC2 ofrece capacidad de procesamiento, aunque dispone de cierta capacidad de almacenamiento para archivos de la aplicación pero que no es accesible desde Internet como lo son los archivos almacenados en S3.

- ¿Ejemplos reales de empresas u organizaciones que hayan migrado a Amazon EC2? (a ser posible españolas)

Página 29

Page 31: Computación en la Nube con Amazon EC2

Cloud Computing con Amazon EC2 - AWS 09-10 Licencia Creative Commons By-Nc-Sa

● Menéame: Sitio web español de noticias al estilo de Digg que han migrado a Amazon EC2 a finales de 2009.

● VivaReal: Empresa inmobiliaria que opera en el continente americano que creó y desplegó una web de gestión inmobiliaria sobre Amazon EC2.

● Monografías: Monografias.com es un sitio de Internet con publicaciones, ensayos, tesis y trabajos universitarios aportados por autores independientes

- ¿Qué criterios usa Amazon a la hora de facturar por el uso de sus servicios?

● En EC2 se factura por horas completas de uso de las instancias (horas que la instancia está activa) y por ancho de banda de subida y bajada consumido. Los precios de cada hora de uso varían en función del tipo de instancia y de otras opciones de contratación.

● En los demás servicios se factura por: ○ Elastic Block Storage (EBS)

■ Espacio reservado ■ Millones de operaciones de IO

○ Simple Storage Service (S3) ■ Ancho de banda consumido ■ Espacio reservado

○ Simple Query Service (SQS) ○ Simple Data Service (SDS)

■ Consultas realizadas (se factura un precio por cada tipo, por lo que no se cobra lo mismo por inserciones en la base de datos que por lecturas).

- ¿Qué es una hora de uso de instancia?Es una hora durante la cual una instancia de EC2 está activada ("encendida" por así decirlo). En Ec2 las horas se pagan completas así que si la instancia está activa 40 o 50 minutos se paga lo mismo.

- Tengo una aplicación que quiero migrar a Amazon EC2 ¿Cómo puedo medir las horas de uso para saber cuando podría costar?La hora de uso corresponde con el tiempo que una instancia está activada, es decir "encendida". De modo que si la aplicación actualmente funciona sobre servidores que están encendidos las 24 horas se podría extrapolar ese número de horas para calcular el coste mensual aproximado. Hay que tener en cuenta que al tener libertad para añadir y quitar instancias bajo demanda se debería estudiar cuales instancias deberían estar activas en un momento dado, con lo cual se podría ahorrar en costes.

- ¿Es rentable para Amazon proveer estos servicios? Los datos económicos de Amazon.com en el último cuarto de 2009[13] arrojan un incremento de un 41% en beneficios y que Amazon está invirtiendo en alquiler de espacio para datacenters además de que han bajado el precio de alguno de sus servicios, como S3. Por tanto, los servicios que presta Amazon Web Services tienen que estar dando beneficios a la compañía ya que se está invirtiendo en ampliar el servicio y en hacerlo mas asequible.

- ¿Qué se debe tener en cuenta a la hora de realizar una aplicación si se quiere alojar en los servicios de Cloud Computing que ofrece Amazon? Si la aplicación puede correr sobre una sola instancia de EC2 no hay mucha diferencia. En otro caso se tendrá que tener en cuenta que no todos los recursos de la aplicación van a tener los mismos requerimientos de escalabilidad, consumo de CPU y ancho de banda por lo que convendrá separarlos.

Por ejemplo, una web puede tener una serie de instancias sirviendo peticiones Http sobre contenido dinámico, estando configurado el servicio para crear instancias extras durante los picos de actividad, pero también tener una instancia para los contenidos estáticos que no esté configurada para escalar ya que servir contenido estático provoca una carga muy inferior a servir contenido dinámico.

Página 30

Page 32: Computación en la Nube con Amazon EC2

Cloud Computing con Amazon EC2 - AWS 09-10 Licencia Creative Commons By-Nc-Sa

También hay que tener en cuenta que si se tienen diferentes instancias de la misma aplicación corriendo a la vez en diferentes máquinas de la nube hay que preparar la aplicación para que funcione correctamente y que se tendrá que usar un balanceador de carga (Amazon lo proporciona) que distribuya las peticiones entre las diferentes instancias, además Amazon proporciona un monitor que decide, en base a una configuración previa, cuando hay que lanzar las instancias de refuerzo ante un incremento de la carga en las instancias activas.

- ¿Como se realizan las indemnizaciones en caso de incumplimiento de contrato? Amazon reembolsa el 10% sobre la factura del próximo mes de facturación en caso de que la región en la que se encuentra la instancia afectada no estuviera disponible el tiempo suficiente como para que no se pueda llegar al 99.95% de disponibilidad en el año de servicio, lo cual significa que no se pueda acceder a la zona donde se tiene la instancia durante 5 minutos en los 365 días posteriores al contrato/renovación del servicio.

El incumplimiento de contrato excluye aquellas causas fuera del control de Amazon, como desastres naturales o fallos en los proveedores de Internet, por los cuales Amazon no indemnizará al cliente.

- ¿Cual podría ser el coste de correr una aplicación web corriente en Amazon EC2? Usando la herramienta de cálculo que provee Amazon Web Services[8] podemos poner un ejemplo de cálculo de costes sobre los siguientes supuestos:

● Instancias: 1 instancia pequeña en la región de Europa.● Uso mensual de la instancia: 100%. Asumimos que la instancia no se para nunca, por lo que está

continuamente en activo.● Instancias extra para cubrir picos de uso: Ninguna. Asumimos que el tráfico nunca sobrepasa lo que la

instancia puede dar de si.● Tráfico de subida mensual: 2 GB.● Tráfico de bajada mensual: 10 GB.● Sistema operativo: Linux (es mas barato porque no hay que pagar licencias).

Con estas suposiciones el tipo de contrato que interesa es la instancia reservada, ya que se va a usar el 100% del tiempo. Los totales por cada año de uso, repartiendo el coste de la reserva entre cada año de uso, serían:

Tipo Coste mensual($)

Pago por reserva Coste anual($) Coste anual(€)

Instancia reservada por 1 año

29,28$ 227,50$ 578,86$ 428,772€

Instancia reservada por 3 años

21,96$ 350$ 380,18$ 281.573€

- ¿Qué tipo de aplicaciones se obtienen un mayor beneficio gracias a Amazon EC2? Aquellas que requieren muchos recursos, tienen mucho tráfico, altas necesidades de computación, muchos usuarios y en general todo lo que termine requiriendo la escalabilidad bajo demanda que provee la nube. Las pequeñas aplicaciones que apenas consumen recursos o que no son críticas no se benefician de esto, ya que en muchos casos los precios de un hosting compartido o virtual son mucho mas pequeños que los costes de EC2 (ver pregunta anterior).

Página 31

Page 33: Computación en la Nube con Amazon EC2

Cloud Computing con Amazon EC2 - AWS 09-10 Licencia Creative Commons By-Nc-Sa

- ¿Cómo se gestionan las instancias? Hay muchas maneras. Desde un API para integración con aplicaciones, desde un panel de control que provee Amazon en la zona de usuarios de su sitio web o incluso desde el propio navegador Firefox mediante una extensión. En todos los casos el usuario puede comprobar el estado de las instancias que están funcionando y el uso de recursos que se está realizando.

- ¿Qué es una AMI?AMI es el acrónimo de Amazon Machine Image. Cada AMI es una imagen de una instalación de un sistema operativo, de manera similar a como se trabaja en virtualización. Básicamente están compuestas de una serie ficheros de datos que conforman la imagen y luego un XML que especifica ciertos valores necesarios para que sea una imagen válida para Amazon y que se especifican en un fichero llamado image.manifest.xml. Amazon proporciona varias AMIs listas para ejecutar pero también hay una gran variedad de imágenes públicas creadas por terceros con diferentes configuraciones listas para usar, donde las mas populares son las realizadas totalmente con software libre aunque también existen AMIs realizadas con sistemas propietarios.

- ¿Qué es una ECU?ECU es el acrónimo de Elastic Compute Unit y es el "procesador virtual" de las instancias de EC2. Cada ECU equivale en potencia de computo a un procesador Opteron o Xeon del año 2007 a 1-1,2 Ghz de frecuencia de reloj.

- ¿Qué es Utility Computing?Utility Computing se denomina al servicio que provee acceso a recursos de computación al cliente para que éste haga uso de ellos de igual modo que un cliente de la red eléctrica tiene acceso a una línea eléctrica para alimentar aparatos eléctricos y poder hacer uso de ellos.

Página 32

Page 34: Computación en la Nube con Amazon EC2

Cloud Computing con Amazon EC2 - AWS 09-10 Licencia Creative Commons By-Nc-Sa

Resumen de esfuerzoEn este apartado resumiremos el esfuerzo por parte de los miembros del grupo en la realización del trabajo.

Pablo Iñigo Blasco

Tarea Tiempo

Primera tutoría 01:00

Segunda tutoría 01:00

Tercera tutoría 01:00

Cuarta tutoría 01:00

Quinta tutoría 01:00

Estructura inicial del documento y formato 00:30

Búsqueda de referencias y lectura 05:00

Introducción y resumen 01:30

Servicios de Amazon WS 03:22

Preparación de transparencias 01:00

Preparación de presentación 03:00

Redacción de trabajo 03:00

FAQ 00:45

Revisión del trabajo 03:30

Reunión en grupo de semana santa 05:00

Reunión con Miguel e Ignacio 02:00

Reunión con Ignacio 01:00

Documentación y presentación 03:00

Reunión con Migue 02:00

Reunión con Ignacio 01:00

Reunión con Miguel e Ignacio (Presentación) 05:00

Revisión de formato de trasparencias y documentación

01:00

Ignacio Trevilla García

Tarea Tiempo

Primera tutoría 01:00

Segunda tutoría 01:00

Tercera tutoría 01:00

Cuarta tutoría 01:00

Quinta tutoría 01:00

Presentación 02:14

Buscar información de Cloud Computing y Amazon EC2

04:11

Buscar información de los aspectos económicos de Amazon EC2

03:17

Redacción de trabajo 07:18

Redacción de preguntas de examen 01:12

Página 33

Page 35: Computación en la Nube con Amazon EC2

Cloud Computing con Amazon EC2 - AWS 09-10 Licencia Creative Commons By-Nc-Sa

Tarea Tiempo

FAQ 03:46

Lectura y Revisión de trabajo 03:17

Lectura de casos de estudio 00:32

Reunión de grupo de semana santa 05:00

Reunión con Pablo 02:00

Reunión con Miguel y Pablo 01:25

Reunión con Pablo 01:00

Búsqueda Información AWS 03:00

Caso de uso y Revisión de documentos 05:00

Reunión con Pablo y Migue 04:00

Revisión documentación y presentación 03:15

Miguel Ángel Pérez Valencia

Tarea Tiempo

Buscar información sobre Cloud Computing y Amazon EC2

4:48

FAQ 4:56

Diagramas de conceptos y otros diagramas 4:12

Lectura de casos de estudio 0:46

Presentación 2:35

Redacción de trabajo 9:42

Segunda tutoría 1:00

Tercera tutoría 1:00

Cuarta tutoría 1:00

Reunión de grupo de semana santa 5:00

Reunión de grupo 1:25

Quinta tutoría 00:35

Reunión con Pablo 01:25

Búsqueda información para resolver algunas dudas sobre streaming

01:32

Añadir tablas de precios, diferencias entre tipos de instancias y otras modificaciones del documento.

1:30

Inicio de traspas para presentación. Añadir tabla de tipos de instancia y creación de gráfica para ilustrar precios

0:50

Revisión de las preguntas del FAQ y añadida la nueva zona de disponibilidad en Asia

0:23

Esquema de arquitectura, búsqueda de datos para resolver dudas y redacción de la explicación

1:50

Finalización redacción arquitectura y reunión de grupo.

2:00

Revisión diagrama arquitectura, correcciones, cálculos del coste, modificación de presentación

3:45

Página 34

Page 36: Computación en la Nube con Amazon EC2

Cloud Computing con Amazon EC2 - AWS 09-10 Licencia Creative Commons By-Nc-Sa

Referencias

[1] Web de Amazon

http://aws.amazon.com/ec2/faqs http://aws.amazon.com/ec2-slahttp://aws.amazon.com/economicshttp://aws.amazon.com/ec2/#pricing

[2] Empresas españolas que prestan servicios basados en Cloud Computing

http://www.aspgems.comhttp://www.ilionsistemas.comhttp://www.litebi.com

[3] Ejemplos reales de uso de Amazon EC2

http://aws.amazon.com/solutions/case-studies/vivareal-spanishhttp://gallir.wordpress.com/2009/12/30/como-montamos-meneame-en-amazon-ec2

[4] Carga del sistema en Unix

http://en.wikipedia.org/wiki/Load_%28computing%29

[5] Crecimiento del Cloud Computing

http://itknowledgeexchange.techtarget.com/cloud-computing/measuring-the-growth-of-cloud-computing

[6] Midiendo eficiencia en la nube

http://www.niallkennedy.com/blog/2009/03/measuring-cloud-efficiency.htm

[7] Gráfica de aumento de ofertas de trabajo con las palabras 'cloud' y 'computing' en ellas

http://www.indeed.com/jobtrends?q=cloud+computing

[8] Herramienta web de Amazon Web Services para calculo de costes de los servicios

http://calculator.s3.amazonaws.com/calc5.html

[9] Guía paso a paso para montar una aplicación con Amazon EC2

http://es.debugmodeon.com/articulo/primeros-pasos-con-amazon-ec2-i

[10] Google Trends: Tendencias de búsquedas sobre cloud computing

http://www.google.es/trends?q=cloud+computing

[11] Aumento del uso de ancho de banda de los servicios ofrecidos por Amazon Web Services LLC respecto al ancho de banda utilizado por el resto de sitios de Amazon

http://aws.typepad.com/aws/2008/05/lots-of-bits.html

[12] Above the clouds: A Berkeley View of Cloud Computing. Informe técnico elaborado en la universidad de Berckeley sobre Cloud Computing.

http://www.eecs.berkeley.edu/Pubs/TechRpts/2009/EECS-2009-28.html

[13] Resultados financieros de Amazon.com

http://finance.yahoo.com/news/Amazoncom-Announces-Fourth-bw-319363362.html?x=0&.v=1http://www.informationweek.com/cloud-computing/blog/archives/2009/07/amazon_web_serv_2.html http://blog.auctionbytes.com/cgi-bin/blog/blog.pl?/pl/2010/1/1264713943.html https://www.xing.com/net/comercio-electronico/quieres-montar-tu-comercio-aqui-te-ayudaremos-93585/amazon-vence-a-la-contraccion-del-consumo-18130706/18130706/#18130706

Página 35

Page 37: Computación en la Nube con Amazon EC2

Cloud Computing con Amazon EC2 - AWS 09-10 Licencia Creative Commons By-Nc-Sa

[14] Incremento en el uso de los servicios prestados por Amazon Web Services

http://www.informationweek.com/cloud-computing/blog/archives/2009/07/amazon_web_serv_2.html

[15] Gráfico comparativo de la distribución de sitios web por proveedor de servicios en la nube

http://www.jackofallclouds.com/2010/03/state-of-the-cloud-march-2010

[16] Diagramas sobre Cloud Computing

http://www.cloudtweaks.com/cloud-diagrams

[17] Atributos del Cloud Computing

http://www.webwire.com/ViewPressRel.asp?aId=97756

[18] Streaming de vídeo

http://www.netromedia.com/Pricing/Calculators.aspxhttp://www.planetstream.net/information/bandwidth-calculator.html?source=old-bandwidthhttp://en.wikipedia.org/wiki/Streaming_media#Streaming_bandwidth_and_storage

[19] Balanceo de carga entre instancias EC2

http://www.shlomoswidler.com/2009/07/elastic-in-elastic-load-balancing-elb.htmlhttp://serktools.com/2009/05/20/amazon-elastic-load-balancer-setuphttp://developer.amazonwebservices.com/connect/message.jspa?messageID=129721

[20] DNS Round Robin

http://en.wikipedia.org/wiki/Round_robin_DNS

[21] Ancho de banda de una instancia de EC2

http://dailyawswtf.com/post/157140960/elastic-load-balancer-and-ec2-instance-bandwidth

Otros

http://www.saasmania.com/faq-sobre-cloud-computing/#Pregunta1-1http://www.saasmania.com/2009/04/17/amazon-ec2-reserved-en-europahttp://en.wikipedia.org/wiki/Cloud_computinghttp://www.ibm.com/ibm/cloud/smart_businesshttp://communication.howstuffworks.com/cloud-computing2.htmhttp://blogs.zdnet.com/SAAS/?p=552http://www.keithpij.com/Home/tabid/36/EntryID/27/Default.aspxhttp://www.cloudtweaks.com/cloud-diagrams

Página 36