While infrastructure as a service is still the standard public cloud offering, users are increasingly interested...
in platform as a service, as it can lower costs and simplify operations. But most PaaS offerings have specialized operating system or middleware features -- which can lock in the user.
A portable PaaS offering -- capable of working across multiple cloud platforms and providers -- could offer a solution. There are several ways organizations can achieve this. But first, it's important to understand the drivers for PaaS adoption.
Users adopt a PaaS model for three primary reasons:
- Because PaaS includes an operating system and middleware, the cost of licensing and supporting those elements is reduced. This reduction can more than offset the price difference between PaaS and infrastructure as a service (IaaS).
- The services included in PaaS are standardized for all applications, which can streamline hybrid cloud deployment.
- Some IaaS clouds, such as Amazon Web Services, have highly useful web services that create a PaaS environment. IT teams and developers can add these services to an application to improve performance or functionality.
How a portable PaaS model stacks up in these three areas, and how it can move between various public cloud and private data center environments, is important. But addressing all these needs with a single PaaS approach can be difficult, so businesses need to prioritize their PaaS goals, or expect to combine multiple approaches.
Four ways to achieve a portable PaaS model
One way to ensure your PaaS environment can work across multiple clouds or data centers is to adopt container technology, such as Docker, for application hosting. Container architectures share an OS, but provide a copy of middleware and file system elements to each container. In most cases, including with Docker, it's possible to standardize middleware across container images, but it's also possible to create container images that are specialized for the application and component. Development teams can then move these containers across environments, and run them on any container system of the same type, hosted in the cloud or the data center.
There are a number of open source software tools that augment Docker to make it more PaaS-like. Deis, Flynn and Tsuru are some examples, and all are fairly easy to use. They improve Docker's ability to deploy applications in containers across multiple cloud providers.
Another way to achieve a portable PaaS model is to select OS and middleware components that have forgiving license terms -- meaning modest pricing on a per-copy basis, or discounts for multiple uses -- and then standardize these across your cloud-hosted and data center components. You would have a choice of either using IaaS virtual machines or container-based cloud services. Then, you could use tools for building machine images or container images to check middleware and OS versions and ensure you deploy the same version everywhere.
This approach can be a challenge when cloud applications expand, or if applications or the underlying OS and middleware change often. These complications will introduce errors and higher operations costs unless there's software support to simplify the task. IT teams can create this support by using expanded tools -- VMware's tools are well-known for building machine images -- but, at some point, it becomes necessary to look for tools whose specific goal is to build a PaaS environment.
The third model for using PaaS across multiple clouds is to use a cloud technology that deploys PaaS on IaaS or bare-metal servers. Cloud Foundry and OpenShift are examples of these tools, but newer products, such as Morpheus, are gaining attention. These products are cloud deployment or management tools that let users create and deploy applications based on standard middleware and OS elements. Enterprises use them to create a PaaS model that can cross cloud provider boundaries or multiple server types. These tools harmonize OS and middleware elements to build a true PaaS, handling the daunting task of managing versions and commissioning middleware updates across multiple systems. They're complex to learn and use, however, and are best-suited for businesses with a large support staff.
Also, while this PaaS approach provides portability and reduces the operational burden of maintaining applications in a multicloud or hybrid environment, it won't change licensing costs. If that's your goal with PaaS, this approach might not be best.
Enterprises are moving to Platform as a Service offerings for application development in the cloud, and some believe all applications will be developed on PaaS.
A fourth way to achieve a portable PaaS model involves microservices. Organizations could take application components that need specialized middleware and make them into services that are called on-demand by the rest of the application. This would confine the middleware to the services, reducing complexity and licensing costs and assuring uniformity of implementation. IT teams can use the same service-based approach to build a private version of web services that not all IaaS providers offer, allowing applications that depend on those web services to be portable across all IaaS clouds.
The risk here is performance. Middleware is often highly integrated with the applications, and separating frequently used functionality as a service introduces network delays and performance issues. But careful selection of your targets and control of the delays can make this model valuable, particularly to harmonize web services across cloud providers.
One size of portable PaaS will not fit all, neither today nor likely in the future. The good news is organizations can combine some, or several, options to gain the PaaS efficiencies they want, without locking themselves into a single cloud provider. It may take time to assemble the best PaaS model, but it will be worth it.
Move from IaaS to PaaS
Containers and microservices force PaaS to evolve
Everything you need to know about app portability