Application Director vRealize Operations

The Definition of “Cross Platform Cloud Applications”

Cross platform software programs have historically been the ideal for both ISVs and IT.

Of course, the concept has been around a while and has proven it’s value. In a nutshell, it allows software programs to have a wider reach and serve more customers. The portability makes it inherently more useful, and, for software vendors, expands revenue potential.

In today’s world, we are certainly seeking new answers in cross-platform GUIs for mobile apps, but what does it mean to be a “a cross platform cloud application?”

Let’s go back to basics to build a definition for a cross-platform cloud application:

  • In software, a platform includes the hardware architecture, operating system, and programming languages supported by the OS and hardware.
  • Cloud computing means the computing resources are delivered as a service over a network.
  • A cloud application is software hosted on cloud computing infrastructure.

If we put these all together, cross platform means that a piece of software is portable and can run on multiple platforms. “Cross platform cloud applications” are applications that can run on different cloud computing environments or platforms.

This is the new goal of IT. The new gauntlet. The new challenge.

>> Check out our upcoming webinar on Wednesday, January 16, 2013, 9:00 AM PST This webinar will show you how to deploy the same application and updates to any cloud, including VMware vCloud Director, Amazon EC2, and .NET environments.

In today’s world a “cloud-based application” is hosted on a platform including the whole stack—network, storage, security, and compute for any topology of web, application, middleware, and database servers.  There is a lot of complexity underscoring that statement.  To make an application work as a cross platform cloud application, it means the entire app-stack should be able to “pick up and move” to another home.  If it’s truly cross-platform, it means the migration should be seamless, with no rework to the application itself.

So, a truly “cross-platform cloud application” must also be portable across different clouds without human intervention.

Dealing with Cross-Cloud Complexity

So, where is the complexity for cross cloud app deployment? Cross cloud deployment sounds simple—we can just define install scripts that set up a VM, install and configure the middleware and deploy our application. Then, we do it on a second, separate cloud. As long as the two (or more) clouds we are targeting as “cross-platform” allow us to install the same OS and middleware, this isn’t terribly complex.

However, the complexity isn’t just in installing a defined, versioned piece of software across clouds. The complexity comes in the deployment itself because not all clouds allow you to deploy the same way, and we want to minimize human intervention.

To be truly cross-platform, we need the application “deployment service” to abstract the target cloud as it’s own object. In other words, each cloud needs a profile for its environment that is separate from the list of VM, OS, middleware, or JARs to install. Cross platform also means we have a definition of the install process and steps that are separate from the target environment. With this in mind, our deployment service would have five separately defined objects: 1) the cloud platform or environment, 2) infrastructure services like OS, 3) middleware like Tomcat, 4) artifacts like a WAR, and 5) the process of the installation itself. When the cloud platform or environment is tangled with the other pieces, it becomes harder and harder to “switch to a new cloud.”

Why Should We Have Cross Platform Cloud Application Requirements?

When applications installation and deployment is tied specifically to the hardware environment, we can no longer cost-effectively move the app to other hardware. Our app is tightly coupled to the hardware.  To break free, we should require a software stack’s “deployment scripts” (or deployment services) to be portable across clouds so there is nothing tied to a specific cloud platform. By separating the concern of deployment, we make cloud software easier to deploy and run across cloud platforms.

Here is a quick test to prove if your “cloud app” is truly a “cross platform cloud applications”:

  • Can you press button “A” to automatically deploy the app to cloud “A” and then press button “B” to automatically deploy it to cloud “B” without the need to create any new deployment scripts?
  • Can you deploy to both clouds without human intervention?
  • Could you add cloud “C” without the need to redefine the install script or process, OS, middleware, or a deployment artifact like a JAR?

If you can, you probably have a “cross platform cloud application.” If you can’t, then please join us for our upcoming webinar.  On Wednesday, January 16, 2013, 9:00 AM PST, VMware will share how an app’s deployment and updates can be ported to any cloud, including VMware vSphere, Amazon EC2, and other public cloud environments.