Cloud Architecture Patterns: App VM

Intent

Provide packaged software stack as Platform-as-a-Service (PaaS) platform for running applications

Category

Behavioral

As Known As

PaaS VM

Motivation

We all know the three different types of cloud services from Infrastructure-as-a-Service (IaaS), PaaS, to Software-as-a-Service (SaaS). If you want to leverage PaaS, you have to choose one of the PaaS service providers like Google or Microsoft. Leveraging an external PaaS has its own benefits.

What if you want to keep your applications running in-house but still enjoy the benefits of PaaS? Today you don’t have much choice. Google, for example, does not sell its App Engine as a product that you can install and run on premise. You have to run it on the Google cloud.

Solution

The solution is clear and even easy – build your own PaaS. Yes, that’s right! Although you won’t get the same software stacks as as your service providers, you can easily install software stacks from either open source or commercial products onto virtual machines. Following the same naming convention for App Servers, I refer to these virtual machines as “App VMs.”

Note that you may have applications written in different programming languages/architectures/frameworks (for example, LAMP – Linux/Apache/MySQL/PHP), or J2EE, and therefore you should create different virtual machine templates accordingly. By the same token, you may need software stacks like a database, messaging server, and a directory server. For a complete PaaS platform, you should create different VM templates or reuse existing ones.

With many different software configurations in place, you should test the templates thoroughly before deploying them. You also need to manage and patch these templates and maintain and evolve them over time.

When you need to run your application on your own PaaS, you can simply provision these virtual machines and inject your application code there. It will require more management on the infrastructure than using external service providers.

Building your PaaS on VM allows you full control over the software stack: what goes there and with what configurations. It also gives you much more portability for your applications than on a typical service provider PaaS. For one thing, you can move your VMs around more easily than moving your typical PaaS applications because the underlying touch points of VMs are mostly X86 instructions. It means you can easily move VMs among different X86-based hypervisors, either inside or outside of an enterprise.

With the portability provided by this App VM pattern, you can also consider building App VMs and running them at IaaS service providers. You can move these VMs back to the enterprise whenever you want without rewriting your applications.

Applicability

Consider App VM pattern when you:

  1. Want to construct your own PaaS platform with full flexibility and control over your software stack;
  2. Cannot find a PaaS service available that satisfies your need;
  3. Need truly portable applications that run across both private clouds and public clouds.

Consequence

The biggest challenge of this pattern is provisioning and management. With so many potential virtual machines, you have to manage and patch them effectively. When the scale of your system reaches a certain size, management may become a big burden.

If you decide to run the an App VM with IaaS providers, you also need to check out if the service providers offer easy solutions for you to move these VMs back to the enterprise.

Known Uses

It’s pretty common that people use IaaS to run applications. There are also pre-packaged virtual machines templates with software installed, like IBM WebSphere AMI in Amazon.

For enterprise use, VMware demoed CloudTools at VMworld 2009 that can provision J2EE App VMs. The CloudTools was originally created by Chris Richardson for Amazon EC2, and I ported it to vSphere.

Related Patterns

VM Factory: it can help provision the App VMs.

VM pool: it can help pool the App VMs for fast provisioning.

Façade VM: helps build a large scale PaaS platform with App VM.

This entry was posted in Cloud Computing and tagged , , , , , , . Bookmark the permalink. Post a comment or leave a trackback: Trackback URL.

Post a Comment

Your email is never published nor shared. Required fields are marked *

*
*

You may use these HTML tags and attributes <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

  • NEED HELP?


    My consulting helps clients with virtualization and cloud computing, including VMware infrastructure automation and orchestration, vSphere management APIs, and deep product integration with hypervisors. Current training offerings include vSphere APIs training, vCenter Orchestrator training, and etc. Should you, or someone you know, need these consulting services or training, please feel free to contact me: steve __AT__ doublecloud.org.

    Me: Steve Jin, VMware vExpert who authored the VMware VI and vSphere SDK by Prentice Hall, and created the de factor open source vSphere Java API while working at VMware engineering. Companies like Cisco, EMC, NetApp, HP, Dell, VMware, are among the users of the API and other tools I developed for their products, internal IT orchestration, and test automation.