El lunes pasado comentaba que me había llegado mi invitación para crear mi cuenta en Google Apps Engine (GAE), y tenía la duda sobre que aplicación desarrollar. He decidido en éste post hablar brevemente sobre como desarrollar una aplicación básica para GAE haciendo uso del SDK que ofrece Google de manera gratuita.
Si alguien planea usar GAE como plataforma para desarrollar una aplicación de producción, pues es bueno hacer ciertas aclaraciones para que nadie luego se sienta sorprendido, en lo personal creo que GAE es una gran iniciativa, pero ciertamente tiene sus inconveniente, aquí los más importantes:
- El único lenguaje de programación soportado actualmente es Python, se espera en un futuro ofrecer algunos otros.
- No existe un motor de base de datos relacional, la única forma de almacenar información es en grande tablas que reciben el nombre de "datastore" (almacenes de datos), aunque Google ofrece la posibilidad de hacer queries en una sintaxis parecida a un SELECT de SQL, en realidad sólo ofrece eso, todas las escrituras o ediciones de datos deben ser hechas usando las funciones que provee Google para el datastore.
- Las aplicaciones una vez que son levantadas a la red de Google no pueden ser borradas, así que cuidado con que es lo que subimos a GAE.
- Nuestra aplicación una vez desarrollada es automáticamente escalable, ya que GAE es el que se encarga de proveer la redundancia y distribución de la data a través de toda la red de Google, lo cuál es bueno poque reduce al mínimo la inversión en hardware, pero hay un inconveniente. Las aplicaciones desarrolladas para GAE, sólo correran en GAE. No hay forma de hacer un back up de la data y copiar los archivos de la aplicación para luego moverla un servidor web fuera de la red de Google, estamos ante una arquitectura cerrada.
- Los datos que almacenemos en el datastore, estan en poseción de Google y por lo tanto Google puede indexarlos para que estén su motor de búsqueda. Así que cuidado con la información que se pone en el datastore, poque cualquiera podría tener acceso a ella.
Teniendo claro los puntos anteriores ya sabemos que podemos y que no podemos hacer con GAE, por lo tanto ya queda a nuestro criterio la naturaleza de la aplicación que desarrollemos. Comencemos ahora con éste breve tutorial que trata de explicar como instalar y correr una aplicación GAE mínima usando el SDK que puede ser descargado libremente desde la red de Google.
Lo primero que debemos hacer es descargar el SDK de GAE desde esta pagina web (en mi caso particular lo hare usando la versión Linux):
http://code.google.com/appengine/downloads.html
Los que tengan Linux or Mac pueden comenzar el proceso de instalación del SDK inmediatamente porque usualmente Python 2.5 ya está instalado, pero los usuarios de Windows deben de descargar e instalar Python desde aquí:
http://www.python.org/download/
Cuando se ha descargado el ZIP file de la versión Linux debemos tipear los siguientes comandos para instalarlo (asumiendo que usan Ubuntu):
$ unzip google_appengine_1.0.1.zip
$ sudo mv google_appengine /usr/local/appengine
Ya estamos listos para desarrollar nuestro primer ejemplo entonces. Para ello basta con que creemos un directorio llamado "holamundo", y luego entraremos a dicho directorio, para hacerlo usaremos los siguientes comandos:
$ cd ~
$ mkdir holamundo
$ cd holamundo
Ahora debemos de crear dos archivos uno llamado "holamundo.py" y otro llamado "app.yaml". El contenido de dichos archivos debe ser el siguiente:
holamundo.py:
print ‘Content-Type: text/html’ print » print ‘hola mundo!!!’ |
app.yaml:
application: holamundo version: 1 runtime: python api_version: 1 handlers: |
Como es obvio el primer archivo holamundo.py es el programa que contiene nuestra aplicación y app.yaml le informa a GAE como procesar nuestra aplicación. holamundo.py no requiere mayor comentario pues es obvio por su sintaxis que lo único que hara la aplicación sera mostrar las palabras "hola mundo!!!" en el navegador, todo el trabajo de configuración se realiza en app.yaml, aquí una explicación detallada línea por línea:
application: holamundo |
Como su nombre lo indica esta cláusula le da nombre a nuestra aplicación |
version: 1 | Es la versión de nuestra aplicación, para nuestro ejemplo esta es la primera versión que hacemos de nuestro programa |
runtime: python | El lenguaje de programación que se usará para ejecutar nuestra aplicación por el momento sólo python esta disponible, pero se espera que otros pronto. |
api_version: 1 | La versión del API que estamos usando, puesto que esta es la primera verisón disponible, lo indicamos en ésta claúsula pues depende de la versión del API las funciones a las que tenemos acceso, muchas funciones pueden añadirse o eliminarse, con esta cláusula GAE sabe que versión de API utilizar para ejecutar nuestra aplicación. |
handlers: | Con ésta cláusula indicamos como debe GAE de procesar los requerimientos POST/GET de los clientes. |
– url: /.* | Con ésta cláusula le decimos a GAE que debe hacer con toda solicitud a nuestra aplicación ".*" es una expresión regular que significa toda cadena de texto de un caracter o más |
script: holamundo.py | Cumplida la condición anterior, GAE ejecutará el script "holamundo.py", que es nuestra aplicación. |
Ahora que ya tenemos creados los dos archivos básicos que componen nuestra aplicación debemos de inciar el servidor web que viene en el SDK para poder probarla y ver que tal nos quedo, para ello debemos de ejecutar el siguiente comando (en Linux):
$ /usr/local/appengine/dev_appserver.py ~/holamundo
Es muy importante que tomemos en cuenta de que debemos dar la base del directorio y no el archivo de nuestra aplicación, luego de que demos el comando anterior el servidor de prueba local nos preguntará si deseamos de que busque los últimos updates, a lo que debemos responder que sí. Luego de eso debemos ver una serie de mensajes como éstos:
INFO 2008-05-08 17:18:27,431 appcfg.py] Checking for updates to the SDK.
INFO 2008-05-08 17:18:27,563 appcfg.py] The SDK is up to date.
WARNING 2008-05-08 17:18:27,563 datastore_file_stub.py] Could not read datastore data from /tmp/dev_appserver.datastore
WARNING 2008-05-08 17:18:27,563 datastore_file_stub.py] Could not read datastore data from /tmp/dev_appserver.datastore.history
INFO 2008-05-08 17:18:27,565 dev_appserver_main.py] Running application holamundo on port 8080: http://localhost:8080
Eso nos indicará que ya tenemos corriendo el webserver en el puerto 8080 que nos permitirá ver como luciría nuestra aplicación en GAE, para ver nuestra aplicación sólo debemos de abrir nuestro navegador y apuntar a: http://localhost:8080
Si todo esta bien debemos de ver una página como ésta:
Ahora que ya tenemos un SDK instalado, y sabemos lo básico sobre él, podemos comenzar a experimentar con las funciones incluídas en él.
Espero que éste mini-tutorial les haya sido de utilidad y espero sus comentarios.
Muchas Gracias por este pequeño tutorial es bastante útil al momento de empezar a programar con el engine de google