Reuven Cohen| Informationweek
There’s been a renewed debate recently over the various layers of cloud computing stacks. At stake is a fight for cloud computing market share and mind share — and possibly, the future of cloud platforms.
Beyond a small group of technologists, cloud computing remains largely a mystery for most people. Ironically, I believe that’s the point of the cloud: To act as an abstraction of the complexity found in more traditional data centers and application hosting infrastructures.
At the center of the cloud platform debate is a new reality: Cloud consumers no longer need to manage or worry about the underlying infrastructure. The question of platform occurs only when you ask who or what controls operating systems, storage, deployed applications, and networking components. Platform as a service (PaaS) focuses not on the infrastructure pieces, but on the deployment of applications and configuration settings for the application-hosting environment. For most PaaS offerings, the preponderance of infrastructure features has been removed, and the focus is on deploying a composable set of application components rather than controlling the lower-level components.
But why does the distinction between IaaS and PaaS matter? Infrastructure as a service (IaaS) provides a lot of features and benefits when it comes to manipulating particular infrastructure components, although most remain unused. In PaaS, the majority of these infrastructure components have been removed, reducing complexity through improved automation, testing, and iteration of application components without the potential of introducing infrastructure-level bugs.
PaaS pundits will point to virtualization — or the lack thereof — as a key differentiator, with technology like Linux containers offering improved deployment speeds. But this seems like a red herring. Most IaaS platforms now support many types of virtualization. Startups like JumpCloud are bypassing the need for virtualization, instead opting for bare-metal hardware deployment. Recent improvements in traditional hypervisors have also reduced application deployment time to seconds, making the question of virtualization and its performance overhead practically meaningless.
The question is: Why are we, as an industry, spending so much time focusing on building two distinct environments for cloud deployments? Do consumers really care about the difference between IaaS and PaaS?
Gordon Haff, a cloud evangelist at Red Hat, points out some of the challenges in a recent blog post.
For most computing resource users, simply thinking of PaaS as a higher level of abstraction than IaaS misses an important distinction. PaaS presents an abstraction that is primarily used by — and of interest to — application developers. IaaS can also appeal to developers seeking more options and control. But a PaaS like OpenShift gives developers the tools they need and then gets out of the way. IaaS is infrastructure, and is therefore more focused on system admins who support developers (whether through a PaaS or otherwise) and other consumers of business services. This will increasingly be the case, Haff says, as IaaS — or something like it — develops into the standard way computing infrastructures are built, whether at a cloud provider or in an enterprise.
Others see the convergence of infrastructure and platform layers as inevitable. One example is the Solum project, which is natively designed for OpenStack clouds. According to the project’s creators, Solum focuses on the intersection of the various parts of the cloud computing stacks, with a particular focus on vendor neutrality, open design, and collaboration. It utilizes existing solutions where possible, for example in its use of Docker for deployment of containers. Multiple language run-time environments will be supported with a modular language-pack solution so users can easily run applications written in the language of their choice. Although projects like Solum are just getting started, they could point to a converged future, with both IaaS and PaaS in cloud computing stacks.
I also believe that traditional approaches to IaaS are too complex. From installation to deployment, to the ongoing management of cloud applications, the process needs to be simplified. However, I’m not convinced that using two distinct cloud computing environments is the answer. The lines between infrastructure and application have already blurred. As cloud systems become ubiquitous, classifying unique IaaS and PaaS layers will become irrelevant.
At the end of the day, the only thing that really matters in cloud computing is the API. APIs form a roadmap to the elements that are most important to cloud service consumers. The question becomes whether or not you choose to use a particular API element. But even if you choose not to, it’s nice to know that features could be potentially activated at a later date.
Some people say less is more. But in the world of cloud computing, I say more is more (more or less).