Function as a service, or serverless computing, aims to unshackle developers from the work of provisioning and managing servers. What role will it play in IT's quest for agility?
Many developers at Expedia, the online travel giant, can disregard the need to provision servers when releasing new code. They can dismiss the need to manage and maintain servers as well.
Instead, they can simply focus on their code, releasing it when their work is done without thinking about the technology stack that will run it.
"All you're doing is writing your software code and then you're packaging it and you're letting someone else worry about whether the environment is ready for you," explained Kuldeep Chowhan, a principal engineer at Expedia.
Some may dismiss this as a return to siloed practices, back before the days of DevOps when development and operations worked separately.
But coders at Expedia and a growing number of companies are embracing function as a service -- also known as serverless computing -- as the next evolution in cloud computing, moving away from the need to spin up servers as they release new functionality for apps and thus becoming more agile and responsive to changing business needs in the process.
CIOs, analysts said, should now consider where they can adopt serverless computing to bring agility, speed, scalability and cost benefits to their enterprise IT departments.
"If I'm developing software, I don't care about the machine it's running on. I care about my ideas and getting it to the users as fast as possible and as cheap as possible. That's what serverless offers by giving me a platform that can take software code straight into the servers and provide it then to my end users," said Karoly Sepsy, a DevOps consultant with consulting firm Contino.
Function as a service/serverless computing (also known as serverless architecture) is an event-driven compute service offered by cloud providers which executes the code, or function, only when needed.
"Serverless is the next step in cloud IaaS, making it easier to scale [and] take advantage of more complex automation areas -- all without having to administer servers and without having to pay for server capacity when not using them," said Holger Mueller, principal analyst and vice president with Constellation Research.
Vendors in this space include AWS Lambda (the first on the market, introduced in 2014), Google Cloud Functions, IBM OpenWhisk and Microsoft Azure Functions.
Serverless computing vs. PaaS, IaaS
Function as a service/serverless computing differs from cloud computing in a few key ways, and those differences are what produce its benefits as well as the challenges associated with using it.
When using serverless computing, coders upload code snippets packaged as a function that carries out a specific task. The code only runs when triggered by an event. But while the coder is responsible for the code itself, the service provider manages the compute stack that runs it; the provider automatically provisions the compute and storage resources needed for that function.
Users (generally enterprise IT departments) then are billed on a pay-per-use basis, determined by the number of requests served and the compute time needed to run the code, metered in increments of 100 milliseconds. On the other hand, if the code is never triggered, the user is never billed.
Serverless computing differs from other cloud services, such as Infrastructure as a Service and Platform as a Service, in that under those cloud versions, users must spin up virtual machines for their applications and also deploy codebase as an entire application.
"With function as a service, the infrastructure is completely hidden from the consumer, and it's event-driven, so your function can run when it's required to run and not at other times," Sepsy said.
Those distinctions matter, he and other analysts said.
Expedia: $550 per month for 2.3 billion computations
One of the biggest benefits with serverless computing, cited by users and analysts, is the reduced cost that comes for paying only when the code runs.
"You can get away with using less compute capacity for your systems," Sepsy says.
Expedia, for instance, paid only $550 a month for 2.3 billion computations in AWS Lambda in December, Chowhan said, explaining that it was multiples less than what the company would have paid with a traditional cloud deployment of the code.
Scalability is another cited benefit. "You can serve extreme spikes in traffic," Sepsy said.
Function as a service also helps users achieve faster speed to market with their code.
"You're only writing the actual function code that runs. If you don't have to spend the effort on creating and maintaining infrastructure automation, you don't have to write the code to control the infrastructure, you don't have to worry about running containers or virtual machines, so you can move faster," said Donnie Berkholz, research director for development, DevOps and IT Ops at 451 Research.
Serverless computing won't work well in some circumstances, though, and it does present challenges for enterprises looking to use it.
For starters, not all programs work well in function as a service, analysts and consultants said. Enterprise IT leaders would likely find it hard to justify, at least at the start, breaking down monolithic applications into functions.
Also, extremely long-running jobs and highly parallel jobs that require a lot of communication between them while they're running aren't good candidates for use with this technology, Berkholz said. Nor are functions where there's a great deal of data transfer between public and on-premises systems.
"They won't work well for cost reasons or responsiveness," he said.
Analysts and consultants also noted some challenges and limitations that users will have to consider if moving to function as a service.
First, organizations need to remember that function as a service vendors have certain parameters, particularly around the languages used, noted Jordan Taylor, a DevOps practitioner with Contino. Lambda, for instance, currently only supports Node.js, Java, C# and Python.
Companies might also be limited in their ability to move to function as a service if don't have the right skills or practices to fit with this new way of working.
"You could have the most perfect piece of technology, but if it's not with the right workflow or technical configuration or process, it's not going to work," Taylor said.
To that point, Chowhan said IT will need to develop a self-service capability for coders to deploy. "It's something critical for the enterprise [to be successful]," he said.
Additionally, Berkholz said users will have to learn to effectively manage the greater numbers in their software stack if moving to function as a service.
"To know what's there, so you can [for example] understand how secure it is and whether there are updates, enterprise IT will have to manage it differently. A lot of the [management] software today works with that at a small scale," he said.
"But as you grow with FaaS [function as a service], you could go from [managing] one monolithic application with 1 million lines of codes to [managing] bits of 200 lines of codes in functions – that's 5,000 functions."