If you have ever wondered what serverless means and why it was built, then you are at the right place, in this article, I would share a bit of:
- what serverless is(a little dive into history),
- and, my favorite part - debunking some myths that has to do with serverless.
What you should know?
Why this article might not be so technical, it requires you to at least have a background knowledge of cloud computing.
Serverless has been gaining increasing interest over time and it seems like a very promising tech. it's not a technology or architecture, serverless is a bunch of solutions that promise great benefits in administering your application e.g. low entry barrier, cost efficiency, high availability and scalability.
Some people claim that serverless is the next stage of evolution in cloud computing.
How true is that?
To know the answer to this, I need to take you back to the era before the great wall of china was built, I'm kidding.
Before the era of the cloud, to build applications, you have to think of so many concepts (e.g. capacity management, installing hardware, managing servers, physical security, software updates, virtualization etc.) and all these distract you from the software development goal itself.
By 2006, Amazon launched Infrastructure as a Service, in which, with just a few clicks and an API request, I can provision a Linux-based server somewhere in North California while eating Jollof rice in my hometown in Nigeria, yeah, it's that easy. Now, all I have to focus on is software provisioning, OS management, scaling etc.
In just a small amount of time, cloud computing became very popular and everyone wanted to hop on the train, from Google and Microsoft creating their own IaaS service to traditional hosting companies also leveraging the cloud, the software development landscape started to change drastically.
Around 2013 things got even better, containers were introduced, let's call it Container as a Service(CaaS). Containers helped DevOps teams to accelerate software development, test and production cycle. This allowed us to package our applications in containers and run them on an orchestration platform like Kubernetes. CaaS reduced the amount of time spent on infrastructure, but not totally we still had to provision infrastructures, manage auto-scaling, monitor and log events etc.
With all the immense benefits the cloud has to offer, serverless took it even further. Serverless was introduced around 2014, which was mostly pioneered by Amazon.
Serverless promise is - you don't have to think about managing infrastructures, just provision your desired infrastructures using FaaS(Function as a Service) i.e. Azure functions and your service provider(i.e. Azure) will take it up from there.
However, while serverless has great benefits, it also has some hurdles, new technologies, tools and architectural patterns to be learnt.
Some companies that currently use serverless are Coca-Cola, Netflix, Codepen, Nordstream etc. Coca-Cola was able to cut the cost of processing vending machine transactions by 99% when they switched to serverless. As I said, it's a promising tech.
Now to my favourite part...
1. Serverless and it's not so serverless tech
Myth: For the language gurus reading this, you should know linguistically, serverless means without servers. Well, that name doesn't tell the full story, it is just like cloud computing when it was first introduced and we asked questions like are there computers or servers in the cloud?
The answer is No, the servers are on the earth but can be accessed from anywhere.
Truth: There are still servers in the background running the backend services. Serverless just means you can focus on your work and let a cloud provider handle the provision of servers and infrastructure that runs seamlessly.
Why was it names serverless then?
Personal opinion, buzzwords like these(cloud, serverless) are more of marketing tactics.
2. It takes more than one click
Myth: Deploy your code and get it running with just one click.
Truth: It takes several processes to get your application to run on a serverless platform. There are technologies you still need to master, configurations and designs you need to make.
Using Azure as a case study. With Azure Functions, you can provision a fully managed compute platform for processing data, integrating systems, and building simple APIs and microservices. These automate administrative tasks from development through to deployment and maintenance.
Azure functions is a file-like manual that tells Azure what services should be provisioned i.e the number of servers, CPU size, Database to be integrated, event handlers or triggers etc.
Serverless reduces a lot of relative friction for the developer in terms of going through required steps that add no direct value to their workflow, like building a container for every new code release or monitoring, and logging.
If you would like me to write an ultimate guide on deploying with serverless or functions, let me know in the comment section.
3. Serverless is suitable for all applications
One major drawback of serverless computing is its non-persistent state or response latency.
Response latency is the time between when a request is stimulated and when a program reacts. In the cloud, serverless computing is not continually running, it gets powered down between requests.
Learn more about serverless response latency and its work-around here.
Those are some myths debunked. Hopefully, now you have a better understanding of what serverless is and its historical background.