Ejemplo despliegue de una aplicacion en Google App Engine


 

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

Si no se cuenta con un dominio propio, Google también  proporciona uno con la siguiente estructura, midominio.appspot.com. También permite implementar un dominio propio a través deGoogle Apps.

Por el momento las cuentas gratuitas tienen un límite de 500 megabyte de almacenamiento permanente y la suficiente cantidad de ancho de banda y CPU para cinco millones de visitas mensuales, y si la aplicación supera estas cuotas, se pueden comprar cuotas adicionales.

Actualmente las aplicaciones Google App Engine se implementan mediante los lenguajes de programación Python, Java, Go yPHP.

Para desplegar un proyecto en la infraestructura  primero debe  debe tener una cuenta de App Engine  qeu lo ideal es vincularla con nuestra cuentade Google. Uan vez validados   deberemos instalar  el SDK   Google App Engine que dependerá del lenguaje de programación que usemos .

Teniendo  isntalado el sw, en el caso de programar en Python , deberemos seguir los siguientes pasos:

 

Paso 1: La carpeta de contenido App Engine

Crear una carpeta que albergará los archivos y una carpeta lugar en ella, titulada estática que contendrá todos los archivos de App Engine. Su estructura de carpeta tendrá este aspecto:

/your_folder
/your_follder/static

Coloque todos los archivos que desea alojado en la carpeta de estática .

Paso 2: Crear tu proyecto de app engine

Ir al sitio de Google app engine y crear un proyecto de motor de la aplicación haciendo clic en el botón Crear aplicación . Especifique un identificador de aplicación, magicalcats por ejemplo y recuerda su identificador porque lo necesitarás para el siguiente paso.

Paso 3: Editar el archivo app.yaml

 

application: your-app-name-here
version: 1
runtime: python
api_version: 1

handlers:
- url: /(.*\.css)
  mime_type: text/css
  static_files: static/\1
  upload: static/(.*\.css)

- url: /(.*\.html)
  mime_type: text/html
  static_files: static/\1
  upload: static/(.*\.html)

- url: /(.*\.js)
  mime_type: text/javascript
  static_files: static/\1
  upload: static/(.*\.js)

- url: /(.*\.txt)
  mime_type: text/plain
  static_files: static/\1
  upload: static/(.*\.txt)

- url: /(.*\.xml)
  mime_type: application/xml
  static_files: static/\1
  upload: static/(.*\.xml)

# image files
- url: /(.*\.(bmp|gif|ico|jpeg|jpg|png))
  static_files: static/\1
  upload: static/(.*\.(bmp|gif|ico|jpeg|jpg|png))

# index files
- url: /(.+)/
  static_files: static/\1/index.html
  upload: static/(.+)/index.html

# redirect to 'url + /index.html' url.
- url: /(.+)
  static_files: static/redirector.html
  upload: static/redirector.html

# site root
- url: /
  static_files: static/index.html
  upload: static/index.html

En el caso particular, todo tendría que hacer aquí es reemplazar su-app-nombre-aquí con magicalcats.

Paso 4: implementar

El comando siguiente es la forma más simple del comando appcfg.py para desplegar su aplicación:

appcfg.py -e [email protected] update .

Las ruedas de hámster girará hasta el símbolo del sistema y si todo funcionó, BAM! Estática alojados archivos en appspot bajo your_app_identifier.appspot.com, o, en mi ejemplo, magicalcats.appspot.com.

Conclusiones

El despliegue de archivos estáticos en App Engine es fácil, es simplemente difícil de navegar en la documentación porque está muy enfocado a cubrir  todos los aspectos, pero con paciencia  se puede llegar a hacer grandes cosas  y todo eso sin haber invertido ni un sólo euro en hosting,alojamiento ,comunicaciones , etc  tan solo apoyándonos en la infraestructura de  PaaS de Google 

 

 

 

 

 

 

Fuente aqui

Google App Engine


GAE   es una de las primeras  pioneras en estblecer el PaaS(Plataforma como servicio ) , lo cual permite  a cualquier desearrollador  ejecutar  aplicaciones web en la infraestructura de Google. Las aplicaciones App Engine son fáciles de crear, mantener y actualizar al ir aumentando el tráfico y las necesidades de almacenamiento de datos. Con App Engine, no necesitará utilizar ningún servidor: sólo tendrá que subir su aplicación para que sus usuarios puedan empezar a utilizarla.

