The last post provided readers with a blog post from Marcel Kolny at Amazon that discusses the significant improvements made to Prime Video’s audio-video monitoring service, which resulted in several benefits, including a 90% reduction in costs. Utilizing the cloud, streamlining an existing container orchestration platform, implementing robust data processing pipelines, and using machine learning for anomaly detection allowed for enhancements to video streaming quality. As a result, Prime Video can now efficiently handle the increased demand for video streaming while maintaining high-quality user experiences. The blog has understandably raised questions about whether containerization and serverless architectures deliver benefits beyond the monolith.
Let us define the naysayer here as someone who is skeptical of the microservices and serverless approach.
Here are some arguments in favor of the naysayer’s point of view:
- Microservices can be complex and difficult to manage.
- Serverless computing can be difficult to debug and troubleshoot.
- Both microservices and serverless computing can be more expensive than traditional monolithic architectures.
- Both microservices and serverless computing can require more specialized skills and expertise to implement and maintain.
In addition to these arguments, it is also worth noting that very experienced software engineers such as David Heinmeir Hanson, who has a deep understanding of the challenges of building and maintaining large-scale software systems, fall into the naysayer camp. His blog post (https://world.hey.com/dhh/even-amazon-can-t-make-sense-of-serverless-or-microservices-59625580) is based on his own personal experience and observations, and it is worth taking seriously.
But on the other hand…
The critics seem to generalize their views based on just one of potentially tens of thousands of applications at Amazon. They’re are a bit too critical of microservices and serverless computing. While critics like DHH make some valid points, they overstate the challenges of these architectures.
For example, DHH argues that microservices are often touted as a way to improve scalability and flexibility, but that in practice they can often lead to increased complexity and cost. This is true, but it’s important to remember that microservices are not a silver bullet. They can be a great way to improve scalability and flexibility, but they’re not the right solution for every project.
Similarly, DHH argues that serverless computing is not a silver bullet and that it can be difficult to manage and debug serverless applications. This is also true, but it’s important to remember that serverless computing is still a relatively new technology. As the technology matures, I expect that the challenges of managing and debugging serverless applications will decrease.
Overall, I think all of these discussions are valid and valuable contributions to the discussion about microservices and serverless computing.
My views
Of course, there are also arguments in favor of microservices and serverless computing. However, it is important to weigh the pros and cons carefully before making a decision about which architecture is right for your project.
Ultimately, the best way to decide whether to use microservices or serverless computing is to consider your specific needs and requirements. If you are looking for a scalable and flexible architecture that can be easily adapted to changing requirements, then microservices may be a good option. However, if you are looking for an architecture that is easy to manage and debug, then a monolithic architecture may be a better choice. It is a “horses for courses” strategy.
Microservices and serverless computing can be powerful tools, but they’re not the right solution for every project. It’s important to carefully consider your options before choosing a microservices or serverless architecture.
Featured Image by Pexels from Pixabay