Historically, cross-platform software has been the ideal choice for both ISVs and IT departments.
The concept has been around for a while and has proven its value. Software programs can reach a wider audience and serve more customers as a result. Its portability makes it inherently more useful, and, for software vendors, it increases revenue opportunities.
In today's world, we are probably trying to find answers in cross-platform GUIs for mobile apps, but what does it mean to be a "cross-platform cloud app"?
To define a cross-platform cloud application, let's go back to basics:
When we put them all together, cross platform means that a piece of software can run on different platforms and is portable. Cloud computing applications that operate across different platforms or environments are known as cross-platform cloud applications.
This is the new goal of IT. The new gauntlet. The new challenge.
An "application cloud" is a platform comprising the entire stack--network, storage, security, and compute--including web, application, middleware, and database servers. Clearly, this statement is complex. The entire app-stack should be able to “pick up and move” to another platform in order to become a cross-platform cloud application. The migration should be seamless if it's truly cross-platform and does not require any reworking of the application.
So, a truly cross-platform cloud application must also be portable across multiple clouds without human intervention.
Dealing with Cross-Cloud Complexity
How complex is it to deploy cross-cloud applications? A cross-cloud deployment sounds simple-we can just define install scripts that create a VM, install and configure middleware, and deploy our applications. Then, we do it on another cloud. So long as we can install the same OS and middleware on the two (or more) clouds we are targeting as "cross-platform", this shouldn't be too difficult.
It's also not just about installing a defined, versioned piece of software across clouds. In the deployment itself, complexity arises because not all clouds allow you to deploy the same way, and we want to minimize human intervention.
We need a "deployment service" that abstracts the target cloud as its own object in order to be truly cross-platform. Essentially, each cloud needs a profile for its environment that is separate from its list of VMs, OS, middleware, or JARs to install. The cross-platform approach also means we have a definition of the install process and steps that are independent of the target environment. Accordingly, our deployment service would have five distinct objects: 1) the cloud environment, 2) infrastructure services like an OS, 3) middleware like Tomcat, 4) artifacts like a WAR, and 5) the installation process itself. It becomes increasingly more difficult to "switch to a new cloud" when the cloud platform or environment is entangled with the other pieces.
Application deployment and installation are tied specifically to the hardware environment, so moving apps to other hardware is no longer cost-effective. Application deployment and installation are tied specifically to the hardware environment. The "deployment scripts" (or deployment services) for a software stack should be portable across clouds so there is no tie to a specific cloud provider. Our cloud software can be easily deployed and run on a variety of cloud platforms thanks to separating the concern of deployment.
Here's a quick test to see if your "cloud app" is actually a "cross platform cloud application":
You probably have a "cross platform cloud application." If you don't, then please join us for our upcoming webinar. 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, on Wednesday, January 16, 2013, at 9:00 AM PST.