Hybrid cloud apps on Google and on-prem, with AppScale and Nutanix

TL;DR: AppScale runs on Nutanix with no changes, offering another option for App Engine apps to run on-prem (check out the video below!).

While some embrace public clouds and don’t look back, many organizations need to run code on their own infrastructure. Hybrid cloud applications – same code running in cloud and off-cloud – are a good use case for AppScale. Google App Engine is a great platform for Web apps in GCP, while AppScale enables the same programming model on many other infrastructures.

On June 28th, 2017 Google and Nutanix announced a strategic partnership. It makes sense: While enterprise vendors are being dragged into cloud, the public cloud operators are seeking enterprise contracts to boost profits. Enterprises often demand on-prem tech and support for it. That’s why AWS partnered with VMware in Oct 2016. That’s why Microsoft strained to get Azure Stack out the door. Nutanix can help Google with on-prem technology: their platform has matured into a virtualized datacenter product to rival VMware's. Nutanix also offers support: large enterprise installations are their bread and butter.

We recently tried AppScale on Nutanix’s platform. Since AppScale needs little from the infrastructure – it runs anywhere you can run Linux, with some disk and a few gigs of RAM to spare – we did not expect much difficulty. Sure enough, once we got an Ubuntu VM to boot on the hypervisor (Nutanix’s KVM-based hypervisor called AHV), AppScale worked as expected. Our pre-release version of AHV had trouble with the default kernel on Ubuntu Xenial, but an older kernel, from Ubuntu Trusty, booted fine.

AppScale release pipeline builds QCOW2 images for each release. One of those can be uploaded into Nutanix as is and referenced as a root disk image when defining a VM or creating a Calm blueprint (Calm is a GUI that enables control and higher level orchestration of Nutanix resources). With a few lines of shell code we were able to create a Calm blueprint that:

Boots up as a one-node AppScale deployment (with all services on one host) and deploys an App Engine application from a code repository.

Gives the operator a one-click method to update application code and redeploy the application.

Such one-node deployments are great for testing and debugging: they use minimal resources and a developer can quickly verify changes from a private code branch. A blueprint for a production deployment, with AppScale services spread across a few nodes, is a work in progress. So far, no changes to AppScale were needed for integration with Nutanix. To support AppScale's "cloud mode", in which the number of compute nodes utilized by AppScale grows and shrinks with application load, a new agent would have to be added: essentially, code that knows how to ask Nutanix for more AppScale VMs and how to terminate them.

Regardless of the size and type of your AppScale installation, deploying or redeploying an app is easy. It is also similar to (re)deploying into Google App Engine. After the credentials for GCP and AppScale are set up, the two tasks for this hybrid cloud deployment are one-liners:

gcloud app deploy APPLICATIONappscale deploy APPLICATION

I demonstrate this, along with the Nutanix Calm interface, in the following video:

Nitty Gritty Details

The specific steps for creating the one-node AppScale Calm blueprint are as follows: