Google App Engine

Last updated

Developer(s) Google
Initial releaseApril 7, 2008;16 years ago (2008-04-07) [1]
Type Platform as a service
Website cloud.google.com/appengine/

Google App Engine (often referred to by the acronym GAE or simply App Engine) is a cloud computing platform as a service for developing and hosting web applications in Google-managed data centers. Applications are sandboxed and run across multiple servers. [2] App Engine offers automatic scaling for web applications by automatically allocating more resources to the web application for handling additional demand as the amount of requests increases for an application. [3]

Contents

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". [4] 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. [5] It was first released as a preview version 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". [4]

Python web frameworks that run on Google App Engine include Django, CherryPy, Pyramid, Flask, web2py, and webapp2, [6] as well as a custom Google-written webapp framework and several others designed specifically for the platform that emerged since the release. [7] 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 pure Python may also be uploaded. [8] [9]

Google App Engine supports many Java standards and frameworks. Core to this is the servlet 2.5 technology using the open-source Jetty Web Server, [10] 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.

Though the integrated database, Google Cloud Datastore, may be unfamiliar to programmers, it is accessed and supported with JPA, JDO, and by the simple low-level API. [11] There are several alternative libraries and frameworks you can use to model and map the data to the database such as Objectify, [12] Slim3, [13] and Jello framework. [14]

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. [15]

The Django web framework and applications running on it can be used on App Engine with modification. Django-nonrel [16] aims to allow Django to work with non-relational databases, and the project includes support for App Engine. [17]

Reliability and support

All billed App Engine applications have a 99.95% uptime SLA. [18]

App Engine is designed to sustain multiple data center outages without any downtime. This resilience to downtime is shown by the statistic that the High Replication Datastore saw 0% downtime over a period of a year. [19]

Paid support from Google engineers is offered as part of Premier Accounts. [20]

Bulk downloading

SDK version 1.2.2 adds support for bulk downloads of data using Python. [21] The open source Python projects gaebar, [22] approcket, [23] and gawsh [24] also allow users to download and back up App Engine data. No method for bulk downloading data from GAE using Java currently exists.

Restrictions

Major differences

Differences with other application hosting

Compared to other scalable hosting services such as Amazon EC2, App Engine provides more infrastructure to make it easy to write scalable applications, but can only run a limited range of applications designed for that infrastructure.

App Engine's infrastructure removes many of the system administration and development challenges of building applications to scale to hundreds of requests per second and beyond. [27] Google handles deploying code to a cluster, monitoring, failover, and launching application instances as necessary.

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 [28] can be used for App Engine applications requiring a relational MySQL compatible database backend. [29]

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.

Differences between SQL and GQL

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. [30] Instead, one-to-many and many-to-many relationships can be accomplished using ReferenceProperty(). [31]

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. [32] 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 [33] 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. [34] AppScale can run Python, Java, PHP, and Go applications on EC2, Google Compute Engine, Softlayer, Azure, and other cloud vendors.

TyphoonAE [33] 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. [35]

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. [36] [37] The Backend API was deprecated as of March 13, 2014, in favor of the Modules API. [38]

Google Cloud SQL

In October 2011, Google previewed a zero maintenance SQL database, which supports JDBC and DB-API. [39] 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. [40]

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. [41]

Google App Engine defines usage quotas for free applications. Extensions to these quotas can be requested, and application authors can pay for additional resources. [42]

See also

Related Research Articles

Web development is the work involved in developing a website for the Internet or an intranet. Web development can range from developing a simple single static page of plain text to complex web applications, electronic businesses, and social network services. A more comprehensive list of tasks to which Web development commonly refers, may include Web engineering, Web design, Web content development, client liaison, client-side/server-side scripting, Web server and network security configuration, and e-commerce development.

The Web Server Gateway Interface is a simple calling convention for web servers to forward requests to web applications or frameworks written in the Python programming language. The current version of WSGI, version 1.0.1, is specified in Python Enhancement Proposal (PEP) 3333.

In computing, a solution stack or software stack is a set of software subsystems or components needed to create a complete platform such that no additional software is needed to support applications. Applications are said to "run on" or "run on top of" the resulting platform.

CherryPy is an object-oriented web application framework using the Python programming language. It is designed for rapid development of web applications by wrapping the HTTP protocol but stays at a low level and does not offer much more than what is defined in RFC 7231.

<span class="mw-page-title-main">Django (web framework)</span> Python web framework

Django is a free and open-source, Python-based web framework that runs on a web server. It follows the model–template–views (MTV) architectural pattern. It is maintained by the Django Software Foundation (DSF), an independent organization established in the US as a 501(c)(3) non-profit.

<span class="mw-page-title-main">TurboGears</span>

TurboGears is a Python web application framework consisting of several WSGI components such as WebOb, SQLAlchemy, Kajiki template language and Repoze.

Google Developers is Google's site for software development tools and platforms, application programming interfaces (APIs), and technical resources. The site contains documentation on using Google developer tools and APIs—including discussion groups and blogs for developers using Google's developer products.

Nuxeo is a software company making an open source content management system.

<span class="mw-page-title-main">WaveMaker</span> Low-code programming platform

WaveMaker is a Java-based low-code development platform designed for building software applications and platforms. The company, WaveMaker Inc., is based in Mountain View, California. The platform is intended to assist enterprises in speeding up their application development and IT modernization initiatives through low-code capabilities. Additionally, for independent software vendors (ISVs), WaveMaker serves as a customizable low-code component that seamlessly integrates into their products.

Web2py is an open-source web application framework written in the Python programming language. Web2py allows web developers to program dynamic web content using Python. Web2py is designed to help reduce tedious web development tasks, such as developing web forms from scratch, although a web developer may build a form from scratch if required.

<span class="mw-page-title-main">AppScale</span> American cloud infrastructure software company

AppScale is a software company offering cloud infrastructure software and services to enterprises, government agencies, contractors, and third-party service providers. The company commercially supports one software product, AppScale ATS, a managed hybrid cloud infrastructure software platform that emulates the core AWS APIs. In 2019, the company ended commercial support for its open-source serverless computing platform AppScale GTS, but AppScale GTS source code remains freely available to the open-source community.

<span class="mw-page-title-main">Opa (programming language)</span>

Opa is an open-source programming language for developing scalable web applications.

<span class="mw-page-title-main">Apache Drill</span> Open-source software framework

Apache Drill is an open-source software framework that supports data-intensive distributed applications for interactive analysis of large-scale datasets. Built chiefly by contributions from developers from MapR, Drill is inspired by Google's Dremel system. Drill is an Apache top-level project. Tom Shiran is the founder of the Apache Drill Project. It was designated an Apache Software Foundation top-level project in December 2016.

Backend as a service (BaaS), sometimes also referred to as mobile backend as a service (MBaaS), is a service for providing web app and mobile app developers with a way to easily build a backend to their frontend applications. Features available include user management, push notifications, and integration with social networking services. These services are provided via the use of custom software development kits (SDKs) and application programming interfaces (APIs). BaaS is a relatively recent development in cloud computing, with most BaaS startups dating from 2011 or later. Some of the most popular service providers are AWS Amplify and Firebase.

Google APIs are application programming interfaces (APIs) developed by Google which allow communication with Google Services and their integration to other services. Examples of these include Search, Gmail, Translate or Google Maps. Third-party apps can use these APIs to take advantage of or extend the functionality of the existing services.

<span class="mw-page-title-main">Plotly</span> Canadian computing company

Plotly is a technical computing company headquartered in Montreal, Quebec, that develops online data analytics and visualization tools. Plotly provides online graphing, analytics, and statistics tools for individuals and collaboration, as well as scientific graphing libraries for Python, R, MATLAB, Perl, Julia, Arduino, JavaScript and REST.

<span class="mw-page-title-main">Cocaine (PaaS)</span> Platform as a service system

Cocaine was an open-source PaaS system for creating custom cloud hosting apps that are similar to Bluemix, Google App Engine, or Heroku. Several services have already been implemented this way, including a service for detecting a user's region or language, a service for accessing MongoDB storage, and a URL fetcher.

Google Cloud Platform (GCP), offered by Google, is a suite of cloud computing services that provides a series of modular cloud services including computing, data storage, data analytics, and machine learning, alongside a set of management tools. It runs on the same infrastructure that Google uses internally for its end-user products, such as Google Search, Gmail, and Google Docs, according to Verma, et.al. Registration requires a credit card or bank account details.

Serverless computing is a cloud computing execution model in which the cloud provider allocates machine resources on demand, taking care of the servers on behalf of their customers. "Serverless" is a misnomer in the sense that servers are still used by cloud service providers to execute code for developers. However, developers of serverless applications are not concerned with capacity planning, configuration, management, maintenance, fault tolerance, or scaling of containers, VMs, or physical servers. Serverless computing does not hold resources in volatile memory; computing is rather done in short bursts with the results persisted to storage. When an app is not in use, there are no computing resources allocated to the app. Pricing is based on the actual amount of resources consumed by an application. It can be a form of utility computing.

References

  1. "Introducing Google App Engine + our new blog". Google App Engine Blog. April 7, 2008. Retrieved December 3, 2019.
  2. "Python Runtime Environment - Google App Engine - Google Code". February 22, 1999. Retrieved February 14, 2012.
  3. Sanderson, Dan (2009). Programming Google App Engine: Build and Run Scalable Web Apps on Google's Infrastructure. O'Reilly Media. ISBN   978-0-596-52272-8.
  4. 1 2 "Google App Engine Documentation | App Engine Documentation". Google Cloud. Retrieved December 3, 2019.
  5. "Quotas - Google App Engine - Google Code". February 22, 1999. Retrieved February 14, 2012.
  6. "Welcome to webapp2! — webapp2 v2.5.1 documentation". Webapp-improved.appspot.com. Retrieved February 14, 2012.
  7. "AppEngineFrameworks - tipfy - The almighty little framework for Google App Engine - Google Project Hosting" . Retrieved February 14, 2012.
  8. "What Is Google App Engine? - Google App Engine - Google Code". February 22, 1999. Retrieved February 14, 2012.
  9. "webapp Overview - Google App Engine - Google Code". February 22, 1999. Retrieved February 14, 2012.
  10. "Google Chose Jetty for App Engine". Infoq.com. July 13, 2012. Retrieved July 17, 2012.
  11. "Google App Engine Datastore low-level API".
  12. "Objectify library". GitHub . December 4, 2022.
  13. "Slim3 framework".
  14. "Jello Framework".
  15. "WillItPlayInJava - googleappengine - Lists the level of compatibility of various Java technologies and App Engine - Google App Engine - Google Project Hosting" . Retrieved February 14, 2012.
  16. "Django-nonrel - NoSQL support for Django". All Buttons Pressed. February 4, 2010. Retrieved July 17, 2012.
  17. "djangoappengine - Django App Engine backends (DB, email, etc.)". All Buttons Pressed. September 30, 2011. Retrieved July 17, 2012.
  18. "App Engine Service Level Agreement - Google App Engine - Google Code". February 22, 1999. Retrieved February 14, 2012.
  19. "Google App Engine Blog: Happy Birthday High Replication Datastore: 1 year, 100,000 apps, 0% downtime". Googleappengine.blogspot.com. January 5, 2012. Retrieved February 14, 2012.
  20. "Premier Accounts - Google App Engine - Google Code". February 22, 1999. Retrieved February 14, 2012.
  21. "Uploading and Downloading Data - Google App Engine - Google Code". February 22, 1999. Retrieved February 14, 2012.
  22. aral. "aral/gaebar". GitHub. Retrieved February 14, 2012.
  23. "approcket - Live synchronization between AppEngine and MySQL - Google Project Hosting" . Retrieved February 14, 2012.
  24. "gawsh - Google Apps Web Service Helpers - Google Project Hosting" . Retrieved February 14, 2012.
  25. "gae-filestore - Simple Virtual File System on Google App Engine DataStore - Google Project Hosting" . Retrieved February 14, 2012.
  26. "The JRE Class White List - Google App Engine - Google Developers". February 22, 1999. Retrieved June 14, 2013.
  27. "Python Runtime Environment - Google App Engine". November 10, 2009. Retrieved November 10, 2009.
  28. "Google Cloud SQL Databases - Cloud SQL - Google Cloud Platform". Google Cloud Platform.
  29. "Using Google Cloud SQL - App Engine standard environment for Java - Google Cloud Platform". Google Cloud Platform.
  30. Google Developers (April 7, 2008). "Campfire One: Introducing Google App Engine (pt. 3)" via YouTube.{{cite web}}: |last= has generic name (help)
  31. "Modeling Entity Relationships - Google App Engine — Google Developers". June 26, 2012. Retrieved July 17, 2012.
  32. Gallagher, Sean (April 9, 2008). "Analysis: Google App Engine alluring, will be hard to escape". Ars Technica. Retrieved July 17, 2012.
  33. 1 2 "typhoonae - Typhoon App Engine - Google Project Hosting" . Retrieved July 17, 2012.
  34. AppScale Launches As An Open-Source Backup Equivalent To Google App Engine. TechCrunch (June 24, 2013). Retrieved on 2013-09-18.
  35. Archived February 20, 2010, at the Wayback Machine
  36. Google I/O 2011: App Engine Backends on YouTube
  37. "Backends Python API Overview - App Engine standard environment for Python - Google Cloud Platform". Google Cloud Platform.
  38. "Backends Python API Overview - App Engine standard environment for Python - Google Cloud Platform". Google Cloud Platform.
  39. "Google Cloud SQL: your database in the cloud - The official Google Code blog". October 6, 2011.
  40. "Cloud SQL Features - Cloud SQL Documentation - Google Cloud Platform". Google Cloud Platform.
  41. "Google App Engine General Questions". Google Developers. Retrieved June 18, 2015.
  42. "Understanding Application Quotas with Google App Engine" . Retrieved April 16, 2010.

Bibliography