Google App Engine4

También podría gustarte

Está en la página 1de 27

Ejecuta tus aplicaciones web en la infraestructura de Google.

Google App Engine permite crear aplicaciones web en los mismos sistemas escalables con los que funcionan las aplicaciones de Google.

App Engine Es un servicio de alojamiento de pginas web que presta Google de forma gratuita hasta determinadas cuotas, este servicio permite ejecutar aplicaciones sobre la infraestructura de Google.

No se requiere ensamblaje. Google App Engine proporciona un entorno de aplicacin completamente integrado.

Fcil de ampliar. Google App Engine facilita la creacin de aplicaciones escalables destinadas tanto a un usuario como a millones de ellos sin quebraderos de cabeza en lo que respecta a la infraestructura.

Empezar es gratis Por el momento las cuentas gratuitas tienen un lmite de 500 MB de almacenamiento permanente y la suficiente cantidad de ancho de banda y CPU para casi 5 millones de visitas mensuales, y si la aplicacin supera estas cuotas, se pueden comprar cuotas adicionales por un bajo costo.

Si no se cuenta con un dominio propio Google proporciona uno con la siguiente estructura, midominio.appspot.com. Tambin permite implementar un dominio propio a travs de Google Apps.

Cuentas gratuitas
Por el momento las cuentas gratuitas tienen un lmite de 500 MB de almacenamiento permanente y la suficiente cantidad de ancho de banda y CPU para casi 5 millones de visitas mensuales, y si la aplicacin supera estas cuotas, se pueden comprar cuotas adicionales por un bajo costo.

Actualmente las aplicaciones Google App Engine se implementan mediante los lenguajes de programacin Python y Java.

Aqu muestro los comandos bsicos: Para arrancar el servidor de desarrollo: dev_appserver.py directorio_aplicacion

Arrancar el servidor de desarrollo borrando el contenido del datastore (luego veremos qu es). dev_appserver.py --clear_datastore directorio_aplicacion

Desplegar la aplicacin para que est disponible en nuestro subdominio. appcfg.py update directorio_aplicacion

Por el momento las aplicaciones para Google App Engine se programan en Python. Sin embargo es muy probable que los ingenieros de Google estn trabajando en soportar otros lenguajes: Ruby, PHP, Java,... Y se sabe que un ingeniero de Google ya est trabajando en el soporte para Perl. Por el momento slo est soportado Python y slo podremos usar libreras que sean 100% Python. Django Por defecto GAE viene con una versin reducida de django 0.96. Es de esperar que en prximas versiones del entorno de desarrollo se incorpore ya la versin 1.0 de django como versin por defecto.

El Datastore App Engine ofrece un API de persistencia. Se trata del API datastore. El datastore permite definir clases cuyas instancias sean persistentes. Para ello basta crear una clase que extienda de db.Model. Ejemplo: from google.appengine.ext import db class Pet(db.Model): name = db.StringProperty(required=True) creation_date = db.DateTimeProperty(auto_now_add=True)

Para insertar un nuevo Pet en la base de datos basta crearlo y llamar al mtodo put(). As de sencillo. pet = Pet(name='Arturo') pet.put()

Los objetos persistentes tienen una clave. Dicha clave se puede obtener con el mtodo key(). En una plantilla django podramos hacer lo siguiente: <a href="/pet.edit?key={{ pet.key }}">editar mascota</a>

Y en el controlador podramos hacer lo siguiente: pet = Pet.get(self.request.get('key'))

Una clave (key) tiene el siguiente aspecto: 'agZzZWl2aXRyDwsSCERhdGFiYXNlGI8BDA'. Es una versin ofuscada de la clave. Pero la clave realmente es un objeto Key que tiene dos campos. Si queremos utilizar el identificador numrico que "est oculto" podemos utilizar: <a href="/pet.edit?id={{ pet.key.id }}">editar mascota</a> Y recuperar el objeto con: pet = Pet.get_by_id(int(self.request.get('id')))

Para hacer consultas hay dos caminos. Simplemente voy a poner un par de ejemplos. pets = Pet.all().filter('name', 'Arturo').order('-creation_date')

