Google App Engine

Sanskruti Narwane
6 min readJan 22, 2022

--

CO WRITTEN — SIDDHARTH NAHAR, VISHWESH MEHER, Daanish Shaikh, Mrunmay Paratwar

You’ve heard about Cloud Computing but do you know what goes on in the background? Have you ever wondered how PaaS platforms work? Here’s a blog about one of the most widely used PaaS platforms, the Google App Engine.

OVERVIEW

Google App Engine (also known as GAE or just App Engine) is a cloud computing platform that allows you to build and host web apps in Google-managed data centres. Applications are separated into sandboxes and distributed across various servers. App Engine provides automated scaling for web applications, which means that as the number of requests for a web application grows, App Engine assigns more resources to the web application to handle the increased demand.

Google App Engine primarily supports apps written in Go, PHP, Java, Python, Node.js, .NET, and Ruby, but it can also support other languages using “custom runtimes.” The service is free up to a particular amount of resources spent and only in a standard environment, not in a flexible environment. Additional storage, bandwidth, or instance hours that the programme requires are paid for. It was first launched as a preview version in April 2008, and it was then made available to the general public in September 2011.

ARCHITECTURE -

The Google File System, the MapReduce programming framework, and Big Table are the foundations of Google’s cloud computing application. Google has created a number of cloud apps using these components. The accompanying diagram depicts the Google cloud infrastructure’s general design. The user program is run by GAE on Google’s infrastructure. Application developers no longer have to worry about server upkeep because it is a platform that runs third-party programs. GAE is a software package that combines numerous software components. The frontend is an application framework that is similar to ASP, J2EE, and JSP, among other web application frameworks. GAE supports Python and Java development environments as of this writing.

The apps can execute in the same way as web application containers do. The frontend can be utilized as a dynamic web serving architecture that can serve a wide range of technologies.

HIERARCHY -

Application, services, versions, and instances are the four components of the App Engine hierarchy. A customer-required application is made up of several services, each of which can have multiple versions that are deployed in instances.

  • The App Engine is best suited for situations where you need zero downtime and don’t want to configure or manage application infrastructure.
  • Control an application’s security, firewalls, and SSL certificates
  • Install and maintain the application’s dependencies.
  • When having control over an underlying instance, configurations, and packages is essential, it is recommended not to use App Engine.
  • You must use modified images to execute the application.
  1. Runtimes and framework

Google App Engine typically supports Go, PHP, Java, Python, Node.js,.NET, and Ruby apps, while “custom runtimes” can be used to support other languages.

Django, CherryPy, Pyramid, Flask, web2py, and webapp2 are among the Python web frameworks that run on Google App Engine, along with a proprietary Google-written web app framework and several more that have emerged since the platform’s launch. Any Python framework that supports WSGI via the CGI adapter can be used to create an application, and the framework can be uploaded along with the finished product.

Many Java standards and frameworks are supported by Google App Engine. The servlet 2.5 technology, which is based on the open-source Jetty Web Server, as well as supporting technologies like JSP, are at the heart of this. Some workarounds are used by JavaServer Faces. App Engine Standard Java is now in Beta and supports Java8, Servlet 3.1, and Jetty9.

Though programmers may be unfamiliar with the integrated database, Google Cloud Datastore, it can be accessed and maintained using JPA, JDO, and the basic low-level API. Objectify, Slim3, and the Jello framework are some of the other tools and frameworks you can use to model and transfer data to the database.

GAE is compatible with the Spring Framework. However, if the Spring Security module is used, workarounds are required. Struts 1 is supported, and Struts 2 can be run with the use of workarounds.

With few modifications, the Django web framework and its applications can be used on App Engine. Django-nonrel is a project that allows Django to run with non-relational databases and adds App Engine compatibility.

2. Reliability and support

All billable App Engine applications have a 99.95 percent uptime SLA.

App Engine is built to withstand numerous datacenter outages without experiencing any downtime. The fact that the High Replication Datastore experienced 0% downtime over a year demonstrates its resilience to downtime.

3. Bulk downloading

SDK version 1.2.2 provides support for large downloads of data using Python. Users can also download and back up App Engine data using the open source Python projects gaebar, approcket, and gawsh. There is presently no Java way for obtaining data in bulk from GAE.

DISTRIBUTED DATASTORE -

Datastore is a NoSQL document database designed for easy application development, automatic scaling, and great performance.

The sections in this section explain how to use App Engine APIs to access Datastore. Apps that utilize these APIs can only run in App Engine, and they must upgrade to the recommended Google Cloud APIs before moving to newer App Engine runtimes. The Google Cloud Client Library contains the recommended APIs for Cloud Storage, which enable your program to run in App Engine and other environments that support Java 8.

App Engine, in comparison to other scalable hosting services like Amazon EC2, has more infrastructure to make it easier to create scalable apps, but it can only run a limited set of applications that are designed for that infrastructure.

The foundation of App Engine eliminates many of the system management and development issues that come with scaling apps to hundreds of requests per second and beyond. Google manages the deployment of code to a cluster, as well as monitoring, failover, and the launch of application instances as needed.

App Engine requires developers to utilize only its supported languages, APIs, and frameworks, whereas competing services allow users to install and configure practically any *NIX compatible software. The current APIs support saving and retrieving data from Google Cloud Datastore’s document-oriented database, as well as making HTTP queries, sending email, editing photos, and caching. App Engine apps that require a relational MySQL compatible database backend can use Google Cloud SQL. Individual requests are terminated if they take more than 60 seconds or return more than 32MB of data, while per-day and per-minute limits restrict bandwidth and CPU utilization, number of requests serviced, number of concurrent requests, and calls to the various APIs.

Java on Google App Engine -

App Engine gives you the option of running Java apps in one of two environments: standard or flexible. Both environments employ the same code-centric developer process, scale rapidly and efficiently to manage increased demand, and allow you to build web, mobile, and IoT applications quickly and with no operational cost using Google’s proven serving technology. While the accessible ecosystems have many characteristics, they differ in a few key aspects.

Services provided by App Engine includes:

  • Build and deploy scalable apps using Platform as a Service (PaaS).
  • Fully-managed data centres serve as a hosting facility.
  • A platform for managing application servers and infrastructure that is completely managed and configurable.
  • Popular development languages and developer tools provide assistance.

CONCLUSION -

On Google’s infrastructure, Google App Engine provides a PaaS standard environment for developing and deploying web applications. Organizations love the Google service since they don’t have to bother about hosting or managing the application infrastructure. It enables you to achieve a faster time to market, focus on core business competencies, and efficiently manage the release cycle.

--

--