miércoles, abril 09, 2008

Google App Engine

(vía Barrapunto) Google acaba de publicar Google App Engine, un conjunto de librerías y herramientas que permiten el desarrollo de aplicaciones que posteriormente pueden ejecutarse en la infraestructura de servidores de Google. Dentro del SDK publicado y la arquitectura puede verse:

Python

El SDK actualmente publicado usa el lenguaje Python, en su versión 2.5, y viene acompañado de una serie de librerías que proporcionan API para acceder a varios de los servicios de Google. En el runtime de Python que proporciona Google no están activados todos los módulos estándar de Python (ver lista de módulos que están disponibles en el entorno. También está limitado el uso de aquellas clases y funciones que acceden directamente a disco.

En un futuro el SDK parece ser que estará disponible para otros lenguajes de programación.

API que aporta

Google aporta una serie de API que permite acceder a las facilidades de almacenamiento que tiene implementadado Google (BitTable, GFS), acceso a los servicios de autentificación o a servicios que permiten comunicarse por http con otros sistemas.

Lo más interesante es poder acceder a las ingentes cantidades de almacenamiento de Google implementados a través de Google Filesystem y bigtable. Google se encargará de todo el trabajo de replicación, backup, alta disponibilidad, etc.

Arquitectura

He estado leyendo por encima las secciones de Getting Started para informarme del entorno de ejecución de las aplicaciones. Éstas se ejecutan usando la interfaz CGI y el SDK trae un servidor web que emula el entorno de ejecución que se va encontrar cuando esté en los servidores de Google. Una vez desarrollada la aplicación en local, con un comando se sube la aplicación a las granjas de servidores de Google.

Esta estructura de aplicaciones permite implementar fácilmente la escalabilidad y redundancia que hace a Google puntero, usando servidores baratos y gestionándolos con un pequeño equipo de personas, sin pérdidas de servicio en caso de averías. El desarrollador se olvida de todo tipo de efectos colaterales que puede tener una aplicación corriendo en entorno compartido y de la necesidad de implementar mecanismos de contención y sincronización entre nodos de clustes: todo lo provee Google, y esta es la gran ventaja que actualmente tiene frente a los competidores y lo que le ha permitido crecer.

Tiene un sistema de plantillas muy influenciado por otros frameworks Pythone xistentes, en especial django y un sistema para poder almacenar ficheros estáticos y poder servirlos obteniendo sus contenidos desde los sistemas de almacenamiento de base de datos.

Por último hablar del sistema de acceso a base de datos muy influenciado también por el framework de Django, el cual usa un sistema de consulta similar a SQL que denominan GQL, puesto que el sistema de base de datos no es relacional.

Términos de servicios

Las aplicaciones aparecerán como aplicacion-id.appspot.com, y en principio tiene 500MB de almacenamiento, acceso a una determinada cantidad de ciclos de CPU para usar y de momento de manera gratuito - o lo que es probable, tendrá una versión gratuita y otra de pago con acceso a muchos más recursos de almacenamiento y ciclos de CPU (ver los términos de servicio) y no olvidar este detalle:
4.1. Subject to Section 12 of the Terms, the Service is provided to you without charge for up to 500MB of disk storage, 10GB incoming bandwidth per day, 10GB outgoing bandwidth per day, 200 million megacycles of CPU per day and 2,000 emails per day. These quotas will be know as the “Fee Threshold”. Google reserves the right to change this quota at its discretion.

Comentarios

Siempre he estado trabajando en la zona de sistemas de los desarrollos web, y un framework de este tipo presente una serie de ventajas tanto para desarrolladores como para administradores de sistemas:
  • No tienes que preocuparte que tus aplicaciones están desarrolladas en cluster: Cuando se tiene una aplicación web que se diseño y pensó para correr en un solo servidor web, cuando se salta a una granja de servidores y se usa balanceadores puede surgir toda una serie de problemáticas debido a que las aplicaciones no fueron pensadas para ejecutarse en cluster.
  • Tienes una escalabilidad bestial. Google pensó todo este sistema pare disponer cantidades ingentes de fuerza de proceso y almacenamiento que fuera fácilmente ampliable añadiendo servidores baratos, y que además pudiesen ser mantenidos y monitorizados por un número reducido de técnicos. Ahora se pone a disposición de un público más general esta arquitectura.
  • No tienes problemas de aplicaciones compartidas - y quien se las haya visto con el IIS 5.0 y los nivels de aislamiento medio sabe a qué me refiero -. Si una aplicación casca, el resto del sistema no tiene porqué irse por delante. Es más, al ser todo distribuido se tiene sistemas de migración automática de las aplicaciones por los servidores de la granja.
  • Entre las cosas malas habrá que decir que estás poniendo todos los huevos de tu aplicación en una cesta, y por supuesto, Google cobrará por aquellas aplicaciones que tengan éxito. Aparte Amazon Web Services no hay ahora mismo nada en el mercado que se le parezca.
Será interesante ver por donde evoluciona la plataforma y el poder que Google consigue en Internet a través de estas iniciativas.

Referencia

Technorati Tags:

No hay comentarios: