What is Serverless Architecture?
TL;DR: Serverless removes the architecture responsibilities like hardware provisioning, scaling, and maintenance in cloud-based application development.
Serverless (also called Serverless computing) is a way of software development, where the software application is built and run without having to manage servers (hardware). This is more attractive for application developers as it provides a complete abstraction to run an application in a cloud-based environment with all its benefits — primarily on-demand scaling. In this article, let me attempt to answer some of the basic questions.
Birth of Serverless Architecture
Running a cloud-based application (if ‘cloud-based application’ looks fuzzy to you, it is nothing but a software application serving users over the internet), we need to manage some kind of server infrastructure on the internet. This is nothing but the management of physical or virtual server infrastructure, OS, web application, and related tools to run your software. Using a virtual server from a cloud provider such as Amazon/Google/Microsoft does mean the elimination of the physical hardware concerns, but still requires some level of management of the operating system and the web server software processes.
Serverless != ‘No Servers’
Let us be very clear that, all these applications run on SERVER. ‘Serverless’ just describes how developers interact with them. It is more like servers are invisible to developers.
Related to cloud computing?
Yes, It is related. Serverless is one of the models for developing and deploying ‘Cloud computing applications’.
Serverless > FaaS
Function-as-a-service, or FaaS, is a cloud computing service that enables developers to run code or containers in response to specific events or requests, without specifying or managing the infrastructure required to run to code. Top cloud providers have support for this FaaS (AWS Lambda, Google Cloud Functions, Azure Functions).
You could see FaaS being used interchangeably with Serverless in many places, because of the nature of FaaS development (FaaS is possible only with serverless). But I believe the term serverless is more generic and beyond writing code. We have:
- Serverless databases and storage (AWS S3, DynamoDB, RDS)
- Event streaming and messaging (AWS SQS, SNS, Kinesis)
Why is it popular? Data from an Industry survey:
O’Reilly’s survey found that 40 percent of organizations adopted serverless architecture. The main reasons behind the adoption include reduced costs, scalability, developer productivity, and others as shown below. More details on the survey.
Serverless Architecture for you?
Serverless architecture is just one more option for developing and deploying applications. It isn’t perfect. There are a few shortcomings with it like:
- Long-running application inefficiencies: Cost and performance concerns: Long-running and high throughput systems could be costly on Serverless and a dedicated server is more performant.
- Third-party dependency: Serverless architecture requires you to be dependent on the 3rd party (cloud provider — Amazon, Google, Microsoft). You don’t have full control and can’t do much about it.