Serverless! Is it worth getting into? Is it the future? Serverless is a hot topic for the developer community in 2018.
Most Serverless development is in the public cloud. The leading public cloud players for Serverless are Amazon, Microsoft and Google. Their competition for cloud supremacy is creating a lot of noise with every new capability that gets offered including Serverless.
So, what is Serverless? Serverless simply means the developer who codes doesnt have to worry about a server that will be running it. After AWS launched Lambda in 2014 the term Serverless started to get popular.
Function as a Service or FaaS is a Serverless architecture. You get computing and memory. Just Load your code and get it executed. Simple?!
You may also need to get some network to load data from and disc space to store results. The VMs are managed by the provider. You get an API to send your code and execute/schedule it. You can also scale across machines and perhaps some massive parallelism in milliseconds. More importantly, You only pay for the cost of the code you execute.
There are substantial cost savings to be enjoyed when using Serverless, as long as it is the right fit for your app.
Serverless is supposed to simplify the development process. It can be an awesome environment for DevOps people. Particularly when there are no heavy app platforms involved.
If you are a product developer Serverless could be great for your R&D. You can develop and test Functions and ensure your algorithms are performing as intended quickly without having to ask for heavy infrastructure to be provisioned every time you make a parameter change.
When I was first getting into the cloud, many years ago, I thought cloud was auto-provisioned, managed and cheaper to run such that I shouldn’t have to worry about anything as a developer. It looks like we are getting closer to that dream.
We have used Serverless/FaaS and Microservices in many projects. Serverless functions are short lived. They have to guarantee the promise of their execution contract much like a good old real time operating system. They are typically a few lines of code and rely on an another service such as the AWS API Gateway for execution guarantee.
Microservices can do much more. It is an architecture where every component is much more small and specific such that a larger system is composed by picking and choosing them. A Serverless function can be consumed by a Microservice.
If your code takes a huge data table, loads it into RAM, does some data manipulation and this takes 10 minutes to run, then a serverless model is not be the best fit for this code.
My preference is to build systems using Microservices and use Serverless as part of it, when it makes sense. Thoughts?