I had the opportunity to attend the Cloud & IOT Expo in NYC earlier this week. This was a smaller event than my typical fare, but was illuminating on several fronts and I wanted to share some observations with my readers. Cloud means many things, but above all it means service level abstractions, API driven, automation and scaling.
SaaS, PaaS or IaaS?
I heard various framings on these well-known industry acronyms during various sessions and along with my close following of Amazon, Microsoft and Google’s respective cloud strategies made a lot of sense to me. Enterprise on-prem IT historically bought, put together and managed all hardware and software layers that delivered applications for the enterprise. Today, in the cloud era, this represents maximum flexibility and customization, but with typically higher costs and longer time to achieving an outcome because so many of the operations are not automated or performed as a service for you by someone else. As we move up the stack of these types of offerings, we are ceding control and customization of each layer, embracing a standardization and as a result reducing cost by moving from capex to opex and offloading the operational burden of provisioning and maintaining the layer. In that framework, IaaS is essentially virtual machines as cloud-hosted entities which removes IT of the burden of the server, storage and network hardware procurement and configuration, as well as managing the virtualization itself from this recipe and delivers them as a standardized service. But IT still must put together and maintain all the software layers that run in the VMs, including the OSes and all the middleware needed by the applications.
PaaS is the least well-defined of these terms but it essentially removes the OS software and middleware layers from the recipe, standardizes them and delivers them as a service in addition to the hardware and VMs of IaaS. Containers like Docker and container schedulers like Kubernetes are a form of PaaS. Databases and analytics as a service can be considered a form of PaaS as well. Applications are constructed to use these middleware services as components that when stitched together deliver the desired end user service. When building an application for a public cloud such as Amazon Web Services, these PaaS services are integral to the offering and dramatically decrease the amount of work needed to standup and scale the end-user application or service. Compare that to using pure IaaS, where delivering your end user service includes provisioning, managing and scaling database and middleware components running on OS’s you also manage contained in virtual machines. Clearly, PaaS technologies add an additional level of simplification, abstraction, automation and scaling to application or service delivery.
SaaS is a complete end to end service and the entire software application is delivered and managed as a service from the cloud. In most companies when considering non-revenue generating operations, consuming a SaaS service is ideal. If its not core to what your business sells, why would it be worthwhile to do it yourself? As we move from one end of the spectrum to the other, the pendulum moves from maximum control, customization and cost/time to minimum control, standardization and lowest cost/fastest deployment. I think this is a great way to think about where your business investment in technology matters, where it doesn’t and how best to achieve the most desirable outcomes in the era of cloud computing.
Public, Private and Hybrid clouds?
What about the private cloud axis? This same value structure can be applied to the private cloud notion as well. If your private cloud is gaining value in its service offering from specific custom software or hardware at a given layer, then clearly you want to embrace that. A private cloud lets you do that. Conversely, running a fully virtualized infrastructure with automated provisioning is only private cloud IaaS. This is just the first or most basic level of operational value for cloud deployments. Also, its not even really a service, because your company still had to buy all the components underlying it! Most private clouds do not have the “luxury” (I use that term loosely!) of matching equipment purchases with projected service demands distributed across many clients. There’s typically only one client with a private cloud, the company building it. For private cloud, lets ignore this last benefit of turning capex into opex with clouds which I would maintain is not really available to private clouds. If you want your private cloud to deliver the operational value and cloud flexibility to your business units like the public clouds do, you must address turning all the other software layers into automated, API-driven, provisioned services as well, as is done with public cloud PaaS and ultimately SaaS.
Lastly, a comment about hybrid cloud. Hybrid cloud is getting a lot of attention, at least as a buzzword today, of being the best of both worlds. Keep some applications, data and infrastructure on premise, other infrastructure, data and applications with scaling on demand from the cloud and have them work seamlessly together. Sounds great! Well, as with most technology, details matter. For hybrid cloud to deliver, in my opinion, you need common technology and mechanisms spanning the domains. That includes the IaaS and PaaS components and capabilities. With vSphere dominating in the enterprise IaaS category and AWS ruling the public cloud with both its IaaS and growing arsenal of PaaS capabilities, this is not the case. Openstack is maturing as an open and customizable cloud platform, but its not universal in any domain. These are disparate environments at both the IaaS and PaaS layers, which does not bode well in my opinion for hybrid clouds delivering on the vision anytime soon.