Serverless Computing: 10 Things You Need to KnowAlso called function as a service, serverless computing offers some benefits for enterprises, particularly those adopting a DevOps approach.
1. Serverless computing isn't really serverless.
Most vendors acknowledge that the term "serverless computing" is a bit of a misnomer. Your workloads will always be running on servers somewhere. The difference with serverless computing is that the end user doesn't have to deploy, provision, maintain or manage those servers in any way. In fact, you don't even need to know what kind or how many virtual machines (VMs) you are using.
You can think of serverless computing as an extension of the recent trend toward abstracting and simplifying IT for end users. The first step was virtualization, which eliminated the need for users to know which physical servers were running their workloads. The cloud went a step farther, making provisioning even easier, but it still required users to select which kind of VMs they wanted to run and to start and stop service. Serverless computing takes the next logical step with the service choosing the appropriate VMs and starting and stopping service as necessary.
Image Source: Wikimedia Commons
2. It's a kind of cloud computing.
A more descriptive name for serverless computing (and a name preferred by some vendors) is function as a service or FaaS. Like IaaS, SaaS and PaaS, FaaS is a type of cloud computing. In this case, you are buying the IT infrastructure necessary to run a particular function for an application. For example, imagine that your company has an analytics application that creates a particular report. You can use serverless computing to handle the function of creating that report. When the application needs to complete that particular task, the service will automatically spin up the necessary cloud instances, and then it will turn them off again when that function is complete. You can use FaaS for an entire application or just for some functions.
Image source: Google Cloud Platform
3. Serverless computing charges you by the millisecond when code runs.
With other types of cloud computing, vendors usually charge you by the hour, and customers can often get discounts by paying for usage in advance. With serverless computing, vendors bill customers in fractions of a second. AWS Lambda, for example, charges users "for every 100ms your code executes and the number of times your code is triggered." The benefit here is that you don't have to pay for cloud computing instances when you aren't actively using them. It takes the pay-for-what-you-use model of cloud computing to a new level of granularity.
Image source: Amazon Web Services
4. Serverless computing offers some big benefits.
The primary benefit of serverless computing is that the developers who create an application no longer have to spend any time dealing with the infrastructure to manage that application. They simply upload their code, and the service takes care of the rest. For enterprises, that can result in significant time and cost savings, and it frees up staff so that they can work on more valuable projects instead of managing infrastructure. In addition, it can increase agility, allowing companies to roll out new applications and new services more quickly. And that in turn can increase customer satisfaction. All of those benefits together can help make companies more profitable and more successful.
Image source: Iron.io
5. Serverless computing is great for DevOps.
According to the RightScale 2016 State of the Cloud Report: DevOps Trends, 74 percent of all organizations and 81 percent of large enterprises have adopted DevOps approaches to IT. Closely related to Agile software development, DevOps takes agile principles and applies them to IT operations management. It encourages communication and close collaboration between developers and operations personnel, with developers often playing a role in managing the infrastructure on which their applications run.
Serverless computing works well in a DevOps environment because it minimizes the amount of time and energy staff must spend on managing servers. In some cases, FaaS allows organizations to embrace a "NoOps" approach, in which the deployment and management of servers has become so automated that developers don't need to work with operations personnel at all.
Image source: Shutterstock
6. Serverless computing is related to microservices architecture.
Serverless computing is also closely related to another hot development trend: microservices architecture. With microservices architecture, developers assemble applications out of smaller services that they can build, manage and scale independently. Serverless computing essentially breaks this down to an even smaller level.
However, there's disagreement within the industry about just what constitutes a microservice and what constitutes a function. The distinction between the two is fuzzy, and some vendors use the terms microservices and functions interchangeably.
The important thing to note here is the trend toward viewing applications as a conglomeration of smaller, independent parts rather than as a monolithic whole.
Image source: Iron.io
7. You don't need to learn a new language.
The serverless computing vendors are quick to point out that their FaaS offerings support a wide range of programming languages and frameworks. In general, if a vendor's other cloud computing services support a particular language or tool, its serverless computing probably also supports it.
For developers, this language support adds to the productivity and efficiency that serverless computing offers. Because they won't need to spend a lot of time learning new languages, most developers can get started with serverless computing right away. In fact, some vendors advertise that developers can get up and running with their FaaS products in just minutes.
Image source: Microsoft Azure
8. Serverless computing scales for you.
For organizations experiencing rapid growth, the scalability of serverless computing is one of its most attractive characteristics. Architecting an application so that it will work as well for millions of users as it does for dozens of users is one of the most difficult challenges facing today's developers. Serverless computing eliminates that challenge because each function scales independently without the need for staff to provision additional VMs or instances. If the actual usage of an application ends up being different than what the developers originally expect, it's not a problem because the service automatically provisions additional resources for each function as they are needed.
Image source: IBM Bluemix
9. Serverless computing has some drawbacks.
With all these benefits to serverless computing, you might wonder why everyone doesn't use it. But the approach does have some drawbacks.
First, because serverless computing is very new, it's hard to find experienced staff and tooling to support it. This problem will likely get better with time, but it's an obstacle today.
Second, and more significantly, while serverless computing simplifies some things, it complicates others. Instead of worrying about one big application or a few microservices, staff now have dozens or hundreds of independent functions to think about. The entire ecosystem has become more complex, and it will require new management techniques and processes.
Third, there's also the possibility that enterprises could end up with larger bills than they expect. If they are used to paying for cloud computing upfront, serverless computing can introduce a level of uncertainty that may pose challenges for some organizations.
Image source: Shutterstock
10. You have vendor options for serverless computing.
If you are ready to give serverless computing a try, you have lots of options for vendors. The most well-known FaaS is AWS Lambda, and it's also one of the most mature offerings available. IBM Bluemix offers a serverless computing platform called OpenWhisk, and Microsoft Azure has a service called Azure Functions. Google Cloud Platform's serverless offering is still an alpha release, and it's called Cloud Functions.
In addition to the major cloud vendors, some smaller players are also getting into the serverless business. They include Iron.io, which offers a serverless platform that can run on any cloud, and the less imaginatively named Serverless, which offers a framework that runs on AWS Lambda. In addition, Joyent (now owned by Samsung) offers a serverless service it calls Manta Functions.
If you've been reading 2017 predictions about IT in general and cloud computing in particular, you've probably run across the term "serverless computing." Amazon Web Services (AWS) rolled out the first big serverless computing service — AWS Lambda — back in 2014, but the other major cloud vendors jumped on the bandwagon in 2016. Now this new type of cloud computing seems poised to take off in the coming year.
In fact, Gartner referred to serverless computing in its Top 10 Strategic Technology Trends for 2017. The firm sees serverless as part of the trend toward mesh app and service architecture, and explains, "the mesh app and service architecture (MASA) is a multichannel solution architecture that leverages cloud and serverless computing, containers and microservices as well as APIs and events to deliver modular, flexible and dynamic solutions." But the firm also cautions that this is a long-term trend that will require IT to adopt new tools and new ways of doing things.
What is serverless computing?
In practical terms, serverless computing makes life easier for developers. They don't need to rent servers or virtual machines for their backend code to run on. Instead, a cloud computing provider uses a code execution model that, in effect, add a layer of abstraction over cloud infrastructure, meaning developers don't need to deal with servers, or even virtual machines. This technology is also known as "function as a service."
If this is a new idea for you or you're just not sure what the hype is all about, this slideshow will introduce you to the key concepts and provide an overview of the benefits and drawbacks of serverless computing.