Serverless computing can make your cloud-based apps much more efficient. Wondering what serverless computing means, what the advantages and drawbacks are and how you can go serverless? Keep reading for a primer on serverless computing solutions.
Before diving into the details, let's get one thing straight: Serverless computing does not mean computing without servers. In a serverless computing environment, you still host your apps on servers.
How Serverless Computing Works
So what does serverless computing mean, then? In a sentence, serverless computing is a type of solution that allows you to run code on a cloud server without having to configure or maintain the server in any way.
That's different from traditional cloud computing. Normally, even if you host your apps on a virtual server based in the cloud, you still have to set up and manage that server. You have to install an operating system on it, monitor it, keep its software updated, and so on.
Under the serverless model, none of that is necessary. All you have to do is upload code and execute it. Your computing experience is serverless in the sense that you don't have to think about the servers that host your app (even though they still exist).
Serverless Computing Benefits
Serverless computing comes in handy when you have resource-hungry code that needs to be executed at fluctuating, unpredictable rates.
Traditionally, the only way to ensure that you will always have the resources on hand to execute code like this would be to maintain a massive infrastructure. But doing so is very inefficient, because it requires you to set up and maintain a large number of servers that are only used at the moments when you happen to need them.
Serverless computing solves that problem by allowing you to execute code on-demand on cloud-based servers that are maintained by someone else. All you have to do is upload the code you want to run, then tell your serverless computing service when to run it.
Serverless Computing Use Case Example
A good example of a situation in which serverless computing can pay major dividends is a Web application where users upload photos that need to be resized by the app.
Image resizing is a resource-intensive operation, and there is no way to know when a user will choose to upload a photo. Therefore, in order to resize photos effectively, you need a way to run image-resizing code on a server that is powerful enough to execute it quickly.
Serverless computing provides an excellent solution in this situation. It allows you to gain instant access to massive cloud-based computing resources for resizing images whenever you need those resources. And you only pay for the resources when you are actually using them.
Limitations of Serverless Computing
There are a few limitations to keep in mind when considering how serverless computing can help you:
- Currently, only a handful of cloud providers are offering serverless computing solutions. (See below for a list of the major platforms.) That means you may need to migrate to a new cloud host if you want to take advantage of serverless computing.
- There are no community-based standards for writing serverless computing code. Each cloud vendor has different requirements. As a result, there is a certain amount of vendor lock-in associated with serverless computing.
- Only certain programming languages are supported. The exact languages vary by vendor. If you want to take advantage of serverless computing, you'll need to write your serverless software in a supported language.
- Serverless computing solutions do not yet offer many security or compliance enhancements. This does not mean that running serverless code is inherently insecure or will get you into trouble with auditors. But serverless code runs on shared servers over which you have very little control. That could be a challenge if you have very high security needs.
Serverless Computing Services
Who's providing serverless computing solutions?
AWS was the first major entrant to this niche. It launched Lambda Functions in 2014. Lambda remains a very popular serverless computing solution, especially because it supports most popular programming languages.
It took other public cloud providers some time to catch up with Lambda, but they are now doing so. Azure offers Azure Functions. IBM's solution for the Bluemix cloud is called OpenWhisk. Google Cloud's answer to Lambda is Cloud Functions, which are currently in alpha.
Serverless computing can help you make much more efficient use of the public cloud. It allows you to get access to all of the computing power you need, without paying for any extra. For now, serverless computing is still maturing. But expect it to become a bigger and bigger deal as more vendors add serverless solutions and as the choices become more sophisticated.