Serverless to computing is what Uber is to public transport; simple, and hassle free.
If you are a fan of ride sharing apps like Uber or Lyft then you will understand my metaphor.
No more parking tickets. No more waiting in cold outside. You are notified when your ride arrives. Just walk out of car when you reach. You get to ride in cleaner cars. Leave a feedback to rude drivers, and you never ride with them again.
It is even great for drivers as they can choose to work on their own schedules.
What is Serverless computing?
It is a pay per execution model in cloud that is very simple to get started. Cheaper- as you pay when only function is executed, and not when your server is provisioned.
Do we always know how much compute power we need? Pretty much.
Then why go serverless? Because there are times where we may have too many instances running and it can get out of control easily. More instances means more maintenance and monitoring.
Just like having too many credit cards. We are too busy to remember to pay each one of them on due date. But is it advised to have multiple for higher credit score. That 30 percentage rule- remember?
Nanoservices
Tiny services that provide tiny functionality are Nanoservices.
Do we really need Nanoservices? Can’t they be just part of existing Microservices? Yes, maybe-depends.
Do we really need Apple watch? Can’t we just use a iPhone? Yes, maybe-depends.
Nanoservices to Microservices are what Apple watch is to iPhone. Sleek, simple, and convenient.
You may not need to pull your phone out of pocket for checking messages. You may not need your iPhone for tracking your steps. You may actually reject calls directly from watch.
2016 was the year of Microservices. 2017 will be the year of Nanoservices. And consider Serverless architecture as the framework for Nanoservices.
Convenient like Auto-pay
More traffic to your site means more execution and truly auto-scaling. No need to setup scaling parameters for traffic.
Serverless computing is based on Functions as a Service (FaaS) and is great for microservices based applications. It is next best step in IT world after SaaS, IaaS, and PaaS.
What it is not?
How will code run without server if it is serverless?
Obviously the name ‘Serverless’ is little ambiguous. You are not completely server-less yet — your code still executes on a server. However, you are freed from the hassles of provisioning hardware and softwares.
Code can be executed with minimal configuration (DevOps) and/or absolutely no infrastructure overheads.
DevOps is more of a distraction than a hassle. It can be just one less thing to worry about with Serverless computing.
If you are a developer, you worry about your code. If you are manager, you worry about your business. That’s what you do. Sounds more like a GEICO ad?
At the end of the day everyone is focused on what matters the most; Business.
Serverless computing is very convenient for businesses to automate and great for developers.
Vendors
Amazon, Azure, and Google cloud have their interpretations and some start ups are picking on this technology. IoT seems the front runner in serverless consumption. Data processing, and quick api are definitely great for serverless.
- Amazon- Lambda functions.
- Microsoft- Azure functions.
- Google- Cloud functions.
Cloud problems
Going Serverless means a lot to companies and developers who are struggling to keep up with cloud transitions. There is a lot of risks involved in moving to cloud. Security, Skills, Regulatory restrictions, and DevOps are still major issues in successful transition.
Companies have to mitigate and manage risks by various strategies. Such difficulties only slow down the progress of projects and indirectly businesses.
Because of Agile and Cloud, the line between DevOps and Programmers is nearly blurred out. Push for closer feedback loop and faster ’time to market’ is pressurizing IT teams delivery than ever before.
Complete test automation may be too ambitious in legacy applications.
Skill Gap is widening between demand and supply for IT professionals. It is increasingly becoming difficult for teams to keep up with new emerging technologies in cloud.
Use case scenario
Last week, in my current team we were brain storming about running batch data processing jobs that only have single responsibility. These long running jobs have variable input and output parameters.
The fact that we had to have them scaling separately without affecting each other would have required multiple App Service (Azure PaaS).
Many of these data processing functions may not be in regular use a month later.
Provisioning and un-provisioning App Services every time for every new function would obviously be not easy. Hence we started toying around the idea of Serverless functions in Azure.
We only had to provision a single “Function App” in Azure and add all our functions in it. Azure “Consumption Plan” leveraged us to pay per execution and not per server instance.
Limitations
Serverless computing is still a new born baby. We have to wait and see if it grows up to our expectations (Enterprise). We don’t know for sure if we can be completely be serverless yet.
The outlined Application Programming models (APM) are not enough and are demanding more maturity models to go full blown serverless.
IT teams may require more ground work to be Serverless for new applications.
Ain’t no magic bullet
I’m not claiming all cloud pain points could be overcome simply by developing Serverless applications. I would be stupid if i say so. However, it definitely is a good starting point.
By shifting non-essential complexity (infra-config) to cloud; we can focus on essential complexity (Business).