Fundamentals of Google App Engine

Reading Time: 5 minutes

The trend of building applications on the cloud is gaining traction because it offers a variety of advantages, including increased business opportunities, security, and scalability. To develop a web application, however, you would need a suitable cloud computing technology. This is where Google App Engine fits in by allowing you to build and host web applications on a fully-managed serverless platform.

Google-App-Engine

What is App Engine?

App Engine is a fully managed, serverless platform for building and hosting web applications at scale. It is called serverless because when you deploy your application in App Engine, the infrastructure underlying the application is completely managed by Google.

App Engine is Google’s Platform-as-a-Service offering. It is a platform that allows you to host your applications without having to manage the underlying infrastructure or scalability of the platform. The platform is completely managed by the service provider, in this case, Google Cloud Platform. As a comparison to any other provider, Red Hat offers OpenShift as a PaaS solution, and AWS offers Elastic Beanstalk as a PaaS solution. Pivotal’s Cloud Foundry service is also a PaaS solution. These platforms enable developers to manage their code rather than infrastructure. It’s more like CI/CD within a DevOps-driven environment, where developers focus on creating their code and then deploying it on the platform, and the platform will manage all the bells and whistles for the code to run in a scalable environment.

Features of Google App Engine

Here are some of the most prominent features of Google App Engine.

1. App Engine supports several programming languages and provides the ability to import libraries and frameworks through Docker containers. You can develop and test the app locally using the SDK that includes tools for deploying apps. SDKs and runtimes are available for each language. Some of the languages offered are Python, PHP, .NET, Java, Ruby, C#, Go, and Node.JS.

2. The Google App Engine lets you customize the code for your web applications while Google takes care of the infrastructure. The engine ensures that your web apps are secure and running while protecting them from malware and threats.

3. It uses a pay-as-you-go model, meaning you only pay for the resources you use. The app engine automatically scales up resources when the application traffic shoots up, and vice versa.

4. Cloud Monitoring and Cloud Logging offers app scans for detecting bugs. The app reporting document assists developers in fixing bugs as soon as possible.

5. App engines automatically route traffic to different versions of apps as part of A/B testing. You can plan the increments based on which version of the app performs well.

App Engine environments

App Engine has two options for selecting an environment : standard environment and flexible environment.

Standard

In a standard environment, an application runs in language-specific sandboxes. It supports Python 2.7, Python 3.7, Python 3.8, Python 3.9, Java 8, Java 11, Node.js 10, Node.js 12, Node.js 14, Node.js 16, PHP 5.5, PHP 7.2, PHP 7.3, PHP 7.4, Ruby 2.5, Ruby 2.6, Ruby 2.7, Go 1.11, Go 1.12, Go 1.13, Go 1.14, Go 1.15, and Go 1.16.

Advantages

1.When there is no traffic, the application can scale down to 0 instances.

2. Simulates the actual live environment setup exactly for deployment. Can even be deployed straight from Eclipse to PROD.

3. Almost instantaneous deployment.

4. In cases of auto-scaling, the VM instance is created in seconds.

Disadvantages

1.There is no direct way to consume compute engine resources from the app engine, which is a major disadvantage.

2. VMs cannot be accessed via SSH from the standard environment. This limits the ability to integrate with third-party systems.

3. Background processes cannot be run. Alternatively, we can use cron.yaml and queues/TaskWorker for any background manipulation.

4. For projects that use multi-threading and where performance is a concern, a standard environment can be a killer.

5. Every instance comes with a start up charge of 15 minutes. You’ll also be billed by Google for 15 minutes after the last thread is finished.

6. Applications in the standard environment are single-homed, meaning that they are all located in the same availability zone.

Flexible Environment –

A flexible environment is one that uses Google App Engine where the virtual machines are managed by the team managing the environment.

Advantages

1.Support for SSH and Docker is a key difference that opens up a wide range of possibilities.

2. Compute engine resources are accessible as the VMs are handled by the compute engines to efficiently execute client requests.

3. Instances are examined, healed as necessary, and co-located with other services within the project.

4. The underlying operating system is automatically updated with backward-compatible updates.

5. It supports background threads and is very scalable on multi-threaded platforms.

Disadvantages

1.When compared to the standard environment, the instances start-up in minutes rather than seconds.

2. Compared to the standard environment, deployment takes minutes rather than seconds

3. There is no access to the following services: App Engine APIs and Services such as NDB, Users API, Memcache, Images API, and more.

Standard environment is the best choice when you want fewer customizations (runtime, VM instances, security, etc.) and want to plug and play with Google App Engine.

Choosing app engine flexible environment is the best choice if you plan to use compute engine resources extensively and deploy third-party Docker components.

App Engine – Application Component Hierarchy

In order to understand App Engine – Application Component Hierarchy, you need to know about three aspects: applications, services, and versions.

App Engine – Application Component Hierarchy

Application –

An application is like a container for everything. 

Each project can have only one application. For instance, if you want to deploy three microservices, you will first create one application in a project, and underneath that application, you can create services for each microservice. You can also create services for your full-stack applications, one for the backend and one for the frontend.

Service –

Services are the microservices or the app components that you can run on App Engine. A single application can contain multiple services.

Each service can be customized. Formerly, services were called modules. Underneath the service, you can have multiple versions of each service.

Version –

Versions are simply specific versions of your service which are accompanied by code and configuration. At the same time, there can be multiple versions. There can be more than one instance of each version. As part of your App Engine, you have options for rolling back and splitting traffic.

Conclusion

Google App Engine is a provider of a PaaS standard environment for developing and deploying web applications.

Organizations find the app engine service an attractive choice since they don’t need to worry about hosting and managing the application infrastructure. This ensures greater speed to market, allows you to focus on core business capabilities, and enables you to manage the consecutive release cycle more efficiently.

Start by developing your cloud strategy, setting up a GCP account, configuring the app engine SDK, writing the application code, testing it, and deploying it to the cloud.

References –

To know more about App Engine, you can visit this link.

To read more tech blogs, feel free to visit Knoldus Blogs.

knoldus

Written by 

Akshat Mathur is a Software Consultant at Knoldus Inc.. He has worked on Java, Angular 11 and Spring Boot for more than a year. Learning is his passion and solving problems is his forte.