Serverless? What's this all about?
Serverless computing, or more simply Serverless, is a hot topic in the software architecture world. The “Big Three” cloud vendors—Amazon, Google, and Microsoft—are heavily invested in Serverless, and we’ve seen plenty of books, open-source projects, conferences, and software vendors dedicated to the subject. But what is Serverless, and why is (or isn’t) it worth considering?
OOHH! It most definitely is worth considering, in-fact allow me to explain to you why.
Serverless was first used to describe applications that significantly or fully incorporate third-party, cloud-hosted applications and services, to manage server-side logic and state. Serverless can also mean applications where server-side logic is still written by the application developer, but, unlike traditional architectures, it’s run in stateless compute containers that are event-triggered, ephemeral (may only last for one invocation), and fully managed by a third party.
Okay I get it but can this Serverless thing actually save me money?
Serverless can be more cost-effective than renting or purchasing a fixed quantity of servers, which generally involves significant periods of underutilization or idle time. It can even be more cost-efficient than provisioning an autoscaling group, due to more efficient bin-packing of the underlying machine resources.
This can be described as pay-as-you-go computing or bare-code as you are charged based solely upon the time and memory allocated to run your code; without associated fees for idle time.
Immediate cost benefits are related to the lack of operating costs, including: licenses, installation, dependencies, and personnel cost for maintenance, support, or patching. The lack of personnel cost is an advantage that applies broadly too cloud computing.
Elasticity VS Scalability
In addition, a Serverless architecture means that developers and operators do not need to spend time setting up and tuning autoscaling policies or systems; the cloud provider is responsible for scaling the capacity to the demand. As Google puts it: "from prototype to production to planet-scale."
As cloud native systems inherently scale down as well as up, these systems are known as elastic rather than scalable.
Small teams of developers are able to run code themselves without the dependence upon teams of infrastructure and support engineers; more developers are becoming DevOps skilled and distinctions between being a software developer or hardware engineer are blurring.
What's truly going on behind the scenes?
Now, it's a bit complicated but yet simple, bare with me!
It's (FaaS) Function as a Service, Serverless vendors offer compute runtimes, also known as Function as a Service (FaaS) platforms, which execute application logic but do not store data. Common languages supported by serverless runtimes are Java, Python and PHP. Generally, the functions run under isolation boundaries, such as, Linux containers.
Serverless Function code should have entirely stateless logic, so redundant instances will not cause inconsistencies for customers. Cloud hosting providers usually have many points-of-presence around the globe. This means that the servers in which an application runs are nearest to all possible end users. The cloud hosting provider will redundantly deploy a Serverless Function to data centers around the world, at the same time. This is good for a developer's customers because their client-side requests will be responded to with as little latency as possible. All of the networking logic is implemented by the cloud provider. Cloud hosting providers that offer Serverless Functions use industry standard best practices for automated code deployment. This means that there is no chance of human error breaking a service during deployment. It allows for fast shipment of new code, with little to no downtime for a web product.
What are these FaaS providers I speak of?
Well, truth is, there are many FaaS providers for many different use cases that each have their own individual quirks and personalities associated with them but here are a few:
AWS Lambda
- AWS Lambda is a Serverless, event-driven compute service that lets you run code for virtually any type of application or backend service without provisioning or managing servers. You can trigger Lambda from over 200 AWS services and software as a service (SaaS) applications, and only pay for what you use.
Using Lambda functions is ideal in scenarios where on-demand compute is required e.g. provide compute for operations like file processing like file conversion.
Azure Functions
- Azure Functions built by Microsoft Azure is a Serverless solution that allows you to write less code, maintain less infrastructure, and save on costs. Instead of worrying about deploying and maintaining servers, the cloud infrastructure provides all the up-to-date resources needed to keep your applications running.
Cloud Functions
- Cloud Functions developed by Google Cloud Platform (GCP), Cloud Functions has a simple and intuitive developer experience. Just write your code and let Google Cloud handle the operational infrastructure. Develop faster by writing and running small code snippets that respond to events. Streamline challenging orchestration problems by connecting Google Cloud products to one another or third party services using events.
Conclusion
Identify what you are trying to accomplish and what is the given criteria that needs to be met. Answering these questions is the simplest way to distinguish between the different Function as a Service (FaaS) vendors to ultimately find the proper solution for your specific use case.
My beginners recommendation to learning Serverless computing is this crash course by FreeCodeCamp: Serverless Functions Course - Create a Serverless API
My Intermediate - Advanced recommendation would be this 7-hour course by A Cloud Guru called Building a Full-Stack Serverless Application on AWS
Lastly, Serverless is best learnt through doing, so pick a FaaS and work with one, for beginners I recommend AWS Lambda, you can write code using Java, Go, PowerShell, Node.js, C#, Python, and Ruby. It takes time to learn it especially if you are new to cloud and AWS but with a bit of practice, you'll be riding the Serverless bicycle easily.
Thanks for tuning in and have a great day!
Top comments (3)
Great write up you explained the subject well.
Thank you! I'm glad you liked it!
Looking forward to seeing more of it on here.