Python revisited: Google App Engine

Si eres programador y no estas metido dentro de una de esas urnas de cristal que tanto abundan en las empresas de software de este país, seguro que ayer dijiste al menos una vez la palabra del día: Python, el lenguaje de programación con el que Guido van Rossum homenajeó a los inmortales creadores de La vida de Brian. Este es el lenguaje que soportará inicialmente la nueva iniciativa para conquistar el mundo de los chicos de Google: Google App Engine (GAE).

Google App Engine es básicamente un servicio de alojamiento de aplicaciones web gratuito que Google esta ofreciendo desde ayer a todos aquellos desarrolladores que lo deseen. Las características sobrepasan lo que se podría calificar como interesante, y se ajustarían mejor al termino inquietante:

  • Inicialmente solo se soporta Python (2.5) como runtime para el motor, es decir, solo aplicaciones desarrolladas en Python se pueden ejecutar sobre la plataforma. Ya se ha anunciado que el soporte para otros lenguajes ira llegando.
  • El SDK trae un servidor web para facilitar el desarrollo a la Rails.
  • La integración con Django, el framework Python por excelencia en estos días, esta bastante conseguida al parecer. CherryPy, Pylons y web.py también están soportados al ser frameworks WSGI.
  • Google propone su propio framework bajo el nombre de webapp.
  • La autentificación de tu aplicación se puede integrar trasparentemente con las cuentas de Google.
  • Existe una herramienta de deploy para subir tu aplicación a http://application-id.appspot.com, el dominio en el que corren a priori todas las aplicaciones de GAE:
appcfg.py update helloworld/
  • Si eres usuario de Google Apps puedes correr las aplicaciones bajo tus propios dominios.
  • Contamos con una herramienta para monitorizar el rendimiento de la app. Estadisticas de todo tipo incluidas.
  • Las aplicaciones corren en un entorno protegido. Este sandbox limita el acceso al sistema que corre por debajo (so no sockets, no threads) pero también aumenta la escalabilidad y permite que las peticiones se distribuyan a través de varios servidores.
  • Promueve ciertos hábitos REST. Ademas únicamente se puede contactar a la aplicación por HTTP/S en puertos estándares.
  • Para los datos que se tienen que guardar contamos con App Engine datastore, el sistema de almacenamiento propuesto por Google, potenciando nuestras aplicaciones a través del uso de dos tecnologias clave para Google como BigTable y GFS.
  • Nada de lanzar subprocesos o ejecutar código después de que el response se haya devuelto (que tiene un timeout relativamente corto antes de ser eliminada).
  • Las aplicaciones pueden mandar correos electrónicos utilizando App Engine Mail Service, que utiliza la infraestructura de Google.
  • 500 Mb de almacenamiento, 5M de pageviews/mes y 10Gb de transferencia/dia por la cara. Se podrá comprar la ampliación de estos recursos.

Y nuestras conclusiones:

  • Cada vez es más obvio que los lenguajes dinámicos pueden estar a la altura de cualquier proyecto, en las mismas condiciones que otros lenguajes, y que por tanto las selección de los mismos debe basarse en otros factores.
  • Más y más proyectos se lanzarán con el apoyo de estos lenguajes, que cuentan cada día con más respaldo a todos los niveles.
  • Django encontrará un importante revulsivo en cuanto a usuarios que se acerquen al framework, por la posibilidad de un fácil (y gratuito) despliegue en producción.
  • El soporte para otros runtimes tardará algunos meses en llegar.
  • La propuesta de Google parece más vertical y acoplada que la de Amazon (S3, EC y AmazonDb estan menos acoplados) y cuando a masas brutas de desarrolladores se refiere esta opción suele ser más acertada.
  • Es posible que si se amplia el numero de runtimes, Google se convierta en la empresa de hosting gratuito más interesante… por increíble que resultase esto hace unos años.

Días apasionantes para trabajar con tecnologías web.

