entry was reposted from DoubleCloud.org, a blog for architects and
developers on virtualization and cloud computing.
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
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.
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.
PaaS to IaaS
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.
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
IaaS to PaaS
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
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.
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.
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.
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.
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
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.
sound crazy but I bet this is really something companies would love to see.
SaaS vendors, are you up to the challenge?