Esta consulta obtiene todas las mascotas que se llamen 'Arturo' y las ordena inversamente por fecha de creacin. Esta consulta tambin la podemos hacer utilizando GQL, un lenguaje similar en sintaxis a SQL. pets = Pet.gql('WHERE name=:1 ORDER BY creation_date DESC', 'Arturo')

El API datastore tiene diversas limitaciones: Hay limitaciones en las consultas que se pueden hacer. Concretamente no se pueden utilizar operadores de desigualdad (<, <=, >, >=) en ms de un campo. El datastore no es una base de datos relacional. No se pueden hacer JOINs porque estos no son escalables. Se pueden crear relaciones entre entidades, pero eliminar un extremo de la relacin no elimina el otro. Es decir, si tuviramos una clase 'Person' y decidiramos que cada mascota pertenece a una persona, al borrar una persona no se borraran las mascotas. Esto es as tambin por motivos de escalabilidad.

Usuarios Google App Engine ofrece un API de autenticacin que funciona con las cuentas de GMail / iGoogle. Tambin podemos hacer que este API funcione con nuestro dominio de Google Apps. Es decir, podemos autenticar a nuestros usuarios xxx@example.com con muy poco esfuerzo. Este ejemplo es muy ilustrativo (sacado de la documentacin): from google.appengine.api import users class MyHandler(webapp.RequestHandler): def get(self): user = users.get_current_user() if user: greeting = ("Welcome, %s! (<a href=\"%s\">sign out</a>)" % (user.nickname(), users.create_logout_url("/"))) else: greeting = ("<a href=\"%s\">Sign in or register</a>." % users.create_login_url("/")) self.response.out.write("<html><body>%s</body></html>" % greeting)

Envo de emails GAE tambin nos ofrece un API de envo de mails. La cantidad de emails que se pueden enviar al da est limitada al igual que el ancho de banda, CPU, etc. Actualmente hay una limitacin de 2000 emails diarios. Este es un ejemplo de cmo se envan emails con esta API (sacado de la documentacin):

from google.appengine.api import mail mail.send_mail(sender="support@example.com", to="Albert Johnson <Albert.Johnson@example.com>", subject="Your account has been approved", body=""" Dear Albert: Your example.com account has been approved. You can now visit http://www.example.com/ and sign in using your Google Account to access new features. Please let us know if you have any questions. The example.com Team """)

Memcache Para disminuir el uso de disco y CPU es muy importante cachear las consultas del datastore. Tambin por supuesto se pueden cachear otros datos o trozos de texto. Por ejemplo puede resultar til cachear fragmentos de HTML que varen poco en el tiempo y que sean complejos de procesar. Un ejemplo claro es una "nube de etiquetas". La cach acta como un diccionario/mapa/array asociativo. Se guardan y obtienen objetos a partir de una clave y se les puede asignar una "fecha de caducidad".

Manipulacin de imgenes El API de manipulacin de imgenes es muy sencilla de utilizar. Tiene funciones para rotar, recortar, reflejar y redimensionar imgenes. Una importante carencia es que no hay forma de escalar imgenes sin deformarlas. No obstante aqu tenis un artculo que explica cmo escalar imgenes sin deformarlas.

Carencias Google App Engine no tiene un API de sesiones. En algunos nos bastar combinar el API de usuarios, el API de memcache y el datastore. Pero si por ejemplo queremos tener nuestras propias cuentas de usuarios, entonces, s necesitamos un API de sesiones. Pues bien, hay quien ya se ha encargado de ayudarnos en esto. Se trata del proyecto gae-utilities. Hay poca informacin y herramientas para exportar o importar grandes volmenes de datos de la base de datos. Hay un artculo sobre cmo importar datos desde un archivo CSV, pero poco ms. No hay tareas programables. Se pueden utilizar servicios como webcron.org para paliar esta carencia, pero no son la mejor solucin. Actualizacin: Google App Engine ya soporta tareas programadas.

Conclusiones Google App Engine es un proyecto muy ambicioso que todava tiene importantes limitaciones. Es de esperar que Google le dedique grandes esfuerzos y que pronto obtengamos noticias de importantes mejoras. GAE promete mucho y de momento es buena eleccin si las necesidades de tu proyecto no chocan con las limitaciones del servicio.

Trabajo realizado por: Susana Puente Edna Gmez Oscar Melendez Roberto Barrientos Brenda

También podría gustarte