Serverless computing is a fully third-party managed cloud computing service, where the cloud service provider actively manages the allocation of computing infrastructure. Since serverless architectures are event-driven, they are scalable and only utilize resources when a specific function or event occurs.
The Misnomer: Why call it Serverless?
Contrary to its name, serverless computing is not really server-less, as your workloads will be running in a physical server somewhere in the world. It should have been called Dynamic Server Allocation Computing, but that doesn’t sound as attractive as Serverless Computing.
Serverless Computing may have derived its name as the servers remain invisible to administrators because they are dynamically allocated by the cloud provider, on demand.
Why Serverless Computing?
Serverless Computing increases efficiency by freeing up developers from managing and operating servers.
“Serverless Computing eliminates infrastructure management tasks such as server or cluster provisioning, patching, operating system maintenance, and capacity provisioning.” – AWS
Even when you are running workloads in the cloud, you are still passive-active managing your infrastructure. You need to rent your server, which will have its own specifications, and then you need to install your preferred Operating System and other applications and so on.
When you serverless, all these activities are managed by the cloud service provider and you only pay for the time your code is
The Evolution of Serverless Computing
Serverless Computing is a direct result of the persistent human need to improve efficiency.
From a cloud service provider point of view, the more work they can take away from their customer the fatter their paycheck will be. From a customer point of view, shifting infrastructure management tasks from in-house to the third party free up valuable resource time.
The infrastructure layer has swiftly transitioned from physical servers to virtual machines to containers and then to serverless .
The growth of cloud expanded our utilization of physical servers through virtual machines. Then came microservices and containers which further improved utilization and efficiency. Now Serverless, has taken computing to the next level by adding the ability to scale up infrastructure at speeds that was never possible before.
It is easy to get confused with the scalability offered by Cloud Servers and Serverless. Let’s look at few examples do understand the impact of serverless computing.
Google Cloud: US-Central 1 – Standard Machine Pricing
|Machine type||Virtual CPUs||Memory||Price (USD)||Preemptible price (USD)|
For latest details please check Google/Compute/Pricing
As you can see from the table above, increasing your CPU’s memory from 3.75 GB to 30GB will be swift, thanks to the cloud, but the cost increases by 8 fold. Since you are effectively renting the stated
Cloud made scaling compute power easy, but it did very little to adjust that power/infrastructure on demand.
Scaling remained a
This encouraged companies to opt for higher than required capacity, as no one wants a traffic spike to break their system, wasting resources and precious dollars in the process. Serverless was designed to attack this inefficiency by actively managing infrastructure resources on demand.
What are the advantages of Serverless computing?
Serverless architecture has a number of advantages over traditional server-centric architecture. For businesses, Serverless Computing offers increased scalability at reduced cost. Here is small list of benefits.
No Infrastructure Management: Serverless Computing allows you to deploy and execute your code without worrying about the underlying infrastructure.
Increase Productivity: Allows businesses to downsize or move resources who manage servers and releated infrastructure.
Lower costs – On-demand infrastructure scaling allows you to pay only for what you use. No need to pay for unused capacity or idle compute time.
Simplified scalability – As a fully managed third-party service, scaling is highly automated and is done in near real-time.
Automated High Availablity – According to Amazon Web Services, one of the top cloud computing vendor, “Serverless provides built-in availability and fault tolerance. You don’t need to architect for these capabilities since the services running the application provide them by default”.
Faster turnaround – As dev teams are not worried about infrastructure management they can quickly deploy their code. “While an initial IaaS deployment can take hours or days, a typical serverless application can be deployed to an established account for the first time within minutes. Subsequent uses of the same function can happen within milliseconds, says Deloitte”
Disadvantages of Serverless Computing:
However, serverless computing has its own disadvantages and it may not be suitable for all types of businesses.
Vendor Lock-In: This is the biggest concern that is holding back adoption of Serverless Computing. Every cloud service provider offers their own version of serverless computing and it’s not
The code has to be rewritten, which means you will have to carefully plan your complex migration process.
“Moving among cloud vendors is not as difficult as it used to be. An increasing number of third-party companies are now offering cloud orchestration services to help isolate customers’ reliance on individual providers”, says Deloitte. “As part of that service, orchestration vendors provide an abstraction of the customer’s cloud provider, allowing serverless customers to use a third-party orchestration layer with its own set of APIs not specific to the cloud provider. “
Specialized Expertise Needed: Deployment and debugging cannot be done the same way it’s done in the current server-centric model. Serverless is a completely new model of computing and finding expert talent to work in these specialized environments might be difficult.
Who should use a serverless architecture?
If you are in a hurry: Dev Teams that want to reduce their go-to-market time should consider serverless computing.
If your application is lightweight: If your application is not a highly complex one and if you are in the process of testing a small feature addition to your application, Serverless computing can help you launch quicker and cheaper. You can always expand it in the future.
If your traffic is seasonal: Companies that reduce their infrastructure cost by moving their applications that see highly seasonal traffic or in-consistent usage to serverless. Why keep paying for additional capacity when a managed service can take care of traffic surges.
Reduce Latency: Developers can move parts of their applications that sit closer to the end user by moving them to serverless architecture. This will not only reduce the load but will also reduce latency. Get the
Serverless Computing Functions Offered by Hyperscale Cloud Providers
Google Cloud Platform: Google CloudFunction
IBM: IBM Cloud Functions
Microsoft: Azure Functions
Amazon Web Services: AWS Lambda
The advantages of Serverless Computing such as increased productivity, quicker deployment time, automated scaling and lower costs do outweigh some of the disadvantages.
Over the long term, as more and more companies transition to the cloud, the multi-cloud tenancy will become easier, which in turn will reduce the operational risks of migrating serverless workloads from one vendor to another.
Finding the right talent will remain the biggest issue, especially for small to medium scale enterprises. But if you have a strong dev team in hand, then you must be running at least some workloads using serverless architecture.
Start small and build into it. Start with the single cloud vendor and transition to multi-vendor. Check out our list of Top 10 Cloud Computing Providers of 2018. The top 5 offer Serverless Computing Functions.