Serverless; the next big thing
The technology that will change how we build backend systems forever
TL;DR: Serverless is a new approach to backend software development, where new systems can be created out of existing third-party services and tools using lambda functions to glue them together. This will have a huge impact in how we build software.
Serverless is an evolution of the microservices concept. In a microservices architecture, a big software system is broken into many independent smaller services that work together to bring value. In a Serverless system, instead of having a full project for each microservice where you group code with similar functionality, the backend functionality is split into a number of independent lambda functions that solve a single use case each.
Major cloud providers like Amazon Web Services, Microsoft Azure, or Google Cloud Platform have Functions as a Service (FaaS) products where you can deploy those smaller chunks of code. On those services, you’re charged exclusively for the execution time of your code, as opposed to paying for your own reserved server instances, whether or not the servers are idle. A system using lambda functions is, on average, orders of magnitude cheaper than a conventional system.
In addition to the cost reduction, lambda functions enable virtually unlimited scalability. As the cloud provider creates a fresh new function instance for each request, a Serverless system has no limits regarding the number of users it can serve. It is as if each user had their own server.
In addition to that, going serverless does not require you to drop your existing code and start from scratch. You can build new features for a legacy app on top of lambda functions and keep the working code running. It is a technology that you can try with reasonably low risk.
For all these reasons, the Serverless approach is being used more and more in the industry, especially by companies with high-traffic needs like Netflix, Nordstrom or The Coca-Cola Company. Concurrently, the number of developers interested in Serverless keeps growing.
From the developer perspective, developing a serverless application is very different than developing a conventional application. It is easy to start with no extra knowledge, but it is also easy to take the wrong path if you approach your lambda functions as if they were simply smaller microservices. Deeper study, training, and hiring external expertise should be considered before initiating a Serverless system. Serverless applications match much better with event-driven approaches, which use different patterns and techniques than the typical Node or Java application.
We think that Serverless will play a huge role in the future of backend programming because it allows companies to focus on code with business value and forget operations and glue code concerns. We see this as the difference between building your own chair from scratch, cutting down a tree and doing every single step yourself, and just going to a furniture store and buying a chair. The chair you build yourself might be prettier if you have the skills, but a beautiful hand-crafted chair might not be that valuable to your business if it has nothing to do with chairs. If you only need a chair for your customers to sit on, the time and effort you spent building the chair are just distractions from assisting your customers properly.
We understand that many companies are still reluctant to put their code in the hands of a cloud provider or let them manage security and scalability for them, but the benefits are so huge and the expertise of the cloud providers, in terms of security and operations, is so vast that we’re confident that eventually most companies will follow this approach and stop managing their own servers.
Do you need help with stepping into Serverless? Contact us!