Serverless computing is gaining significant traction among cloud customers. Ever since AWS Lambda was launched, and AWS showed that serverless computing has a place in mainstream cloud workloads, many organizations have dipped their toes into serverless and have found many use cases for it ranging from lightweight log aggregation to running entire applications that require quick bursts of compute and memory. However, the serverless computing industry is more than just AWS Lambda. Many cloud vendors see the potential in serverless computing and don’t want to be left behind.
Pros and cons of serverless computing
The benefits of serverless computing are compelling. The first and most obvious benefit is that there aren’t any servers to manage. This means all the plumbing is taken care of for you. One of the key reasons for running apps in the cloud is that you don’t have to manage hardware servers yourself in your datacenter. Serverless takes this concept to its extreme by totally removing servers from the equation.
Apart from this, its ability to scale effortlessly without having to architect your infrastructure for scale is very enticing. Executing code without infrastructure woes in itself is a big deal, but on top of that adding scale out capacity makes it even more powerful.
Finally, the cost-effectiveness of serverless is hard to argue with. When you rent cloud resources like VMs you pay for the instance you rent whether you use it or not. With serverless computing, you only pay for the time the system took to execute your code. It doesn’t get more cost effective than that. Add to it the generous free tier limits provided by cloud vendors and it’s an offer you can’t refuse.
The one big concern with serverless computing is that there is a real threat of vendor lock-in. The way you execute your functions in AWS Lambda is completely different from how you would execute the same in a competing solution. In the long run, becoming heavily reliant on any one of these platforms means you would find it harder to switch. The partial solution to this is to keep it simple and use architecture that you can adapt to another cloud vendor. This requires a lot of upfront planning, and still won’t be equal to the hybrid cloud convenience you have with, let’s say VMs. However, there are interesting solutions cropping up that enable hybrid cloud setups even with serverless. More on this later.
With that, let’s look at a list of serverless computing options available today and how they stack up against one another.
After Lambda, Azure Functions is the most mature of the serverless computing options out there. Its biggest strength is that it supports the most number of languages. It recently added support for Java, which opens up the enterprise market where Microsoft already has a large footprint.
One of the interesting new features added to Azure Functions is Durable Functions. While serverless computing is mostly used for stateless jobs, this feature now lets you write long running functions — stateful serverless computing. This makes it easy to break down large jobs and run them in parallel, and the jobs themselves can depend on other jobs that may be slower to execute.
Azure Functions is also being extended to include integration with other popular tools like Maven, Visual Studio, and more. In most other ways like pricing, and resource limits Azure Functions is on par with Lambda, and is a great alternative if you’re not an AWS shop.
Google Cloud Functions
After AWS and Azure, the next biggest cloud vendor out there is Google Cloud, and they not surprisingly, also have a serverless computing solution called Functions. Now, Google’s solution is newer than its bigger rivals, and lacks some vital features. This is likely because of Google focus on Kubernetes, and that it sees a point of convergence somewhere in the future of the two technologies — container orchestration and serverless computing.
Google is also more liberal in its resource limits. Unlike Lambda, which has a file size limit of 50MB, Google Functions has no file size limit. But it does put a 20 function cap on every project.
An interesting tangent to Google Cloud Functions is its Cloud Functions for Firebase. This is a natural integration between the two products as they both seek to abstract away infrastructure and let developers focus exclusively on the code they run.
A related service is Google Cloud Dataprep, which uses serverless computing to explore and cleanse data at enterprise scale. This is a big gnarly problem for enterprises and often involves heavy legacy tools chained to expensive hardware in a physical data warehouse. However, serverless computing is changing the way data is managed in the enterprise. Modern cloud-based, and serverless data warehouses are taking the enterprise by storm, and Google wants in on this shift.
Oracle is the most recent entrant into the serverless computing space. This is no-doubt sparked by its fierce rivalry with AWS on the cloud front. Oracle recently acquired the serverless computing startup Iron.io, which had a very interesting product called IronFunctions. Oracle wasted no time in rebranding the product and announcing it as Oracle Fn.
The new Oracle Fn is perhaps the most interesting take on serverless computing to date. For starters, it’s based completely on open source components. This is a far cry from the closed, proprietary system being built by the other cloud vendors, and is a call for standardization and openness in the ecosystem.
The second unique aspect of Oracle Fn is that it uses Docker containers as its basic unit of computing. It packages functions as containers and these containers can be managed, hosted, and run as you would any other Docker container. They call it BYOD — bring your own Dockerfile.
If that wasn’t enough, Oracle Fn is also cloud agnostic. It can run in the Oracle cloud, but it’s also designed to run on-premises or in any other cloud. This is because of its container-native architecture. It plays well with container tooling, especially Kubernetes. In this way, it doesn’t add to the complexity of your cloud stack but brings much-needed unification across different platforms and technologies.
Finally, it includes a very interesting component called Fn Flow, which gives you a visual representation of the functions in your system. This further simplifies cloud workloads and gives you a level of convenience that’s not available with any other serverless computing solution out there.
There are other interesting serverless computing options out there like Fission — the Platform9 developed product that’s based on Kubernetes. There’s also the open source Apache OpenWhisk and other frameworks like Deployd and Sparta. They’re topics for another more in-depth article.
A glance at the solutions listed in this post and the kind of features they contain is proof that serverless computing is ripe with potential. Though a new way of computing, it is already proving to be disruptive to mainstream cloud technologies. As vendors continue to innovate and differentiate themselves from the rest of the pack, we’ll continue to see more advances. 2018 will likely bring more convergence between containers and serverless computing. We’ll also see more standardization in this space. If there ever was a right time to jump on the serverless bandwagon, that time is now.