The Benefits and Disadvantages of Serverless Infrastructure

in serverless •  3 years ago 

There are many reasons behind the rising popularity of Serverless computing: there is much higher scalability, developers get more flexibility, release time is quicker, and most of all, costs are so much lower, since you don’t have to bother about buying servers, or provisioning and managing them. So is Serverless the next big thing in cloud computing? And, specifically, is it for you?

Read on to find out

Where did all the servers go?

To begin with the term ‘Serverless’ is misleading, there are physical servers; it just that they’re hidden from view. This means you, as the developer, don’t have to worry about setting up the infrastructure needed to run your application. Nor do you need to reserve or pay for bandwidth that you don’t need and don’t use. The job of providing the required infrastructure is done by the provider, all you have to do is write the code and deploy it. No worries about scaling, server management, maintenance or monitoring. You can leave it all to the provider.

Benefits of Serverless Computing

Flexibility

Given that Serverless computing can cut costs by up to 70%, it follows that bigger organizations with big cloud bills will naturally benefit the most. But that doesn’t mean smaller businesses and startups should look away. For one thing, Serverless offers enormous flexibility. This is critical to startups who often need to pivot their product or service before they find their sweet spot in the market. In a traditional environment, pivoting would entail re-writing your code, resetting your APIs as per your new functionalities. You might need to change the way your data is stored and even rethink your infrastructure. Serverless allows you to proceed without worrying about provisioning new servers or managing them. You simply write and deploy your changed code and the provider takes it from there.

Time & Cost savings

In addition to provisioning infrastructure, businesses can save on running costs as well. For instance, you won’t need a big DevOps team, as your service provider is already handing the hard-core operations aspect. Serverless frees your developers, giving them the flexibility to innovate and try new ideas without the worry about system admin’s vetoes. With no need to expend effort on provisioning, monitoring and management, your team is free to focus on the creative side of their duties.

With Serverless you only need to pay per actual usage. Quite simply, if you have a service that only is used by your customers during the day; for instance, you don’t have to pay for the time when your application doesn’t run.

Speed

Speed is always a big factor in any computing scenario. With traditional IT Infrastructure, you would need to provision sufficient computing power to ensure your applications run quickly. Serverless shifts this task away from developers and puts it on the providers’ shoulders. You can, with most providers, configure memory as per your functions’ requirements, and pay only for execution time.

Reliability and Availability

Say, you’re a startup with a novel product. You have no way of knowing how well it is going to be received. What if there is a sudden spurt in demand? In a traditional IT setting, you would have to run the risk of over-provisioning just to ensure your servers can meet unanticipated demand. With Serverless, you can go ahead and release your function, without worrying about availability. Autoscaling ensures you will always have the computing muscle you need regardless of the demands placed on your applications.

This is one of the main reasons for businesses like the streaming service Netflix going Serverless.

Serverless Disadvantages

It’s not all roses with Serverless, there are several scenarios where this form of computing just isn’t feasible or cost-effective.

Debugging

If there’s a consistent need to debug code, Serverless is not the best option, as it doesn’t lend itself to replicating its environment so you can see how your code would perform after it is deployed. With no visibility into the backend, and because your application is broken into smaller, discrete functions, the job of debugging is far more complicated.

Security

If security is a big concern—which it majorly is for businesses handling sensitive data—Serverless makes it difficult to vet security, as you don’t have your own individual physical server. At any given time the provider is usually running code for multiple customers on one server; i.e. multi-tenancy.

It’s like many businesses using the same office; performance and security can be massively compromised.

Not for marathoners

Serverless architecture is just not meant for long-running applications. Since providers charge for the actual time the application is running, long-running processes can end up costing significantly more than with a traditional infrastructure.

Not for cold starts

Code in a Serverless environment that ins’t running regularly needs to boot-up when it is requested. When a request is made for code that isn’t used regularly, it is referred to as a cold-start. Like an athlete before a race, it needs a warm up to get into a ready-to-go mode. This can delay response time.

Vendor lock-in

Since your application depends on an external vendor for backend services, you are naturally reliant on the vendor. If for any reason you decide to make a vendor switch it can be difficult to re-set your Serverless architecture, since features and workflows vary from one vendor to another.

Authors get paid when people like you upvote their post.
If you enjoyed what you read here, create your account today and start earning FREE STEEM!