miércoles, 14 de mayo de 2008

Programming Amazon Web Services - O'Reilly

Las web con éxito, las capaces de mantener el tipo ante una avalancha de peticiones, requieren una infraestructura sólida que pueda ofrecer un redimiento sostenido.

El libro que comentamos examina los Amazon Web Services (AWS), una serie de servicios que permiten construir aplicaciones web sólidas apoyándose en la infraestructura y la experiencia de uno de los líderes de la venta por Internet. Se trata de servicios desarrollados por Amazon para satisfacer sus necesidades, así que también resultan interesantes como aproximación a la forma de trabajar de una tienda online global.

El primero de los webservices estudiados es el Simple Storage Service (S3). S3 ofrece almacenamiento seguro para cualquier tipo de datos. El modelo de datos de S3 es muy simple, consistiendo en dos tipos de recursos: objetos, que almacenan datos y contenedores (buckets) que contienen un número ilimitado de objetos. La simplicidad del modelo permite adaptarlo a una amplia gama de propósitos. Sin embargo, la naturaleza distribuida del sistema de almacenamiento hace que los objetos S3 no puedan ser manipulados como ficheros estandar: los cambios tardan un tiempo en propagarse por el sistema y hay que asumir una tasa de fallos baja, pero cierta, así que las aplicaciones deben ser capaces de manejar estas condiciones de error.

S3 tiene múltiples usos: puede usarse para almacenar información personal, como repositorio de un sistema de distribución de contenidos o como un componente de almacenamiento dentro de una aquitectura distribuida. El libro muestra dos aplicaciones, una sistema de compartición de ficheros y sistema de backup online. Amazon tiene una calculadora online que permite estimar el coste del servicio.

El segundo de los servicios estudiados es el Elastic Compute Cloud (EC2). EC2 permite ejecutar múltiples servidores virtuales Linux bajo demanda, proporcionando cuantos servidores sean precisos para procesar los datos o ejecutar aplicaciones web sin necesidad de comprar o alquilar máquinas. EC2 permite gestionar cada servidor virtual, instalarle el software necesario y configurarlo de la forma precisa, y también ofrece servidores reconfigurados por terceros. El servicio permite crear un pool de servidores, listos para ser lanzados en el momento preciso. Para ejecutar las instancias del servicio EC2 dispone de un API que lanza, para y gestiona los servidores y proporciona las herramientas necesarias para crear nuestros servidores personalizados. También se estudian varias aplicaciones basadas en el servicio EC2: un DNS dinámico, un servidor VPN y un album de Fotos virtual.

El tercero de los servicios es el Simple Queue Service (SQS). SQS entrega mensajes cortos entre sistemas con acceso a Internet, permitiendo a los componentes de una aplicación distribuida comunicarse con fiabilidad sin tener que contruir y mantener un sistema de mensajería propio. SQS permite a emisores y receptores interactuar sin tener que comunicarse directamente y sin requerir que ambas partes estén permanentemente disponibles y conectadas a la red. SQS combina una arquitectura convencional de mensajería en una infraestructura que almacena los mensajes de forma redundante en centros de proceso de datos distribuidos. Como SQS es accesible a clientes en cualquier plataforma que pueda enviar y recibir peticiones HTTP, el servicio hace posible construir aplicaciones que abarquen un amplio rango de plataformas y lenguajes de desarrollo.

El API de SQS ofrece dos tipos de recursos: mensajes (hasta 256 KB de datos que se envían a SQS y se almacenan en el servicio hasta que se entregan a uno o mas receptores) y colas (que almacenan mensajes, agrupandolos y proporcionando mecanismos de entrega y control de acceso). El modelo simple y directo de SQS combinado con su naturaleza distribuida por la que copias de los mensajes se almacena en múltiples servidores e incluso en distintos centros de proceso de datos proporciona redundancia, fiabilidad y escalabilidad, pero también supone que los mensajes pueden llegar desordenados, repetidos o incompletos, así como mostrar distintas latencias en su entrega. Las aplicaciones desarrolladas deben manejar estas restricciones. El bloque dedicado a SQS termina con un capítulo dedicado a aplicaciones de ejemplo.

