Serverless computing has the following advantages and disadvantages:
Advantages:
- It is cost-effective.
- The operations on serverless computing are simplified.
- Serverless computing helps boost productivity.
- It offers scaling options.
- It involves zero server management.
Disadvantages:
- Serverless code can cause response latency.
- It is not ideal for high-computing operations because of resource limitations.
- For serverless computing, the responsibility of security comes under the service company and not the consumer, which might be more vulnerable.
- Debugging serverless code is a bit more challenging.
Pro: you don’t need to think about servers anymore.
Con: you now need to think about new things that you didn’t need to think about before!
In all seriousness, I am a serverless fan and use them exclusively. But like all things in software architecture, every new abstraction solves lower level problems and introduces a new set of higher level problems. This is a good thing because it moves you in an exponential improvement cycle where you achieve more with less but don’t be fooled into thinking that it is a silver bullet.
With serverless technology, you need to fit everything into an event-based, short-lived execution and stateless mindset. You need to leverage external storage (e.g. DynamoDb) and complement with step functions for more complex, long-lived state-based workloads (if you use AWS). You need to worry about cold-starts and sharing the same lambdas for multiple endpoints to combat this problem.
If you don’t go against the grain, serverless is a great piece of technology, scales very well, won’t break down under high-load and is extremely cheap to use.