8 Respuestas a “Python revisited: Google App Engine”


  1. 1 gimenete

    Esto ha sido un golpe para Amazon. El API de persistencia que da Google App Engine es muy superior al SimpleDB de Amazon. Y la simplicidad en el deploy también es muy superior a la de Amazon EC2. Por otro lado, obviamente, EC2 te da más libertad, pero con una complejidad muy superior.

  2. 2 martin

    Bueno, la complejidad no tiene porque ser mayor si ya tienes automatizada la creación de tu imagen. De hecho, me aventuro a decir que tienes más garantias de que todo funcione ya que tu distribuyes tu propia imagen sin depender de un framework de ejecución particular. A mayores, si aprovechas las herramientas ya disponibles para crear imagenes de EC2 en algunos frameworks, más fácil aún me lo pones.

    De todos modos, y a pesar de las limitaciones, espectacular el salto de Google al mundo del cloud computing. ¿Cuánto tardará Microsoft?

  3. 3 aitor

    @martin … según lo veas… eso es como decir que una vez que has automatizado la recogida de basuras, la recogida de basuras es más sencilla. Un argumento un tanto tautológico; la dificultad estriba precisamente en ese proceso XD.

    De cualquier manera yo creo que Google lleva un punto ganado sólo para con las masas, que lo quieren todo integrado. Mucha gente seguirá disfrutando de tener solo la parte de almacenamiento de su aplicación en S3, algo que a día de hoy es imposible con GAE.

  4. 4 martin

    Aitor,

    No sé si con la integración, pero donde si ganan definitivamente un punto es en ofrecerlo gratis. Mejor que mejor, a ver si eso anima a Amazon a ofrecer sus servicios también en una “free edition”.

  5. 5 wtf

    Google Apphosting/1.0
    Python 2.5.2 (r252:60911, Mar 12 2008, 14:07:58)
    [GCC 4.1.0]

    dir()
    [’author‘, ‘builtins‘, ‘doc‘, ‘file‘, ‘name‘, ‘a’, ‘array’, ‘b’, ‘d’, ‘datastore’, ‘datastore_types’, ‘db’, ‘dothis’, ‘f’, ‘foo’, ‘i’, ‘imp’, ‘l’, ‘li’, ‘list1′, ‘list2′, ‘logging’, ‘m’, ‘mail’, ‘marshal’, ‘new’, ‘os’, ‘random’, ’socket’, ’sys’, ‘t’, ‘this’, ‘urlfetch’, ‘urllib’, ‘users’, ‘uuid’, ‘webapp’, ‘x’, ‘zlib’]
    print author
    ryanb@google.com (Ryan Barrett)
    dir(db)
    Traceback (most recent call last):
    File “/base/python_lib/versions/1/google/appengine/ext/webapp/init.py”, line 486, in call
    handler.post(*groups)
    File “/base/data/home/apps/shell/1.15/shell.py”, line 86, in post
    for name, val in pickle.loads(session[’session_module_dict’]).items():
    File “/base/python_dist/lib/python2.5/pickle.py”, line 1365, in loads
    return Unpickler(file).load()
    File “/base/python_dist/lib/python2.5/pickle.py”, line 852, in load
    dispatchkey
    File “/base/python_dist/lib/python2.5/pickle.py”, line 1084, in load_global
    klass = self.find_class(module, name)
    File “/base/python_dist/lib/python2.5/pickle.py”, line 1119, in find_class
    klass = getattr(mod, name)
    AttributeError: ‘module’ object has no attribute ‘fib’

  1. 1 meneame.net
    Dirección Trackback a 9 Apr 2008 @ 1:09 pm
  2. 2 » Google App Engine
    Dirección Pingback a 9 Apr 2008 @ 4:18 pm
  3. 3 David Esperalta
    Dirección Trackback a 10 Apr 2008 @ 3:38 pm

Añade un Comentario





Close
E-mail It