Topics

Featured in Development

Understandability is the concept that a system should be presented so that an engineer can easily comprehend it. The more understandable a system is, the easier it will be for engineers to change it in a predictable and safe manner. A system is understandable if it meets the following criteria: complete, concise, clear, and organized.

Featured in Architecture & Design

Sonali Sharma and Shriya Arora describe how Netflix solved a complex join of two high-volume event streams using Flink. They also talk about managing out of order events and processing late arriving data, exploring keyed state for maintaining large state, fault tolerance of a stateful application, strategies for failure recovery, data validation batch vs streaming, and more.

Featured in Culture & Methods

Tim Cochran presents research gathered from ThoughtWorks' varied clients and projects, and shows some of the metrics their teams have identified as guides to creating the platform and the culture for high performing teams.

In a recent blog post, Google announced several new runtimes for the App Engine service on its cloud platform. These runtimes are Node.js 12, Go 1.13, PHP 7.3 and Python 3.8.

In October the tech giant made the App Engine standard environment Java 11 runtime generally available, which allows developers to deploy any Java 11 application, web framework, or service in a fully-managed serverless environment. Support for other languages also now extends to applications written in Node.js 12, Go 1.13, PHP 7.3 and Python 3.8. That is, PHP 7.3 is generally available while the other runtimes will be in beta.

Rishi Sharma and Morgan Hallmon, both on the App Engine team at Google, stated in the announcement blog post:

These latest additions to App Engine mean that you can build applications with your favorite tools, libraries and frameworks with today’s most popular languages.

Each runtime offers new features and optimizations in their latest versions, ranging from multibyte strings in PHP 7.3, to lower memory footprint in Go 1.13. Furthermore, any additional runtime can be supported on the App Engine standard environment "container instances", which run on Google's infrastructure. A container can be preconfigured with an arbitrary runtimes.

An application build in one of the runtime respective languages running in the standard environment has an instance class, which determines compute resources and pricing. The instance class is bound to the runtime generation – the latest runtimes are all second-generation runtimes providing memory per instance class up to 2048 MB memory and 4.8 GHz CPU.

Currently, Google App Engine’s counterpart on the Azure Platform, App Service, supports ASP.NET, ASP.NET Core, Java, Ruby, Node.js, PHP, and Python. The runtime versions of Java, Node.js and PHP that App Service supports are similar or less than Google’s App Engine. Furthermore, the other prominent cloud provider Amazon offers AWS Beanstalk service for deploying and scaling web applications and services developed with Java, .NET, PHP, Node.js, Python, Ruby, Go. Again, the supported runtime versions of Java, Node.js and PHP are similar or less than the Google App Engine.

Cloud App Engines

Google App Engine

Azure App Service

AWS Beanstalk

Java 8, 11

Java 11

Java 7, 8

Node.js 8, 10, and 12 (beta)

Node.js up to 10.15.2

Node.js up to 10.16.3

PHP 7.2, 7.3

PHP 7.2, 7.3

PHP 7.2, 7.3

Python 2.7, 3.7, 3.8 (beta)

Python 3.6

Python 3.6

Go 1.9, 1.11, 1.12, 1.13 (beta)

-

Go 1.13

Ruby 2.5 (beta)

Ruby 2.3

Ruby 2.4, 2.5, 2.6

Note the listed language runtimes are supported on the respective native engines. Furthermore, App Service and AWS Beanstalk offer a similar concept of container instances (infrastructure) to run applications with various memory and compute options.