The definition of cloud computing may be nebulous, but its promise is clear. Instead of filling a warehouse with servers and paying people to manage them, a company can pay a cloud computing provider to provide computing resources on demand and pay only for what it actually uses.
This prospect lured organizations ranging from startups to massive corporations to stodgy government agencies onto cloud offerings from Amazon, Google, Microsoft, and others. Those now well-established services might save companies from buying and managing physical servers, but they don’t quite deliver on the dream of paying only for what you use.
Services like Amazon’s EC2 still require you to select—and pay for—a specific amount of computing resources, including memory and network capacity. You can dial those resources up or down as demand for your web application changes. But that might still leave you with less computing power than you need for a sudden or unanticipated spike in traffic, leaving your app less responsive to users. So, many cloud customers agree to pay for more resources than they routinely need.
Worse, these virtual servers still require customers to do a lot of real maintenance, says Donald F. Ferguson, the cofounder and CTO of video-streaming company Seeka TV and a professor of computer science at Columbia University. For example, customers still need to install security updates, and test them to make sure they don’t break existing features. Ferguson, who spent decades as a software architect for companies including Dell and Microsoft and helped create IBM’s application server WebSphere, says this consumes more time than you might think. “For most projects, we’d spend 20 percent of our time managing cloud environments,” he says.
That’s why Seeka TV relies on a burgeoning approach to cloud computing that eliminates virtual servers. The idea goes by the paradoxical name of “serverless computing.” So-called “serverless” services do actually rely on servers. The difference is that users don’t manage the servers. Instead of renting and managing virtual servers, simply upload the code you want to run, or the data you want to store, and pay for the resources you actually use. For the developer, the server is practically invisible.
Ferguson says about 99 percent of Seeka TV’s code runs on serverless platforms. That’s reduced the time spent managing the cloud environment to practically zero, he says.
It’s not just startups using serverless. Motorola Solutions uses serverless computing for some of its work with law enforcement and public safety customers, says executive Andrew Sinclair. “Serverless functions allow us to spend more time on developing new features and less time on provisioning and managing servers,” he says.
Cloud management company Cloudability saw a nearly seven-fold increase in serverless usage among its customers in the last quarter of 2017, compared with the prior quarter, according to a report the company released earlier this year. “Everybody knows about serverless, and everyone is thinking about where to use it,” says Craig Lowery, research director at industry analysis firm Gartner.
‘Function as a Service’
Serverless computing has been around for years, but only recently has it become viable to create entire applications based on it. Over the past decade, programmers have shifted more of the code for running applications from servers to either your phone or your browser. Many developers would prefer not to maintain servers for the few things that can’t run on the user’s device, like data storage and password authentication. The earliest serverless services, which were designed to handle specific tasks, helped developers outsource these sorts of things. Amazon’s storage service S3, for example, allows you to upload data without worrying about how many servers it’s stored on, and only pay for what you use. Twilio offers a service that lets developers use its computing infrastructure to send text messages to users, without installing or configuring specific servers. A newer service called Auth0 handles tasks like password verification.
The first wave of serverless computing proved popular with app developers, but developers still needed traditional servers for a lot of their custom code. That changed in 2014 with the launch of “function-as-a-service” offerings like Hook.io and Amazon Lambda, which enable developers to upload small chunks of their own code, and pay only for the computing resources that code consumes. That made it possible for companies like Seeka TV to rely almost exclusively on serverless computing.
Relying on serverless computing presents challenges. For one, developers must write software differently than if they planned to run an application on a desktop or traditional cloud service. And some services, including Amazon Lambda limit the size of a code package, meaning developers of large applications must divide them into pieces. That’s complicated for existing applications, so serverless is more suited for creating new applications that are built with this sort of modularity in mind.
Performance can also be an issue for serverless computing. A traditional, server-based application typically runs non-stop, ready to answer any query from a user. But services like Lambda stop running code that isn’t in use and only load it back into memory when it’s needed. That can slow response time for users. Additional delays develop as different serverless components communicate with one another over a network. Sinclair says Motorola Solutions shies away from serverless computing for applications that need quick responses after lengthy periods of inactivity.
That means there will always be a market for more conventional cloud computing services, says Mango Capital founder Robin Vasan, who has invested both in serverless companies like Netlify and companies that offer tools for managing more traditional cloud services. “I think serverless is the future, but it’s not the future for everything,” he says. “Not every function should live in a serverless framework.”
Ferguson admits that serverless computing isn’t right for every problem, but says the sorts of performance issues that Vasan describes are rarely a problem for Seeka TV. Its code is used often enough that Amazon Lambda rarely, if ever, has to shut it down.
Meanwhile, an ecosystem of tools is emerging to help with the challenges of serverless computing. Motorola Solutions uses a service called Twistlock to monitor security of its serverless code, for example.
Lowery and Ferguson liken serverless computing today to “object-oriented programming,” which made it easier for software developers to reuse code, in the 1980s. It took time for developers to learn the new approach, and for the tools and other resources to mature. By the 1990s, though, it became the default, but not exclusive, approach to programming. They think serverless will follow a similar path.
“Any application that can be made serverless, will be made serverless,” Lowery says. “If it won’t work as serverless, then you’d look at other options.”
Ferguson’s students are already there. He still teaches students to build software using methods other than serverless computing. “But it feels like I’m punishing the students,” he says. “Because serverless is so much easier.”
More Great WIRED Stories