The topic of Google App Engine is widely discussed in today's society, and is the subject of multiple investigations and debates. For many years now, Google App Engine has been a source of inspiration and reflection for many, and its importance has not diminished over time. In this article, we will address different aspects related to Google App Engine, exploring its impact on everyday life, its relevance in academia, and its influence on popular culture. Throughout these pages, we will analyze different perspectives and opinions about Google App Engine, with the aim of shedding light on this topic and promoting a greater understanding of it.
Google App Engine (often referred to by the acronym GAE or simply App Engine) is a cloud computingplatform as a service for developing and hosting web applications in Google-managed data centers. Applications are sandboxed and run across multiple servers. App Engine supports automatic scaling for web applications allocating more resources to the web application for handling additional demand as the amount of requests increases for an application.
Google App Engine primarily supports Go, PHP, Java, Python, Node.js, .NET, and Ruby applications, although it can also support other languages via "custom runtimes". The service is free up to a certain level of consumed resources and only in standard environments, and it is not available in flexible environments. Fees are charged for additional storage, bandwidth, or instance hours required by the application. It was first released as a preview in April 2008 and came out of preview in September 2011.
Supported features/restrictions
Runtimes and framework
Google App Engine primarily supports Go, PHP, Java, Python, Node.js, .NET, and Ruby applications, although it can also support other languages via "custom runtimes".
Python web frameworks that run on Google App Engine include Django, CherryPy, Pyramid, Flask, web2py, and webapp2, as well as a Google-written webapp framework and several others designed specifically for the platform that were created after the release. Any Python framework that supports the WSGI using the CGI adapter can be used to create an application, and the framework can be uploaded with the developed application. Third-party libraries written in Python may also be uploaded.
Google App Engine supports many[quantify] Java standards and frameworks. Servlet 2.5 using the open-source Jetty Web Server allow these to be supported, along with accompanying technologies such as JSP. JavaServer Faces operates with some workarounds. A newer release of App Engine Standard Java in Beta supports Java8, Servlet 3.1, and Jetty9.
The integrated database, Google Cloud Datastore, is accessed and supported with JPA, JDO, and by the simple low-level API. There are alternative libraries and frameworks you can use to model and map the data to the database such as Objectify, Slim3, and Jello framework.
The Spring Framework works with GAE, however, the Spring Security module (if used) requires workarounds. Apache Struts 1 is supported, and Struts 2 runs with workarounds.
The Django web framework and applications running on it can be used on App Engine with modification. Django-nonrel aims to allow Django to work with non-relational databases, and the project includes support for App Engine.
Bulk downloading
SDK version 1.2.2 adds support for bulk downloads of data using Python. The open source Python projects gaebar, approcket, and gawsh also allow users to download and back up App Engine data. No method for bulk downloading data from GAE using Java currently exists.
Restrictions
Developers have read-only access to the filesystem on App Engine. Applications can use only virtual filesystems, like gae-filestore.
App Engine can only execute code called from an HTTP request (scheduled background tasks allow for self-calling HTTP requests).
Users may upload arbitrary Python modules, but only if they are pure-Python. C and Pyrex modules are not supported.
Java applications may only use a subset (The JRE Class White List) of the classes from the JRE standard edition. This restriction does not exist with the App Engine Standard Java8 runtime.
A process started on the server to answer a request can't last more than 60 seconds (with the 1.4.0 release, this restriction does not apply to background jobs anymore).
Does not support sticky sessions (a.k.a. session affinity), only replicated sessions are supported including limitation of the amount of data being serialized and time for session serialization.
Major differences
Differences with other application hosting
While other services let users install and configure nearly any *NIX compatible software, App Engine requires developers to use only its supported languages, APIs, and frameworks. Current APIs allow storing and retrieving data from the document-oriented Google Cloud Datastore database, making HTTP requests, sending e-mail, manipulating images, and caching. Google Cloud SQL can be used for App Engine applications requiring a relational MySQL compatible database backend.
Per-day and per-minute quotas restrict bandwidth and CPU use, number of requests served, number of concurrent requests, and calls to the various APIs, and individual requests are terminated if they take more than 60 seconds or return more than 32MB of data.
Google App Engine's integrated Google Cloud Datastore database has a SQL-like syntax called "GQL" (Google Query Language). GQL does not support the join statement. Instead, one-to-many and many-to-many relationships can be accomplished using ReferenceProperty().
Google Firestore is the successor to Google Cloud Datastore and replaces GQL with a document-based query method that treats stored objects as collections of documents.
Portability concerns
Developers worry that the applications will not be portable from App Engine and fear being locked into the technology. In response, there are a number of projects to create open-source back-ends for the various proprietary/closed APIs of app engine, especially the datastore.
AppScale, CapeDwarf, and TyphoonAE are a few of the open source efforts.
AppScale automatically deploys and scales unmodified Google App Engine applications over popular public and private cloud systems and on-premises clusters. AppScale can run Python, Java, PHP, and Go applications on EC2, Google Compute Engine, Softlayer, Azure, and other cloud vendors.
TyphoonAE can run Python App Engine applications on any cloud server that supports Linux machines.
The Web2py web framework offers migration between SQL Databases and Google App Engine, however, it doesn't support several App Engine-specific features such as transactions and namespaces.
Kubernetes is an open-source job control system invented by Google to abstract away the infrastructure so that open-source (e.g. Docker) containerized applications can run on many types of infrastructure, such as Amazon Web Services, Microsoft Azure, and others. This is one of Google's answers to the portability concern.
Backends
In Google I/O 2011, Google announced App Engine Backends, which are allowed to run continuously and consume more memory. The Backend API was deprecated as of March 13, 2014, in favor of the Modules API.
Google Cloud SQL
In October 2011, Google previewed a zero maintenance SQL database, which supports JDBC and DB-API. This service allows creating, configuring, and using relational databases with App Engine applications. Google Cloud SQL supports MySQL 8.0, 5.7, and 5.6.
Usage quotas
Google App Engine requires a Google account to get started, and an account may allow the developer to register up to 25 free applications and an unlimited number of paid applications.
Google App Engine defines usage quotas for free applications. Extensions to these quotas can be requested, and application authors can pay for additional resources.