El cuarto servicio presentado (y el más complejo de todos) es el Flexible Payments Service (FPS). FPS permite transferir dinero entre individuos y empresas que tengan cuentas en Amazon (Amazon Payments Accounts), permitiendo construir tiendas virtuales. Los pagos FPS son muy configurables, y permiten transacciones individuales, subscripciones, pagos fraccionados... pero sobre todo FPS permite delegar los pagos a Amazon, un proveedor con el que muchos clientes están familiarizados y en el que confían. Amazon actúa como mediador en las transacciones de forma que los clientes no tienen que proporcionar a la empresa final su información bancaria, y los desarrolladores de las aplicaciones no tienen que preocuparse de la carga que supone almacenar de forma segura una información tan delicada. El libro da diversos ejemplos de la plataforma de pago, desde el uso de los Pay Now Widgets, que permiten una integración fácil de FPS en tiendas online, a trasacciones más sofisticadas basadas en el API de FPS.

El último de los servicios es SimpleDB, una base de datos de estructura y manejo sencillos. Este servicio permite reemplazar una base de datos tradicional (RDBMS) eliminando la necesidad de comprar y mantener otro elemento. SimpleDB proporciona tres recursos (dominios, elementos y atributos), no requiere un esquema predefinido, y permite alterar la estructura y contenido según se necesite, indexando automáticamente la información almacenada asegurando que las consultas se ejecutan rápido. SimpleDB es muy distinto a una base de datos relacional: algunas diferencias hacen la vida más fácil, otras obligan a rediseñar las aplicaciones.

Los cinco webservices tratados en el libro — S3, EC2, SQS, FPS, y SimpleDB — comparten los mismos principios: se pagan sobre la marcha, son altamente escalables, tolerantes a fallos y los gestiona una empresa con gran experiencia en la operación de negocios online a nivel mundial. Sin embargo, aumentan si cabe la dependencia a la red, no siempre ofrecen acuerdos de nivel de servicio (SLAs) e indudablemente nos plantearán cuestiones acerca de la seguridad y privacidad de los datos.

Todos los ejemplos del libro (y son muchos) están desarrollados en Ruby, otra razón junto a Rails y Ferret para acercarse a este lenguaje dinámico. También hay APIs para Java, C#, Perl, PHP y Python.

En resumen, una buena descripción de las herramientas de Amazon pero sobre todo una interesantísima visión entre bastidores de la forma de trabajar de un gigante de Internet.

Programming Amazon Web Services
Autor: James Murty
Editorial: O'Reilly
Fecha de publicación: 15 de Marzo, 2008
ISBN: 978-0-59-651581-2
600 páginas

Indice
1. Infrastructure in the Cloud
2. Interacting with Amazon Web Services
3. S3: Simple Storage Service
4. S3 Applications
5. EC2: Elastic Compute Cloud (Beta)
6. Using EC2 Instances and Images
7. EC2 Applications
8. SQS: Simple Queue Service
9. SQS Applications
10. FPS: Flexible Payments Service (Beta)
11. FPS Transactions and Accounts
12. FPS Advanced Topics
13. SimpleDB (Beta)
A. AWS Resources
B. AWS API Error Codes

Fuente: Amazon y O'Reilly. Si te interesó este post puedes suscribirte a través del Feed RSS. (¿Qué es RSS?).

6 comentarios:

Jose Frechín dijo...

Llevo más de un año utilizando el servicio de almacenamiento S3, y aunque pueda parecer tosco es una solución complemetísima.

He cambiado los dns de un subdominio para que los ficheros almacenados "parezcan" alojados en el mismo servidor. Genero y subo sitemaps diarios de forma automatizada y para colmo ejecuto backups remotos de bbdd usando la misma cuenta.

El coste es ridículo, comparado con el precio en un hosting normal es de una proporción de 1 a 100.

Curiosamente el famoso twitter usa S3 para almacenar los millones de mensajes que genera la plataforma, se puede ver en vivo desde la barra de estado, cuando pulsas sobre algún enlace dentro de twitter.

Wan Link Sniper dijo...

Hola Jose. No sabía que eras usuario de S3, sin embargo me llamó la atención tu post sobre los servicios logísticos de Amazon. Tu comentario me llamó la atención sobre actividades menos conocidas de Amazon, y esta breve reseña es el primer resultado.

Por cierto, que he seguido con sana envidia vuestro encuentro en .
iCities

Un saludo

Antonio

Anónimo dijo...

Buena reseña, corro a comprarlo vía Amazon (Claro)

Anónimo dijo...

Se me olvidaba, para el que quiera ir a saco a pedirlo en Amazon: Programming Amazon-Web Services

Jose Frechín dijo...

De hecho, era bastante escéptico sobre los servicios web de amazon, hasta que el Sr. Ornitorrinco me convenció.

Me resultaba bastante bueno para ser cierto. Pero a veces, las cosas son buenas, bonitas y baratas, de verdad.

Wan Link Sniper dijo...

Tomo nota y añado el enlace al post. ¡Gracias por el feedback!