Puede proporcionar a su aplicación tu propio nombre de dominio (como por ejemplo http://www.example.com/) a través de Google Apps o también puede proporcionar a su aplicación un nombre gratuito del dominio appspot.com que  podrá compartir con todo el mundo o limitar el acceso a los miembros de su organización.

App Engine  ofrecedesde su inicios  un entorno de tiempo de ejecución Python dedicado, que incluye un rápido interprete Python y la biblioteca estándar Python. Los entornos de tiempo de ejecución Java y Python se generan para garantizar que su aplicación se ejecuta de forma rápida, segura y sin interferencias de otras aplicaciones en el sistema.

Google App Engine  ademas admite aplicaciones escritas en varios lenguajes de programació, por ejemplo gracias al entorno de tiempo de ejecución Java de App Engine puede crearstu aplicación a través de tecnologías Java estándar, que incluyen JVM, servlets Java y el lenguaje de programación Java o cualquier otro lenguaje que utilice un intérprete o compilador basado en JVM como, por ejemplo, JavaScript o Ruby.

Puede empezar a utilizar App Engine de forma totalmente gratuita pues  tdas las aplicaciones pueden utilizar hasta 500 MB de almacenamiento y suficiente CPU y ancho de banda como para permitir un servicio eficaz de la aplicación de alrededor de 5 millones de visitas a la página al mes, totalmente gratuitas. Cuando habilita la facturación para su aplicación, se incrementan sus límites gratuitos y sólo paga aquellos recursos que utilice por encima de los niveles gratuitos pues con App Engine, sólo se  paga lo que utiliza  no existiendo costes de configuración ni tarifas recurrentes. Los recursos que utiliza su aplicación, como por ejemplo el almacenamiento y el ancho de banda, se miden por gigabytes y se facturan según competitivas tarifas de modo que controla la cantidad máxima de recursos que consume su aplicación, de modo que siempre permanezcan dentro de su presupuesto.

El entorno de aplicación

Google App Engine permite desarrollar fácilmente aplicaciones que se ejecuten de forma fiable, incluso con pesadas cargas de trabajo y grandes cantidades de datos. App Engine incluye las siguientes funciones:

  • Servidor web dinámico, totalmente compatible con las tecnologías web más comunes,
  • Almacenamiento permanente con funciones de consulta, orden y transacciones,
  • Escalado automático y balanceo de carga,
  • API para autenticar usuarios y enviar correo electrónico a través de las cuentas de Google,
  • Completo entorno de desarrollo local que simula Google App Engine en tu equipo,
  • Tareas programadas para activar eventos en momentos determinados y en intervalos regulares.

Su aplicación se puede ejecutar en uno de los dos entornos de tiempo de ejecución: el entorno Java y el entorno Python. Cada entorno proporciona protocolos estándar y tecnologías comunes para el desarrollo de aplicaciones web.

 

El entorno de tiempo de ejecución Python

Gracias al entorno de tiempo de ejecución Python, puede implementar tu aplicación a través del lenguaje de programación Python y ejecutarla en un intérprete de Python optimizado. App Engine incluye varias API y herramientas para el desarrollo de aplicaciones web de Python, así como un API de modelado de datos detallados, un framework de aplicaciones web fácil de utilizar y herramientas para administrar y acceder a tus datos de la aplicación. También puede beneficiarse de una amplia variedad de frameworks y bibliotecas avanzados para el desarrollo de aplicaciones web de Python, como por ejemplo Django.

El entorno de tiempo de ejecución Python ha estado utilizando la versión 2.5.2. de Python pero estan teniendo en cuenta una compatibilidad adicional con Python 3

El entorno Python incluye la biblioteca estándar de Python. pero  no todas las funciones de biblioteca se pueden ejecutar en el entorno de la zona de pruebas,por ejemplo, una llamada a un método que intenta abrir un conector o escribir en un archivo generará una excepción. Para comodidad del usuario, se han inhabilitado varios módulos de la biblioteca estándar cuyas funciones son incompatibles con el entorno de tiempo de ejecución y el código que los importe generará un error.

El código de aplicación escrito para el entorno Python se debe escribir exclusivamente en Python. Las extensiones escritas en lenguaje C no son compatibles.

El entorno Python proporciona varias API Python para servicios de almacén de datos, cuentas de Google, extracción de URL y correo electrónico. App Engine también ofrece un sencillo framework para aplicaciones web Python denominado webapp que te permitirá empezar a crear aplicaciones fácilmente.

Puedes subir otras bibliotecas de terceros con tu aplicación, siempre que estén implementadas únicamente en Python y no requieran ningún módulo incompatible de la biblioteca estándar.

Para obtener más información sobre el entorno de tiempo de ejecución Python, consulta la sección El entorno de tiempo de ejecución Python.

El almacén de datos

App Engine proporciona un potente servicio de almacenamiento de datos distribuido que incluye un motor de búsqueda y transacciones. A medida que el servidor web distribuido crece con el tráfico, el almacén de datos distribuido crece con los datos.

El almacén de datos de App Engine no es como una base de datos relacional tradicional dado que los objetos de datos, o «entidades», disponen de un tipo y un conjunto de propiedades. Las consultas pueden recuperar entidades de un tipo determinado filtradas y ordenadas según los valores de las propiedades. Los valores de las propiedades pueden ser de cualquiera de los tipos de valores de propiedades admitidos.

Las entidades del almacén de datos son carecen de esquema. Tu código de aplicación se encarga de proporcionar y de respetar la estructura de las entidades de datos. Las interfaces JDO/JPA de Java y la interfaz del almacén de datos de Python incluyen características para aplicar y respetar la estructura de tu aplicación. Tu aplicación también puede acceder al almacén de datos de forma directa para aplicar mucho o poco la estructura que necesite.

El almacén de datos es muy consistente y utiliza el control de concurrencia optimista. Una entidad se actualizará si se intenta realizar una transacción un número determinado de veces y otros procesos están intentando actualizar la misma entidad al mismo tiempo. Tu aplicación puede ejecutar varias operaciones de almacén de datos en una única transacción, que se ejecutarán con o sin éxito, garantizando así la integridad de tus datos.

El almacén de datos implementa transacciones en su red distribuida mediante «grupos de entidades». Una transacción manipula entidades de un único grupo. Las entidades del mismo grupo se almacenan juntas para ejecutar las transacciones eficazmente. Tu aplicación puede asignar entidades a grupos al crear las entidades.

Validacion con las cuentas de Google

App Engine admite la integración de una aplicación con Cuentas de Google para la autenticación de los usuarios. Su aplicación puede permitir a un usuario acceder con una cuenta de Google y tener acceso a la dirección de correo electrónico y el nombre de visualización asociados a la cuenta. Las cuentas de Google permiten que el usuario pueda empezar a utilizar la aplicación de una forma más rápida, ya que no tiene que crear una cuenta nueva. También te ahorran el esfuerzo de implementar un sistema de cuentas de usuario sólo para tu aplicación.

 

Servicios de App Engine

App Engine proporciona una gran variedad de servicios que te permitirán realizar operaciones comunes al gestionar tu aplicación. Se incluyen las siguientes API para acceder a estos servicios:

  • Extracción de URL:Las aplicaciones pueden acceder a recursos en Internet, como servicios web u otros datos, mediante el servicio de extracción de URL de App Engine. El servicio de extracción de URL recupera recursos web mediante la misma infraestructura de alta velocidad de Google que recupera páginas web para muchos otros productos de Google.
  • Correo :Las aplicaciones pueden enviar mensajes de correo electrónico mediante el servicio de correo de App Engine. El servicio de correo utiliza la infraestructura de Google para enviar mensajes de correo electrónico.
  • Memcache :El servicio Memcache proporciona a tu aplicación el servicio de memoria caché de valores-claves de alto rendimiento accesible desde varias instancias de tu aplicación. Memcache resulta útil para los datos que no necesitan las funciones de persistencia y transacciones del almacén de datos, como los datos temporales o los datos copiados del almacén de datos en la caché para un acceso a gran velocidad.
  • Manipulación de imágenes:El servicio de imágenes permite a tu aplicación manipular imágenes. Con esta API, podrás recortar, rotar o ajustar el tamaño de imágenes en formato JPEG o PNG.
  • Tareas programadas:El servicio Cron te permite programar tareas que se van a ejecutar en intervalos regulares. Para obtener más información, consulta la documentación sobre el servicio Cron de Python o de Java.

Flujo de trabajo de desarrollo

Los kits de desarrollo de software de App Engine (SDK) para Java y Python incluyen una aplicación de servidor web que emula todos los servicios de App Engine de tu equipo local. Cada SDK incluye todas las API y bibliotecas disponibles en App Engine. El servidor web también simula el entorno seguro de la zona de pruebas, incluyendo las verificaciones con respecto a los intentos de acceso a los recursos del sistema inhabilitados en el entorno de tiempo de ejecución de App Engine. Cada SDK también incluye una herramienta para subir tu aplicación a App Engine.

Una vez que haya creado el código de su aplicación, los archivos estáticos y los archivos de configuración, ejecuta la herramienta para subir los datos. La herramienta te pedirá que introduzcas tu dirección de correo electrónico y contraseña de Google.
Cuando cree una nueva compilación importante de una aplicación que ya se esté ejecutando en App Engine, podrás subirla como una nueva versión. La antigua versión seguirá disponible para los usuarios hasta que cambies a la nueva versión. Puedes probar la nueva versión en App Engine mientras aún se esté ejecutando la antigua.
El SDK Python se implementa exclusivamente en Python y se ejecuta en cualquier plataforma que disponga de Python 2.5, como Windows, Mac OS X y Linux. El SDK está disponible en forma de archivo Zip y los instaladores están disponibles para Windows y Mac OS X.
La consola de administración es una interfaz basada en web que permite administrar las aplicaciones que ejecutas en App Engine. Puedes utilizarla para crear nuevas aplicaciones, configurar nombres de dominio, cambiar la versión disponible de tu aplicación, examinar los registros de error y acceso y buscar el almacén de datos de una aplicación.

Cuotas y límites

Crear una aplicación en App Engine no sólo resulta fácil. ¡Además es gratis! Puedes crear una cuenta y publicar una aplicación que la gente podrá utilizar inmediatamente sin ningún coste ni obligación. Una aplicación de una cuenta gratuita dispone de hasta 500 MB de espacio y admite hasta 5 millones de visitas mensuales. Cuando lo desees, puedes habilitar la facturación, establecer un presupuesto diario máximo y asignar tu presupuesto para cada recurso de acuerdo con tus necesidades.

Puedes registrar hasta 10 aplicaciones por cuenta de desarrollador.

Cada aplicación asigna recursos dentro de límites o «cuotas». Una cuota determina la cantidad que una aplicación puede utilizar un recurso concreto durante un día del calendario. En un futuro próximo, podrás ajustar alguna de estas cuotas mediante la adquisición de recursos adicionales.

Algunas funciones imponen límites no relacionados con cuotas para proteger la estabilidad del sistema. Por ejemplo, cuando una aplicación se ejecuta para atender una solicitud web, debe emitir una respuesta en 30 segundos. Si la aplicación tarda demasiado, se finaliza el proceso y el servidor devuelve un código de error al usuario. El tiempo de espera de la solicitud es dinámico y se puede reducir si un controlador de solicitudes consume el tiempo de espera con frecuencia para conservar recursos.

Otro ejemplo de un límite de servicio es el número de resultados devuelto por una consulta. Una consulta puede devolver como máximo 1.000 resultados. Las consultas que deberían devolver más resultados sólo devuelven el máximo. En este caso, no es probable que una solicitud que realiza este tipo de consulta devuelva una solicitud antes de agotar el tiempo de espera, pero el límite se mantendrá para conservar los recursos del almacén de datos.

 

La zona de pruebas

Las aplicaciones se ejecutan en un entorno seguro que proporciona acceso limitado al sistema operativo subyacente. Estas limitaciones permiten a App Engine distribuir solicitudes web de la aplicación en varios servidores e iniciar y detener los servidores según las demandas del tráfico. La zona de pruebas aísla la aplicación en su propio entorno seguro de confianza, totalmente independiente del hardware, el sistema operativo y la ubicación física del servidor web.

Algunos ejemplos de las limitaciones del entorno seguro de la zona de pruebas son:

  • Una aplicación sólo podrá acceder a otros equipos de Internet a través de los servicios de correo electrónico y extracción de URL proporcionados. Otros equipos sólo se podrán conectar a la aplicación mediante solicitudes HTTP (o HTTPS) en los puertos estándar.
  • Una aplicación no podrá escribir en el sistema de archivos. Una aplicación podrá leer archivos, pero sólo aquéllos subidos con el código de la aplicación. La aplicación deberá utilizar el almacén de datos de App Engine, Memcache u otros servicios para todos los datos que permanezcan entre las solicitudes.
  • El código de aplicación sólo se ejecuta en respuesta a una solicitud web o a una tarea cron y debe devolver datos de respuesta en un período de 30 segundos en cualquier caso. Un controlador de solicitudes no podrá generar un subproceso ni ejecutar código después de haber enviado la respuesta.

 

Más información…

Para obtener más información sobre Google App Engine: