Serverless is for sure trending topic in the IT world, is just great to use it, show it and talk about it; you can have very useful things up and running in just minutes!
In my work I need to build demos and POCs, for this tasks Serverless services are just perfect; honestly I don’t want to worry about servers, operating system, networking and other things, I just want to focus on what’s important and use my time to make valuable things so I love to play around with any service from Cloud Providers with the ‘Serverless’ tag.
Serverless is more than that but before going deeper let’s back to basics with a typical definition that you can find in Wikipedia:
Serverless computing is a cloud-computing execution model in which the cloud provider runs the server, and dynamically manages the allocation of machine resources.
Or as Simon Wardley said:
“Serverless is an event-driven, utility-based, stateless, code execution environment in which you write code and consume services.”
From here there are two things that I would like to talk about:
Can live Serverless outside a Cloud provider?
Of course! There are going to be servers in a private cloud or on-premise environment but it’s all about your perception; you, as part of a development team, can have a ‘Serverless’ experience but your Ops or Platform team will need to manage your environment. This can work but maybe you are going out of the Serverless concept and going into infrastructure world, as an example you can have Serverless on-premise with:
- Pivotal Cloud Foundry with FaaS flavor (Pivotal Function Service).
- Anthos from Google Cloud.
- Knative or Kubeless on top of your Kubernetes cluster.
Is Serverless only about compute?
No! Of course FaaS (Function as a Server) (Lambda, Azure Functions, Cloud Functions, etc.) and CaaS (Container as a Service) (Fargate, Cloud Run, etc.) are a big piece of the cake but you can design an entire architecture without taking care about servers, you can use DBaaS (Database as a Service) (DynamoDB, Cloud Firestore, Azure Cosmos DB, etc.), SaaS (Storage as a Service)(Amazon S3, Azure Blob storage, Cloud Storage, etc.) and many others.
I’m agree with Rachel Stephens in her article ‘Serverless: More Than Just Functions’:
Serverless means managed services that scale to zero.
Having a FaaS environment is cool because you only have to care about your code but having an entire application backend or IoT system without care about the VMs where is running or the operating system that is using is just awesome!
Let’s continue! Why Serverless is more than fancy tech?
The best way to see Serverless is as a production ready tool or a set o production ready tools, a very powerful set with awesome benefits:
- Minimum maintenance: Just forget about updating/managing operating systems and use that time to design and develop new cool software.
- Inherent High availability (HA) and Disaster Recovery (DR) in the model with no extra effort or cost so your users can use your software anytime.
- Elastic scaling: Forget about defining and monitoring auto-scaling rules, each action or request is automatically analyzed and scaled. It doesn’t matter if you have an idea or you already have millions of users, just let it scale.
- Super fast provisioning: Do you want to run a container? Forget about clusters, nodes and VMs, just set an image and you will have your container running in 1 or 2 seconds with any CaaS service. Do you want to store a document? Forget about storage servers, backups and everything, just upload your document and that’s all.
- Pay per use: This is something obvious when talking about Cloud but Serverless allows you to scale to zero and go a step forward because you don’t even need to worry about per month or per hour billing, just worry about how many users will use your software and how many actions will they perform.
- Increase your teams performance: All the previous benefits give time to your teams so they can focus on your business but in addition to that: tech teams are happy to work with cool tech, you increase performance increasing motivation.
- It’s cheaper (if it’s well done): Yes, it’s true! is the same situation as ‘Cloud’ because if you want to migrate your data center without transforming it, you probably will not save money; therefore, if you want to migrate your software “as is” and consume Serverless services without any transformation, you probably will not see any savings.
That’s great! but exactly when can I use Serverless?
Basically you can insert Serverless pieces in any architecture if:
- It makes sense: We can’t forget that Serverless is a tool so we can use it when we need it and don’t just because is something fresh and cool.
- You are able to: You can use Serverless if you can consume Public Cloud services or if you can have a private cloud or on-premise environment for FaaS.
- You know how to do it: Isn’t obvious? If you are going to a Serverless architecture possibly you’ll need a mindset change, remember that you will pay for requests and a combination of time and used resources so you need systems designed with that in mind, this systems needs to be Event Driven and fully optimized to avoid extra cost or fall into some platforms limits that can stop your business.
Conclusions and personal thoughts!
Did I mention that I love Serverless? I really think it’s a very big thing and is already here but I’ll say the same that I said years ago about Cloud (I love Cloud too): This is not about ‘Serverless always’, this is about knowing Serverless, knowing how to use it and use it as a tool when we need it, I’m pretty sure that in the new software era those who design and develop new applications and features will find a use case where to implement it because it has really great benefits and will have much more in the future.