Serverless is Beautiful — Part 1
Why Serverless Architecture ?
Before I answer why serverless architecture, it is critical to understand the history a little bit. Over the last 30 years, the application development has gone through multiple iterations, starting with Monolithic Architecture to Service-Oriented Architecture (SOA) and from SOA to Micro-Service Architecture and from Micro-Service Architecture to Serverless Architecture.
Many things have changed, for instance,
- How we develop software ?
- How we ship software ?
- Where we deploy our software ?
- How we deploy our software ? and so on..
But there are two critical goals which never changed, they are:
- Quality ~ Expecting things will work and will work all the time.
- Agility ~ Ability to ship new features and change our code quickly.
Above diagram compares various architectures. Some of the major benefits of micro-service architectures are,
- Modularized development
- Independent scaling
- Fault isolation
- Smaller team (typically 1–3 engineers)
- Faster development and testing cycle
- Multiple runtime support and so on.
These are some of the factors which is essentially driving increased adoption of serverless architecture as well. In some sense, the serverless adopted many good characteristics of micro-service architecture and made it even better.
Enter:: Function-as-a-service
Functions are “self contained” modules of code that accomplish a specific task. In other words, a “very fine grained compute unit”.
Some of the advantages of function as a service are,
- Easy to deploy: Unlike Micro-service architecture, you don’t have to worry about the infrastructure provisioning, container, VM and network.
- Elastic scale: Underlying infrastructure takes care of automatic scaling.
- Consumption-based billing: pay per invocation
I will dive deep into all these aspects in my future posts; before I wrap up, I want quickly to point out the industry trend.
Year over year, serverless was the top-growing extended cloud service. Hope you find this post useful.