Yup, it's that time of year again where everyone makes their 2014 predictions. I guess I'm no exception...
In this blog posting I’d like to spend a little time talking about Cloud, and specifically, about PaaS. But first, a little background material.
First, lets define the different “kinds” of Clouds there are:
Public Cloud – Gartner defines public cloud as a style of computing where scalable and elastic IT-enabled capabilities are provided as a service to external customers using Internet technologies—i.e., public cloud computing uses cloud computing technologies to support customers that are external to the provider’s organization.
Private Cloud – Webopedia defines Private cloud as the phrase used to describe a cloud-computing platform that is implemented within the corporate firewall, under the control of the IT department.
Hybrid Cloud – SearchCloudComputing.com defines a hybrid cloud as a cloud-computing environment in which an organization provides and manages some resources in-house and has others provided externally.
There are some others, but they are all basically variations of the above.
Once you have a Cloud solution, the question is, what kind of Cloud is it? Here are the definitions that NIST provides.
Infrastructure as a Service (Iaas) - The capability provided to the consumer is to provision processing, storage, networks, and other fundamental computing resources where the consumer is able to deploy and run arbitrary software, which can include operating systems and applications. The consumer does not manage or control the underlying cloud infrastructure but has control over operating systems, storage, and deployed applications; and possibly limited control of select networking components (e.g., host firewalls).
Platform as a Service (PaaS) - The capability provided to the consumer is to deploy onto the cloud infrastructure consumer-created or acquired applications created using programming languages, libraries, services, and tools supported by the provider. The consumer does not manage or control the underlying cloud infrastructure including network, servers, operating systems, or storage, but has control over the deployed applications and possibly configuration settings for the application-hosting environment.
Software as a Service (SaaS) - The capability provided to the consumer is to use the provider’s applications running on a cloud infrastructure2. The applications are accessible from various client devices through either a thin client interface, such as a web browser (e.g., web-based email), or a program interface. The consumer does not manage or control the underlying cloud infrastructure including network, servers, operating systems, storage, or even individual application capabilities, with the possible exception of limited user-specific application configuration settings.
I recently did some research on PaaS, but I found the research tough to do because it’s almost impossible to put all of the PaaS players in the same bucket, and common patterns are hard to find.
Unlike the IaaS players that provide IT resources as a service, PaaS providers are really solution development platforms. Therefore, they are built around the types of problems they solve, not some industry-accepted approach.
At the heart of the problem is the fact that PaaS is today’s most ill-defined area of cloud computing. The approaches, features, and definitions vary widely, with many PaaS providers offering a specific focus. This may include support for specific programming languages such as Salesforce.com’s Heroku, support for Ruby, Node.js, Python, and Java, or perhaps tight integration with major databases, such as Oracle’s Cloud Platform. Or, perhaps it’s the delivery model, with private PaaS offerings from Active State, App Fog, or Apprenda, for those of you who can’t yet trust the public PaaS offerings from Google or AWS. Then there is an entirely new set of PaaS providers such as Elastic Box that bring a completely different approach to the problem.
Overall it’s largely a function of the providers all of which are trying to be relevant in this emerging marketplace. PaaS is the last frontier of cloud computing, and thus the least defined. So, it’s still possible for vendors to manipulate the market by positioning their products to better define what PaaS is and its value, or, more likely, their campaigns will just confuse people.
In 2013, the PaaS market took on some new dimensions. Private PaaS players saw strong growth as some enterprises looked to keep applications and data in-house. Also, there is greater support for the emerging use of DevOps, better database integration, and better support for emerging multi-cloud deployments. This builds upon, not replaces, the traditional uses of PaaS to automate application development, testing, and deployment processes.
Moreover, the PaaS market saw increased meshing with the IaaS space in 2013. This includes strong showings from AWS Elastic Beanstalk, and other IaaS-focused players. We also saw the arrival of some new PaaS players, including Oracle, and we got a clearer picture of how Saleforce.com’s and Pivotal’s PaaS offerings will likely exist in the emerging market.
Given all of these developments, there is a need to reevaluate the PaaS market and the PaaS players, in terms of how PaaS truly fits within an enterprise application development strategy. Questions are emerging such as: When will PaaS work for enterprise IT? When will PaaS not work for enterprise IT? What is the changing value of PaaS technology, now, and into 2014?
Some confusion in the attempts to answer these questions, and complexity has emerged. This led to some pushback when it comes to PaaS within enterprise IT. Many consider PaaS too complicated and too limiting for most development efforts, and for most developers.
For instance, most PaaS offerings place the developer into a sandbox, with only the features and functions that the PaaS provider furnishes to build and deploy applications. While this makes development an easy and controlled process, many developers need to gain access to the resources and tools required to support specific features, such as remote and native APIs, as well as middleware and database services. While the PaaS providers consider this abstraction from the underlying “metal” a path to productivity, many developers don’t agree.
PaaS does provide the ability to automate much of the development and deployment activities, as well as provide the developers with the ability to offer self- and auto-provisioning capabilities. This means that application developers can focus on the applications, and not have to deal with the purchase of hardware, software, and development tools to support increasing demands on the applications or the need to scale.
Moreover, PaaS supports new and more innovative approaches to delivery, including DevOps and the move to “continuous delivery.” Approaches such as continuous integration, automated testing, and continuous deployment allow software to be developed to a high standard and easily packaged and deployed. This results in the ability to rapidly, reliably, and repeatedly push out enhancements and bug fixes to customers at low risk and with minimal manual overhead.
If there is a core pattern that is a part of most PaaS, it’s that it’s solution-oriented. PaaS providers are focused on being the factory for cloud applications, and they understand there are many paths to get to that goal. As such, the offerings are very different from provider to provider, and thus the market is fragmented, complex, and confusing to those in enterprise IT.
I suspect this situation won’t improve much as we enter 2014. However, PaaS continues to be a consideration for those moving to the cloud. How and if it’s leveraged will be defined by the particular enterprise.