A Big Cloud Challenge: Cross Stack Portability
When you think of portability in cloud computing, you think of how to move applications code, data, and workloads. These are mostly horizontal movements within the same level of software stacks – from one IaaS to another, and from one PaaS to another.
There is a more interesting and potentially very important movement that I would describe as “cross stack” portability. Today we don’t see cross stack portability unless we re-write the application, which is not what I cover here (although it could be a good business opportunity for companies to explore). Rather, I am talking about how to move your application built on PaaS to an IaaS vendor or even to a private cloud. The reason I call it cross stack is because the application is moved up or down to a different level in the software stack.
Lost VMs or Containers? Too Many Consoles? Too Slow GUI? Time to learn how to "Google" and manage your VMware and clouds in a fast and secure HTML5 App.
In this blog, I’ll focus on portability without code change. I’ll discuss three conversions: from PaaS to IaaS, SaaS to IaaS, and IaaS to PaaS. Mathematically we can have other forms of conversions – say from IaaS to SaaS – but those examples are either not that interesting or not that practical. So I won’t cover them here.
From PaaS to IaaS
Here the challenge is how to re-create the PaaS layer on IaaS. If you use standardized middleware, you should be able to do this mostly by installing the exactly same or compatible set of middleware as used by the PaaS vendor.
The tricky part is that PaaS vendors sometimes recommend you use a generic service like data services, which may not easily be reproduced anywhere else due to technical and business reasons. If you avoid these services, your application’s portability increases.
From IaaS to PaaS
You can have a lot of flexibility in building an application with IaaS. Once getting virtual machines from the IaaS, you can install and configure your application in whatever way you choose. This flexibility may or may not translate to the PaaS.
You have to do research on the middleware compatibility by yourself if you want to move your application up the stack. If you find a cloud vendor who can accommodate you, your portability may be good; otherwise you have to re-write your application with some level of code re-use.
The problem is that many PaaS vendors may not even tell you what combination of middleware of what versions they use today. Some of them may well use proprietary software which you cannot find anywhere else.
If you have cross stack portability in mind while designing a new system, you can choose the combination of middleware that gives you the best chance to move your application to PaaS vendors.
From SaaS to IaaS
This is the case in which you want to move your SaaS application in house, behind your firewall. Typically SaaS vendors provide applications to many customers at the same time. It’s the multi-tenancy that helps them to achieve scale of economy.
Technically, you can move the SaaS applications by converting the full software stack to virtual machines and then moving them back to the enterprise. It’s the scale of SaaS applications that may make this method impossible. By design, SaaS applications incorporate many architectural elements for scalability that may not be needed for a single enterprise application. These elements are too hard or expensive to be reproduced inside a typical enterprise.
It’s all about design. You can design SaaS application with cross stack portability in mind and that can make it less painful. Zimbra, for instance, handles the problem gracefully so that you can use it for service providers and for small businesses.
The challenge for the PaaS/SaaS vendors is really simple: can you build a virtual machine or a set of the virtual machines with all the middleware and applications built-in? Companies can use them in house (still pay license fees if applicable) for development and even production. When needed, companies can choose to move it to either external IaaS or your PaaS/SaaS services. The choice is with the users not controlled by you.
This may sound crazy but I bet this is really something companies would love to see.
PaaS and SaaS vendors, are you up to the challenge?