¿Querés conocer más sobre la computación en grilla y en nube? En este artículo vamos a aprender a usar la Infraestructura como Servicio para obtener una infraestructura computacional completa utilizando Amazon Elastic Compute Cloud (EC2). Veremos las similitudes, diferencias y temas a considerar en la computación en grilla y en nube. Exploraremos algunos de los temas de seguridad y opciones para el desarrollo Web en la nube, y veremos cómo podemos ser ecologicos usando estas tecnologías.
Introducción
Quizás alguna vez te preguntaste sobre cuál es la diferencia entre la computación en nube (cloud computing) y la computación en grilla (grid computing). En este artículo hablaremos sobre los tipos de computación en nube, y sus similitudes y diferencias entre la computación en nube y en grilla. Veremos por qué la computación en nube puede ser más beneficiosa que la computación en grilla, que temas hay que considerar en ambos caos, y algunos asuntos de seguridad. Usaremos Amazon Web Services como ejemplo.
Para hacer que funcione la computación en nube necesitamos tres cosas: clientes livianos, computación en grilla, y servicios de computación. La computación en grilla vincula a computadoras dispares para crear una única gran infraestructura, aprovechando los recursos sin uso. Los servicios de computación es lo que pagamos por usar servidores compartidos, al igual que pagamos por un servicio público (como electricidad, gas, y demás).
Con la computación en grilla podemos proveer recursos de computación como servicios que pueden ser prendidos y apagados. La computación en nube da un paso más brindando recursos bajo demanda. Esto elimina la necesidad de sobre-adquisición de equipos para satisfacer la demanda de millones de usuarios.
La Infraestructura como Servicio y más
Un cliente puede obtener servicios de una infraestructura completa de computadoras a través de Internet. Este tipo de servicio se llama Infraestructura como Servicio (IaaS - Infraestructure as a Service). Los servicios basados en Internet, como almacenamiento y bases de datos, forman parte de IaaS. Otro tipo de servicios en Internet son la Plataforma como Servicio (PaaS - Platform as a Service) y el Software como Servicio (SaaS - Software as a Service). PaaS ofrece un desarrollo de aplicación completo o parcial que los usuarios pueden acceder, mientras que SaaS ofrece una aplicaciones completas que almacenan datos propios, como ser un Enterprise Resource Management (ERP) a través de Internet.
Como ejemplo de cómo se usa IaaS en la vida real, consideremos el diario The New York Times que procesó varios terabytes de datos archivados usando las cientos de instancias de Amazon EC2, en 36 horas. Si The New York Times no hubiera usado EC2, le hubiera llevado meses procesar estos datos.
Las IaaS se dividen en dos tipos de uso: público y privado. Amazon EC2 usa un pool de servidores públicos en la nube de la infraestructura. Una nube de servicios privada utiliza grupos de pooles de servidores públicos o privados desde un centro de datos corporativo interno. Se pueden usar ambos tipos para desarrollar software dentro del ambiente del centro de datos corporativo, y, con EC2, extender temporalmente los recursos a un bajo costo (por ejemplo, para realizar pruebas). Esta mezcla brinda una forma más rápida para desarrollar aplicaciones con ciclos de desarrollo y testing más cortos.
Amazon Web Services
Con EC2, los clientes crean sus propias Imágenes de Máquinas Amazon (AMI - Amazon Machine Images) que contienen un sistema operativo, aplicaciones y datos, y controlan cuántas instancias de cada AMI se ejecutan a la vez. El cliente paga por las horas-instancia (y ancho de banda) que usa, agregando recursos en horarios pico y quitándolos cuando no se necesitan más. EC2, Simple Storage Service (S3) y otros productos de Amazon escalan para entregar servicios a través de Internet de manera masiva a millones de usuarios.
Amazon brinda cinco tipos diferentes de servidores, desde servidores de un solo procesador x86 hasta servidores de ocho procesadores x86_64. No es necesario saber qué servidores se están usando para crear instancias de servicios. Se pueden ubicar instancias en ubicaciones geográficas distintas, o en zonas.
Computación en nube
Con la computación en nube, las empresas pueden escalar en un instante y de forma masiva la capacidad de procesamiento, sin tener que invetir en infraestructura nueva, entrenar personal, o licenciar software. La computación en nube es particularmente beneficiosa para pequeñas y medianas empresas que desean delegar a terceros la infraestructura de su centro de datos, o para empresas grandes que desean tener picos de capacidad de procesamiento sin incurrir en el mayor costo que implicaría construir centros de datos internos más potentes. En ambos casos, los consumidores de servicios usan lo que necesitan a través de Internet y pagan sólo por lo que utilizaron.
Los consumidores de servicios ya no necesitan estar en una PC, usar una aplicación desde una PC, o comprar una versión específica que se configura en los smartphones, PDAs, u otros dispotivios. Los consumidores no son dueños de la infraestructura, del software, o de la plataforma en la nube. Tiene menores costos iniciales, menor costo de adquisición, y menor costo operativo. Al consumidor no le importa cómo se mantienen los servidores de la nube. El consumidor puede acceder a múltiples servidores desde cualquier lugar del planeta, sin saber cuáles son ni donde están ubicados.
Computación en grilla
La computación en nube es una evolución de la computación en grilla y brinda provisionamiento de recursos a demanda. La computación en grilla puede o no estar en la nube, dependiendo del tipo de usuarios que la utilicen. Si los usuarios son administradores de sistemas e integradores, les importa cómo se mantiene la nube. Actualizan, instalan y virtualizan servidores y aplicaciones. Si los usuarios son consumidores, no les interesa cómo funciona el sistema.
La computación en grilla requiere del uso de software que pueda dividir y agrupar piezas de un programa como si fuera un gran sistema a través de miles de computadoras. Un problema con la grilla es que si una pieza del software en un nodo falla, otros piezas del software podrían fallar también. Esto puede aliviarse si ese componente tiene algún otro componente de respaldo en otro nodo, pero igual pueden surgir problemas si los componentes necesitan de otras piezas de software para lograr realizar uno o más tareas en la grilla. Las imágenes de sistemas grandes y el hardware asociado para operar y mantenerlos puede contribuir a grandes costos de adquisición y gastos operativos.
Similitudes y diferencias
La computación en nube y la computación en grilla son escalables. La escalabilidad se logra a través del balanceo de carga de instancias de la aplicación, que se jecutan de forma separada en distintos sistemas operativos conectados a través de Servicios Web. La CPU y el ancho de red se reservan y liberan a demanda. La capacidad de almacenamiento del sistema aumenta y disminuye dependiendo del número de usuarios, instancias, y la cantidad de datos que se transfieren en un momento dado.
Ambos tipos de computación soportan la multitarea, es decir, muchos clientes pueden realizar distintas tareas, accediendo a una o a múltiples instancias de aplicaciones. Al compartir recursos para un gran pool de usuarios se logra reducir los costos de infraestructura y la capacidad de carga pico. La computación en nube y en grilla tienen Acuerdos de Niveles de Servicio (SLA) para garantizar la disponibilidad (por ejemplo, 99%). Si el servicio está por debajo del nivel acordado, el consumidor recibirá crédito de servicio por recibir tarde los datos.
Amazon S3 tiene una interfaz de servicios web para el almacenamiento y recuperación de datos en una nube. Se puede establecer un limite máximo de objetos que se almacenan en S3. Se pueden almacenar objetos tan pequeños como 1 byte, y tan grandes como 5GB o incluso varios terabytes. S3 utiliza el concepto de "baldes" como contenedores para cada ubicación de almacenamiento de los objetos. Los datos se almacenan de forma segura usando la misma infraestructura de almacenamiento que utiliza Amazon para su e-commerce web.
Si bien el almacenamiento en grilla funciona bien para almacenar muchos datos, no es economicamente conveniente almacenar objetos tan pequeños como 1 byte. En las grillas de datos, la cantidad de datos distribuidos debe ser grande para maximizar el beneficio.
Temas a considerar
Hay cuatro temas que destacan con la computación en nube y en grilla: políticas de niveles de uso, temas de interoperatibilidad, costos ocultos, y comportamiento inesperado.
Políticas de niveles de uso
Supongamos que tenemos un programa que hace la validación de tarjeas de crédito en la nube, y llegamos al pico de ventas para la Navidad. Se detectaría una demanda mayor, y se crearían más instancias para satisfacer la demanda. A medida que nos alejamos de la Navidad, la demanda bajaría y se liberarían instancias de los recursos para usarlos en otra cosa.
Para comprobar si este programa funciona, hay que desarrollar, o mejorar e implementar, una política de niveles de uso en una prueba piloto antes de mover el programa a un entorno productivo. Hay que verificar si esta política deteca incrementos repentinos en la demanda y realmente crea instancias adicionales para satisfacer los pedidos. También hay que comprobar cómo se deben liberar los recursos una vez que queden ociosos.
Temas de interoperatibilidad
Si una organización crea una aplicación con un proveedor de computación en nube, podría resultarle dificil cambiar hacia otro proveedor que tiene su API propietaria y formatos distintos para importar y exportar datos. Esto ocasiona problemas de interoperatiblidad de aplicaciones entre estos dos proveedores de computación en nube. Es posible que se necesita reformatear los datos o cambiar la lógica de las aplicaciones. Aunque no existe un API estándar para la computación en nube o para importar y exportar datos, IBM y Amazon trabajaron juntos para lograr esta interoperatibilidad.
Costos ocultos
La computación en nube cuáles son los costos ocultos. Por ejemplo, las empresas podrían incurrir en mayores cargos por tráfico de red de su proveedor de servicios por el almacenamiento y aplicaciones de bases de datos que contienen terabytes de información en la nube. Esto podría superar los costos que tendrían por una infraestructura nueva, capacitar personal o licenciar software. En otro caso relacionado con la red, las organizaciones que estén ubicadas lejos de su proveedor de servicios podrían sufrir latencia, especialmente en días de mucho tráfico.
Comportamiento inesperado
Supongamos que la aplicación de validación de tarjetas de crédito funciona bien en los centros de datos de la empresa. Es importante probar la aplicación en la nube con una estudio piloto para comprobar cualquier comportamiento inesperado. Por ejemplo, habría que probar cómo la aplicación valida la tarjeta, y cómo funciona esta aplicación bajo alta carga (simulando, por ejemplo, las ventas de Navidad).
Temas de seguridad
En febrero de 2008, Amazon S3 y EC2 sufrieron una caida de tres horas. Aunque los SLA ofrecen recuperación de datos y crédito adicional por este tipo de problemas, los consumidores perdieron oportunidades de venta y los gerentes no pudieron acceder a información crítica del negocio durante estas horas.
En vez de esperar a que ocurra un problema, los consumidores deberían hacer pruebas de seguridad ellos mismos - es decir, comprobar qué tan capaz es el proveedor de recuperar datos. Esta prueba es muy simple y no necesita de herramientas. Todo lo que se necesita es pedir encontrar datos antiguos, y ver cuánto le toma al proveedor recuperarlos. Si les lleva mucho tiempo, hay que preguntarle al proveedor por qué, y cuánto crédito recibiríamos en los distintos escenarios. Por último, verificar si los checksums coinciden con los datos originales.
Otro tema son los potenciales problemas con los datos en la nube. Para proteger los datos sería bueno utilizar claves privadas propias. Verificar con el proveedor cómo es la gestión de claves privadas. Amazon ofrece el certificado si se pide.
Desarrollo de software en la nube
Para desarrollar software usando bases de datos, la elección más usada es utilizar pooles de servidores en nube en el centro de datos corporativo interno, y extender los recursos de forma temporal con un proveedor externo para propósito de pruebas. Esto le permite a los líderes de proyecto controlar costos, gestionar la seguridad, y asignar recursos a la nube del proyecto. El líder del proyecto también podría asignar recursos de hardware individuales a diferentes tipos de nubes: nubes para desarrollo web, nubes para pruebas, y nubes para producción. El costo asociado a cada tipo de nube puede variar. El costo por hora de uso en la nube de desarrollo seguramente será menor al de la nube de producción, ya que esta última necesita de características adicionales, como ser cumplir con SLAs y seguridad.
Los líderes pueden limitar los proyectos en ciertas nubes. Por ejemplo, servicios de porciones de la nube de producción sólo pueden ser usados por la configuración de producción. Los servicios de la nube de desarrollo sólo pueden ser usados con propósitos de desarrollo. Para optimizar la infraestructura en las distintas etapas de un desarrollo, los gerentes pueden pedir información de costos para seguir la utilización de cada proyecto y usuario. Si los costos son muy altos, los gerentes pueden utilizar Amazon EC2 para extender de forma temporal los recursos a un muy bajo costo.
Computación en nube ecológica
Un incentivo para usar la computación en nube es que puede resultar más ecológica. Se reduce el número de componentes que se necesitan para ejecutar aplicaciones, ya que se agrupan todos en sistemas remotos, los cuales pueden gestionarse más eficientemente como grupo (costos de energia, enfriamiento, etc.).
Conclusión
Hasta aquí vimos cómo se comparan la computación en nube y en grilla, y cómo resuelven problemas y qué problemas y riesgos de seguridad existen. La demanda de potenciales consumidores a través de Internet presenta un desafio para los desarrolladores y los equipos de proyectos. Es bueno tener en vista esta alternativa para enfrentar posibles problemas, que podrían resolverse muy facilmente con estas técnicas.