Open source has been intertwined with enterprise software for more than two decades and, with the increased adoption of cloud computing, the role of open-source software has only been increasing. If we look at the hype around containers, it is completely driven by open source. As Serverless gains traction, driven mainly by the higher-level abstractions, the key question in the minds of industry watchers. When the underlying nuts and bolts have limited meaning from the point of view of its end users, does open source have any meaning? Do developers even care about open source?
When cloud computing gained traction, driven by the success of AWS, there were questions about the viability of open-source software. We had open source projects like OpenStack, CloudStack, and Eucalyptus, competing against the Infrastructure as a Service offering from AWS. They failed miserably because the advantage of cloud computing was in the outsourcing of data center capital expenditure and operations. Open-source IaaS software didn’t provide this advantage and all they could offer was better resource utilization and programmatic access to the infrastructure. However, in the early days of cloud computing, the public cloud was not a runaway success among enterprise customers and the hybrid cloud was the path taken by these users.
Even though open source failed in providing an equivalent to AWS EC2, we saw the reverse happening in the PaaS layer. While Heroku, Google App Engine stagnated after getting initial developer mindshare, OSS offerings like OpenShift and CloudFoundry gained developer traction as well as enterprise adoption. Their success could be adopted to the fact that enterprise customers wanted to have a PaaS like abstraction that could span both on-premises as well as public cloud. This was followed by the huge success of Docker as the container engine and Kubernetes as the container orchestration plane. At this point, talking heads were so confident about the importance of OSS in cloud computing. But we need to keep in mind that the success of OSS in the PaaS layer was driven by two main reasons:
- PaaS services in the public cloud had a legacy cost structure based on compute units similar to virtual machines
- Hybrid cloud was still the focus of enterprise customers due to unnecessary concerns about moving to public cloud providers
In the last 2-3 years, we have seen a dramatic shift in the enterprise adoption of public clouds and most organizations are taking a cloud-first approach.
So, when AWS released AWS Lambda with a new pricing model based on service invocations, we saw a shift similar in importance to what happened when they released compute and storage as a service with a pricing model where user paid only when the service was used. Functions as a Service (FaaS) like AWS Lambda, Catalyst, Azure Functions, etc. provide a breakthrough in the cost model similar to the pay per use model unleashed by early cloud services like AWS S3 and EC2. This is what makes FaaS uniquely attractive to both developers and enterprises. A fundamental shift in a cost structure that lowers the barrier to adoption and the cost of innovation. FaaS levels the playing field for smaller companies to build innovative services to compete with large organizations with great financial muscle. This is entirely driven by the cost model of FaaS alone and the cost savings are the reason why FaaS is still attractive in spite of certain architectural limitations imposed by the abstraction.
The key question is whether open-source can compete with FaaS offerings in the cloud. There is no straightforward binary answer and it is a bit more nuanced. OSS cannot compete head to head with FaaS. Developers would rather not have any operational overhead than managing the open-source serverless layer. FaaS is a clear winner against open source equivalents just like how IaaS made open-source cloud infrastructure software irrelevant. However, open-source may still be important in some niche areas:
- There could be higher-order developer frameworks on top of FaaS that could be open source in order to get developer mindshare. Serverless.com is a good example of this
- Multi-cloud is fast becoming the de facto strategy for many organizations. Organizations may want to provide the same developer abstractions across multiple cloud providers. Open source serverless platforms will be relevant in this scenario. Data is spread out among multiple cloud providers and the compute for the applications using the data should lie closer to the data. Many organizations may want to provide a standardized developer interface to their developers. Open source serverless platforms will be useful in such scenarios. This is similar to the success of OpenShift and, to a lesser extent, CloudFoundry in the PaaS layer
- Kubernetes is fast gaining traction among the enterprises for deploying containers. As organizations deploy apps using multiple encapsulations and deployment models like containers and FaaS, they may want to have a Kubernetes based serverless layer. Knative and serverless frameworks on top of Knative may be relevant in such scenarios
While it doesn’t make sense to use an open-source FaaS layer while using a single cloud provider for deploying the applications, it may still be relevant in multi-cloud scenarios and toolkits around FaaS. Thoughts?