What is serverless computing?
Serverless computing is a method of providing backend services on an as-used basis. A Serverless provider allows users to write and deploy code without the hassle of worrying about the underlying infrastructure. A company that gets backend services from a serverless vendor is charged based on their computation and do not have fixed amount of bandwidth or number of servers to work with, as the service is auto-scaling. Please note that although called serverless, physical server are still needed to run this server.
In the early days of the web, anyone who wanted to build a web application had to own the physical hardware required to run a server, which is a cumbersome and expensive undertaking.
Then comes the cloud, where fixed numbers of servers or amounts of server space can be rented remotely. Developers and companies who rent these fixed units of server space generally over-purchased to ensure that a spike in traffic or activity wouldn’t exceed their monthly limits and break their applications. This meant that much of the server space that was paid for usually went to waste.
Serverless computing allows developers to purchase backend services on a flexible ‘pay-as-you-go’ basis, meaning that developers only have to pay for the services they use. This is kind of like switching from a cell phone data plan with a monthly fixed limit, to one that only charges customers for each byte of data that actually gets used.
The term ‘serverless’ is somewhat misleading, as there are still servers providing these backend services, but all of the server space and infrastructure concerns are handled by the vendor. Serverless means that the developers who work for the customer company can essentially do their work without having to worry about the servers.
What are backend services? What’s the difference between frontend and backend?
Web application development is generally split into two realms: the frontend and the backend. The frontend is the part of the application that users see and interact with, such as the visual layout. The backend is the part that the user doesn’t see; this includes the server where the application's files live and the database where user data is persisted.
For example, let’s imagine a website that sells concert tickets. When a user types a request into the browser window, the browser sends a request to the backend server, which responds with the website data. The user will then see the frontend of the website, which will include text, images, and form fields for the user to fill out. The user can then interact with one of the form fields on the frontend to search for their favorite musical act; let’s say it’s Tame Impala. When the user clicks on ‘submit’, this will trigger another request to the backend. The backend code checks its database to see if a performer with this name exists, and if so, when they will be playing next, and how many tickets are available. The backend will then pass that data back to the frontend, and the frontend will display the results in a way that makes sense to the user. Similarly, when the user creates an account and enters financial information to buy the tickets, another back-and-forth communication between the frontend and backend will occur.
What kind of backend services can serverless computing provide?
Most serverless providers offer database and storage services to their customers, and many also have Function-as-a-Service (FaaS) platforms, like Cloudflare Workers. These platforms can execute pieces of code on the edge without storing any data.
What are the advantages of serverless computing?
- Lower costs - Serverless computing is generally very cost-effective, as traditional cloud providers of backend services (server allocation) often result in the consumer paying for unused space or idle computation time.
- Simplified scalability - Developers using serverless architecture don’t have to worry about policies to scale up their code. The serverless vendor handles all of the scaling on demand.
- Simplified backend code - With FaaS, developers only need to create simple functions without worrying about API calls and other server-related complications.
- Quicker turnaround - Serverless architecture can significantly cut time to market. Instead of needing a complicated deploy process to roll out bug fixes and new features, developers can add and modify code on a piecemeal basis.