While Serverless offer many advantages for the developers, it also imposes some constraints and challenges. Some of the architectural constraints imposed by the Serverless abstraction limits the type of applications that can be deployed on Serverless platforms. See this post about the difference between Microservices and Serverless Functions to understand where these two different architectures are applicable. In this post, we will talk about some of the challenges developers face while using Serverless platforms and how they can be mitigated.
Higher levels of abstraction always impose constraints and pose challenges for developers. This is the price they pay for avoiding any operational overhead that comes with deploying applications on virtual machines or containers. Serverless provided a developer level abstraction so that they can focus on on their code and application dependencies than worry about how to encapsulate the code in container and deploy them. This advantage comes with some challenges:
- One of the biggest challenge mentioned in the tech blogs and media for Serverless is the vendor lock-in risks. This is overblown because the lock-in risks exists in other platforms including containers and virtual machines. When you use a cloud provider for your application dependencies, there is a lock-in risk. Instead of worrying about the lock-in, one should do a cost benefit analysis of the advantage you get with the serverless platforms and the cost if you want to move to a different platform or provider. Since serverless functions and microservices are small chunks of code, the cost of lock-in is minimal compared to the other advantages
- Loss of control is touted as another challenge for serverless platforms. Any time you use an abstraction layer that abstracts away the complexities underneath, there will be some loss of control. In fact, even when you use the higher level programming languages instead of assembly language, you lose control. But this loss in control is insignificant compared to the productivity benefits of the higher level abstraction and the loss of control can be mitigated to some extent. The same logic applies in the case of using a higher level abstraction like Serverless compared to running virtual machines. The productivity advantage you get, the cost savings you get and the absence of operational overhead are all significant compared to the impact of loss of control
- Security is often quoted as one of the challenges for Serverless. The argument depends on the fact that with Serverless, you lose control of the security perimeter of your IT environment and it becomes very difficult to implement the organizational policies. This is again more of an misunderstanding than a challenge. Usually, cloud providers hire the best security minds to secure their infrastructure. You can ensure that their security policies meet your needs through service contracts. Your policies should take into account the service contract you have with the cloud provider
- Another challenge often cited is the architectural complexity. Yes, using a componentized architectural model like Microservices and Serverless Functions do add some architectural complexity at the application level but that is the price you pay for other advantages you get with a higher order abstraction. However, there are modern tools like service mesh which could mitigate some of these challenges
- Many people think observability is a challenge with Serverless platforms. It is either a case of misunderstanding or a complete FUD. There are modern tools available to monitor and log with Serverless platforms. in fact, Newer Serverless platforms like Catalyst offer integrated monitoring and logging, making it very easy for developers
- In some platforms, cold start is a problem. There are workarounds to overcome the cold start problem. More importantly, many modern Serverless platforms don’t impose this constraint on the developers
- Cost overrun could be an issue. Serverless is very cost efficient if you use it properly. However, you could run up your bill with AWS Lambda if you don’t plan and architect your application properly. But, newer platforms like Catalyst and few others give a much simpler pricing model which also includes the other services needed for your application. This helps users avoid users from the cloud cost shock
There are some constraints that come with the higher level abstraction like Serverless but users can easily mitigate them and take advantage of the benefits offered by such platforms. Clearly, there is quite a bit of FUD about Serverless platforms and we hope this post debunks some of them.