Why did Amazon Prime move from Microservices to Monilith?
As I recently delved into the world of serverless architectures, a fascinating case caught my attention. Amazon Prime Video, the popular streaming service, generated quite a buzz on social media when they shared their experience transitioning from a serverless architecture to a monolithic one for their monitoring service. Surprisingly, this shift resulted in an astounding 90% reduction in costs.
Let’s explore the details behind this decision…
Monitoring Quality at Scale: To ensure the quality of thousands of live streams in real-time, Prime Video relies on a robust monitoring tool. This tool detects quality issues such as block corruption, video freezes, and sync problems. The monitoring process involves three critical steps: media converter, defect detector, and real-time notification.
The Initial Architecture: Initially, Prime Video built its service using a distributed system comprising AWS Step Functions and Lambda, allowing for rapid development. However, this architecture posed challenges in terms of high costs and scaling bottlenecks.
Identifying Costly Operations: Two operations stood out as costly in the initial design. Firstly, the orchestration workflow incurred charges for every state transition, and since the workflow involved multiple state transitions per second, costs escalated. Secondly, passing data between distributed components necessitated intermediate storage in Amazon S3. As data volumes increased, data transfer costs became a significant concern.
Embracing Monolithic Architecture: To address the cost-related issues, Prime Video decided to adopt a monolithic architecture for their monitoring service. This involved deploying the media converter and defect detector within the same process. Consequently, they eliminated the need for an S3 bucket as intermediate storage, reducing data transfer costs and simplifying orchestration logic. This strategic architectural change resulted in an impressive 90% reduction in costs.
The Power of Context: It’s important to recognize that this case study highlights a specific scenario in which a monolithic architecture proved beneficial. The online community has been abuzz with diverse opinions and perspectives on the matter. However, the key takeaway here is that Amazon Prime Video followed a “Serverless First” approach, enabling rapid prototyping and scalability as needed. They initially developed a quick prototype using serverless components and transitioned to a more efficient and scalable solution when required. This demonstrates a prudent approach to software development.
Embracing Evolution and Open-Mindedness: Amazon CTO Werner Vogels emphasized the significance of evolving software systems and maintaining an open mind when revisiting architectures. He stated, “Building evolvable software systems is a strategy, not a religion. And revisiting architectures with an open mind is a must.” Former Amazon VP Adrian Cockcroft also underscored the “Serverless First” approach followed by the Prime Video team, clarifying that he doesn’t advocate for “Serverless Only.”
Balancing Architectural Choices: This case study sheds light on the fact that microservices may not always be the best choice, and we should engage in discussions regarding the evolution of our architectures based on specific use cases. Decomposing components into distributed microservices can come with costs, and it is essential to carefully evaluate the pros and cons before making architectural decisions.
In conclusion, Amazon Prime Video’s transition to a monolithic architecture for their monitoring service highlights the importance of considering unique scenarios when selecting an architecture. It serves as a valuable reminder that there is no one-size-fits-all solution in software architecture.
To make informed choices, it is crucial to maintain a balanced perspective, understand the uniqueness of each scenario, and adapt our architectural strategies accordingly.