Initially, anyone wanting to build a web application had to own the physical hardware to run a server, which was cumbersome and expensive. With the advent of cloud computing, servers could be rented remotely. However, to account for fluctuations in demand, companies would generally over-purchase and exceed their budgets, while additional paid-for server space would be wasted. Serverless computing has changed all of this, enabling developers to use only what they need and free themselves of the worry of provisioning and maintaining the underlying infrastructure.
What is Serverless Computing?
Serverless computing is a way of delivering backend services on-demand on a flexible pay-as-you-go basis. With serverless, there is no need for developers to worry about the underlying infrastructure; they can write and deploy code freely. As an on-demand service, companies are charged based on the computing power they use, instead of having to reserve and pay for a fixed amount of bandwidth or servers. Of course, while the name suggests that there aren’t physical servers, they are there in the background; it’s just that developers don’t need to be aware of them. All the server space and infrastructure concerns are handled by the vendor.
What Backend Services Can Serverless Computing Provide?
Application development is split into two sides, the frontend and backend. The frontend incorporates the parts of the application that users see and interact with. The backend, on the other hand, includes the server where the application’s files are stored and the database where user data and business logic resides. Most serverless providers offer database and storage services and some also have Function-as-a-Service (FaaS) offerings that enable developers to execute small pieces of code on the network edge. This enables developers to build a modular architecture and create a codebase that is scalable without overspending on maintaining the underlying infrastructure.
The Advantages of Serverless Computing
With serverless architectures, there’s no need to worry about purchasing, provisioning and managing backend servers. In fact, Serverless computing offers several advantages over traditional server-centric or cloud-based infrastructure, such as:
- Reduced Costs – serverless computing is extremely cost-effective and mitigates the risk of developers paying for unused space; developers are only charged for the server space they actually use.
- Improved Scalability – developers don’t have to worry about how they’re going to scale up their code; the vendor manages it all on demand.
- Simplified Code – with FaaS, developers can write simple functions that perform a single purpose and act independently.
- Faster Development – serverless architecture can greatly reduce time to market, simplifying the deployment process and enabling code to be gradually modified.
- Easier Management – with serverless, developers never have to deal with servers and are more freely able to expand and develop their applications.
- Precise Provisioning – there’s no need to project in advance how much server captivity is required; code only runs when backend functions are needed by the application and automatically scales.
- Simpler Updates – to release a new version of an application, there’s no need to upload code or do any backend configuration,g making it easier to update, patch, fix or add new features to an application.
- Reduced Latency – with serverless, code can be run from anywhere and functions can run close to the end user. This means there’s no need for requests to travel long distances, reducing latency.
The Disadvantages of Serverless Computing
Of course, as with any technology, there are some downsides to serverless computing. Serverless isn’t a silver bullet that can solve all the problems developers have with the underlying infrastructure. Some of the main disadvantages that need to be considered when it comes to serverless include:
- Cold Starts – When a particular serverless function hasn’t been called for a while, the provider may shut it down to save energy and avoid over-provisioning. However, the next time a user runs an application that calls that function, the provider needs to spin it up from scratch, increasing latency.
- Testing Difficulties – it’s challenging for developers to replicate the serverless environment to see how code will perform once deployed. What’s more, debugging becomes complicated when there’s no visibility into backend processes and applications are broken into separate functions.
- Security Concerns – as companies don’t have their own discrete physical servers and share machinery with other unknown parties, if not handled properly, this could result in data exposure.
- Vendor Reliance- if one vendor provides all the backend services for an application, the developer becomes reliant and it can make it difficult to switch vendors if different features and workflows are required.
However, a lot of these concerns can be mitigated by looking for the right vendor. Serverless providers that use sandbox functions correctly and have powerful infrastructure can reduce security concerns. Meanwhile, cold starts can be minimised by spinning up functions at the edge.
Should Your Business Use Serverless Computing?
For many developers, serverless computing offers improved scalability, flexibility and speed, all at a reduced cost. Developers who want to speed up time to market and build lightweight, flexible applications can benefit greatly from serverless. In short, serverless architectures can help reduce costs for applications with inconsistent usage and can help developers push some or all of their application functions to end users to reduce latency.
However, as serverless providers charge for the time code is running, applications with long-running processes may not be better in a serverless infrastructure compared to a traditional one. In these cases, it makes sense to use dedicated servers that are self-managed or offered as a service. However, it’s worth noting that serverless is an evolving offering. As more of the drawbacks are addressed by serverless vendors, the technology may be suitable for more use cases.