Serverless architectures eliminate the need to purchase, provision, and manage backend servers. However, it is important to note that serverless computing is not a solution for everyone.
Experts and visionaries in distributed systems believe serverless technologies are the future of application architecture — the next logical advancement after containers and microservices. And pockets of leading edge companies in industries such as media, travel and finance have already embraced serverless as a means to dramatically reduce operational overhead and streamline the DevOps cycle, while increasing scalability and resiliency.
“The future will be containerized and those containers will run on serverless infrastructure.”
— Brendan Burns, distinguished engineer at Microsoft and guest contributor on The New Stack.
Serverless functions, also often known as Functions as a Service (FaaS), are runtimes which execute applications but do not store data. They are the microservices of microservices, Adron Hall joked in an episode of The New Stack Analysts. And they are called based on an event that happens in the cloud.
In this model, organizations only pay for the resources they use — actual consumption — rather than pre-purchased services based on guesswork. The server management and capacity planning decisions are completely hidden from the developer, thus the term “serverless.” The servers are fully abstracted away. Instead, a cloud provider, like Amazon Web Services (AWS Lambda), Google Cloud (Google Cloud Functions) or Microsoft Azure (Azure Functions) dynamically manages the assignment and distribution of resources.
The benefits of serverless architectures are many. Pay-as-you go services have a cost benefit, but the true value lies in organizational efficiency. Developers spend more time writing code that directly benefits the business and IT spends less time maintaining old infrastructure. And it takes less time for developers to get code into production.
Still, there are many challenges to serverless adoption. Serverless requires a new approach to development and a new set of a tools based on a DevOps culture. Latency and high performance can also become an issue in the cloud, as can monitoring, debugging and security.
The relatively limited ecosystem around serverless technologies, combined with the challenges of operating in the cloud, have led many organizations to approach serverless cautiously and in a phased adoption. Serverless code can be used alongside code deployed in traditional styles, such as a monolith or microservices — which makes it ideal to begin experimenting with for any number of use cases.