You can also watch the video version of this here: https://youtu.be/Z0NLpUYbDBo and https://youtu.be/pVZm5SEz9bw
For me, the most significant benefit of Serverless is that you have near-zero wastage which translates to less environmental impact and cost savings. A server is never going to achieve constant 100% utilisation, nor would you want it to as this would cause a terrible user experience.
In the graphic, the top graph shows the utilisation of a typical single-timezone business application. It increases in the morning as people start working. It peaks during office hours, and then it goes down again in the evening.
If we flip this chart, we get the middle wastage graph. This is the server running that you're paying for and that is using electricity, but nobody is actually using it. This is wasted idle time.
The third graph is a Serverless application. You can see a thin grey line of wastage because there is always some margin, but it is significantly less than a server-based solution.
While losing some control over the underlying services might be a challenge for some, being able to depend on the cloud provider taking responsibility for the stability, availability and security of the infrastructure and software is a massive benefit for many, especially smaller organisations that can’t afford a 24-7 security and operations team.
The reusability of microservices is a great productivity benefit. Organisations that are developing many applications and microservices will build up a library of mini applications over time that can easily be reused. Either by way of a shared platform or by deploying the microservices with new applications. Microservices are independent and not locked into a larger code base, so they are much easier to copy and reuse between different applications.
The key security benefit is that microservices have much better access management compared to a monolithic solution where the entire solution will automatically have access to a sensitive database instead of only the one feature that needs it. Microservices have individual permissions that are specific to the microservice needs. For example, you can have microservices with exclusive access to a particular sensitive database or storage facility, giving you far more fine-grained control over what the individual components of an application can access.
Another productivity benefit of Serverless is around agility and DevOps. Serverless services have been developed over the last few years - with DevOps practices already well established in the industry. Because of this, DevOps has been built in from the start enabling very tight, automated and easy to use integrations and strategies such as zero downtime, canary testing and blue-green deployments. On the agility side, Serverless and Agile methodology are very closely linked. With microservices, you split a large project into smaller chunks, similar to Agile’s user stories. A good target to aim for is a maximum of 1-5 user stories per microservice which gives you an idea of how simple and focused microservices should be.
In terms of project management, the benefit of microservices is that you have multiple smaller, easier to estimate projects instead of one large, unpredictable project. Each one of these microservices can have its own plan, its own budget, its own timeline on one or more developers that are working on that particular microservice. You can do a lot of parallel development with multiple developers working on multiple microservices because each of them is independent and can be independently tested and deployed. You can limit the waiting and really maximise productivity if this is planned well.
Uncontrolled scaling is a challenge, but properly configured services and with limits built into the application where appropriate this can be mitigated, leaving only the benefit of fully managed and very fast automatic scaling to extreme numbers.
Lastly, besides lower operational cost, Serverless applications also have significantly lower maintenance costs because there is no operating system or software to maintain, patch, test and monitor. This kind of maintenance can be very time consuming to do it right, and having it fully managed for you can lead to significant savings over time. Microservices are also temporary; they run, perform their task and are then terminated. So there are no difficulties managing temporary data, caching and other such things that can cause trouble on servers if not managed correctly.
To go deeper on this topic and to read many more related topics about Serverless Architecture please buy the book Serverless - Beyond the buzzword here: serverlessbook.co