¿Qué es Google App Engine?
Google App Engine te permite ejecutar tus 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ás utilizar ningún servidor: sólo tendrás que subir tu aplicación para que tus usuarios puedan empezar a utilizarla.
Puedes proporcionar a tu aplicación tu propio nombre de dominio (como por ejemplo http://www.example.com/) a través de Google Apps. También puedes proporcionar a tu aplicación un nombre gratuito del dominio appspot.com. Podrás compartir tu aplicación con todo el mundo o limitar el acceso a los miembros de tu organización.
Google App Engine admite aplicaciones escritas en varios lenguajes de programación. Gracias al entorno de tiempo de ejecución Java de App Engine puedes crear tu 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. App Engine también ofrece 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 tu aplicación se ejecuta de forma rápida, segura y sin interferencias de otras aplicaciones en el sistema.
Con App Engine, sólo pagas lo que utilizas. No existen costes de configuración ni tarifas recurrentes. Los recursos que utiliza tu aplicación, como por ejemplo el almacenamiento y el ancho de banda, se miden por gigabytes y se facturan según competitivas tarifas. Controlas la cantidad máxima de recursos que consume tu aplicación, de modo que siempre permanezcan dentro de tu presupuesto.
Puedes empezar a utilizar App Engine de forma totalmente gratuita. Todas 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 habilitas la facturación para tu aplicación, se incrementan tus límites gratuitos y sólo pagas aquellos recursos que utilices por encima de los niveles gratuitos.
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,
* un 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.
Tu 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.
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.
El entorno de tiempo de ejecución Java
Puedes desarrollar tu aplicación para el entorno de tiempo de ejecución Java a través de herramientas de desarrollo web Java y de estándares del API comunes. Tu aplicación interactúa con el entorno a través del estándar Java Servlet y puede utilizar tecnologías de aplicación web comunes como por ejemplo JavaServer Pages (JSP).
El entorno de tiempo de ejecución Java utiliza Java 6. El kit de desarrollo de software (SDK) Java de App Engine admite las aplicaciones de desarrollo que utilizan tanto Java 5 como 6.
El entorno incluye la plataforma 6 de entorno de tiempo de ejecución Java (JRE) SE y bibliotecas. Las restricciones del entorno de la zona de pruebas se implementan en JVM. Una aplicación puede utilizar cualquier código de bytes de JVM o función de biblioteca, siempre que no exceda las restricciones de la zona de pruebas. Por ejemplo, si un código de bytes intenta abrir un conector o escribir en un archivo, aparece una excepción de tiempo de ejecución.
Tu aplicación accede a la mayoría de los servicios de App Engine a través de las API estándar de Java. Para el almacén de datos de App Engine, el SDK Java incluye implementaciones de la interfaz de Objetos de datos Java (JDO) y de la interfaz del API de persistencia de Java (JPA). Tu aplicación puede utilizar el API JavaMail para enviar mensajes de correo electrónico con el servicio de correo electrónico de App Engine. Las API HTTP java.net acceden al servicio de extracción de URL de App Engine. App Engine también incluye las API de nivel inferior para sus servicios para implementar adaptadores adicionales o para su uso directo desde la aplicación. Consulta la documentación sobre las API delalmacén de datos, Memcache, la extracción de URL, el correo, las imágenes y las cuentas de Google.
Normalmente, los desarrolladores de Java utilizan el lenguaje de programación Java y las API para implementar aplicaciones web para JVM. Gracias al uso de intérpretes o de compiladores compatibles con JVM, también puedes utilizar otros lenguajes para desarrollar aplicaciones web como, por ejemplo, JavaScript, Ruby o Scala.
Para obtener más información sobre el entorno de tiempo de ejecución Java, consulta la sección El entorno de tiempo de ejecución Java.
El entorno de tiempo de ejecución Python
Gracias al entorno de tiempo de ejecución Python, puedes 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 puedes beneficiarte 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 utiliza la versión 2.5.2. de Python. Estamos teniendo en cuenta una compatibilidad adicional con Python 3 para futuras versiones.
El entorno Python incluye la biblioteca estándar de Python. Por supuesto, 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. 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.
Cuentas de Google
App Engine admite la integración de una aplicación con Cuentas de Google para la autenticación de los usuarios. Tu 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.
Si estás ejecutando tu aplicación con Google Apps, podrás utilizar las mismas funciones con los miembros de tu organización y las cuentas de Google Apps.
El API de usuarios también puede indicar a la aplicación si el usuario actual es un administrador registrado de la aplicación. Esto facilitará la implementación de áreas exclusivas de administradores en tu sitio.
Para obtener más información sobre la integración con las cuentas de Google, consulta la referencia del API de usuarios.
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 hayas creado el código de tu 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 crees 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 Java se ejecuta en cualquier plataforma con Java 5 o Java 6. El SDK está disponible en forma de archivo Zip. Si utilizas el entorno de desarrollo Eclipse, puedes utilizar el complemento de Google para Eclipse para crear, probar y subir aplicaciones de App Engine. El SDK también incluye herramientas de línea de comandos para ejecutar el servidor de desarrollo y subir tu aplicación.
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.
Los intentos de socavar o abusar de las cuotas, como utilizar aplicaciones en varias cuentas que trabajen conjuntamente, infringen las Condiciones del servicio y podrían ser motivo de la inhabilitación o el cierre de las cuentas.
Para ver una lista de cuotas y una explicación acerca del sistema de cuotas, incluyendo las cuotas que pueden verse incrementadas mediante la habilitación de la facturación, consulta la sección Cuotas.