DEV Community

Soma
Soma

Posted on

10 Scalability Lessons from Zoom's Software Architecture

Disclosure: This post includes affiliate links; I may receive compensation if you purchase products or services from the different links provided in this article.

Zoom System Design

Hello Devs, if you are preparing for Software Engineering interviews, then you must prepare for a System Design interview. Most people struggle with this area, but learning System Design is not easy.

In the past, I have shared several system design interview questions like how to design WhatsApp or Facebook Messenger or System design conceptual questions difference between API Gateway vs Load Balancer and Horizontal vs Vertical Scaling, Forward proxy vs reverse proxy. and today, I am going to share a System design case study on Zoom's architecture which you can read to learn useful lessons.

With its user-friendly interface and high-quality video calls, Zoom has become a household name, especially during the COVID-19 pandemic.

As many of us discovered during lockdown, Zoom's video call quality is exceptional even on mobile internet.

But how do they do it? Well, it offers a good lesson on System Design and we will find it in this article.

By the way, if you are preparing for System design interviews and want to learn System Design in-depth then you can also check out sites like ByteByteGo, Design Guru, Exponent, Educative, Codemia.io, InterviewReddy.io and Udemy which have many great System design courses

And, here is how Zoom architecture looks like

how Zoom architecture looks like


How Zoom supports 300 million+ video calls a day

Here's how Zoom supports 300 million video calls a day and the key lessons from its software design architecture.

1. Adaptive Streaming for Efficient Video Quality

Zoom uses adaptive streaming to adjust video resolution based on device type and bandwidth.

This technique, called Scalable Video Coding (SVC), divides a single video stream into hierarchical layers, each representing different resolutions.

The client decodes only the necessary layers, reducing bandwidth usage and server CPU load.

Lesson: Adaptive streaming with SVC ensures scalability and low latency by optimizing resource usage based on real-time conditions.

zoom scalability explained

credit --- https://www.mdpi.com/2071-1050/13/8/4541


2. Separation of Video Processing and Routing

Zoom separates video stream processing from routing, processing streams on the client side rather than the server.

This approach avoids overloading servers and enhances scalability.

Lesson: Offloading processing tasks to the client reduces server load and improves system scalability.


3. Multimedia Routing for low-latency

Zoom sends separate video streams from each participant to the client, avoiding the need for server-side transcoding.

The multimedia router finds the best network paths, ensuring low latency.

Lesson: Efficient routing mechanisms and avoiding server-side transcoding enhance performance and reduce latency.


4. Monitoring Quality of Service (QoS)

Zoom clients monitor QoS by measuring data packet loss and latency. Proprietary algorithms optimize the video stream, ensuring the best user experience despite network variability.

Lesson: Continuous monitoring and adaptive algorithms are crucial for maintaining high-quality video streams in fluctuating network conditions.


5. Network Awareness and Protocol Flexibility

Zoom uses UDP for faster data delivery, with TCP, HTTPS, and HTTP as fallbacks.

This flexibility ensures a consistent user experience across different network conditions.

Lesson: Utilizing multiple network protocols and fallback options ensures reliable and adaptable video call performance.

zoom scalable architecture

credit --- https://www.geeksforgeeks.org/user-datagram-protocol-udp/


6. Peer-to-Peer Connections for Small Meetings

For video calls with only two participants, Zoom uses a peer-to-peer connection, reducing server load and providing low latency.

Lesson: Peer-to-peer connections are an efficient way to minimize server usage and enhance performance for small-scale interactions.

zoom system design case study


7. Microservices Architecture on AWS

Zoom runs microservices on AWS, allowing for flexible and scalable backend operations. This architecture supports rapid scaling and reliable service delivery.

Lesson: A microservices architecture on a scalable cloud platform like AWS enables flexibility and efficient resource management.

Microservices Architecture on AWS


8. Proximity-Based Server Connection

Zoom clients connect to the closest data center, minimizing latency and improving call quality.

Meeting zones group servers are managed by a zone controller.

Lesson: Proximity-based server connections and strategic server grouping enhance performance and reliability.


9. Simple and Efficient Architecture Design

Zoom's architecture is engineered specifically for video streaming, focusing on simplicity and efficiency.

This design philosophy contributes to its ability to handle high volumes of traffic smoothly.

Lesson: Keeping architecture simple and focused on core functionality ensures efficiency and scalability.


10. Scalability Through Predictive Resource Management

Zoom's architecture is designed to scale, anticipating user needs and adapting resource allocation dynamically.

This ensures consistent performance even during peak usage times.

Lesson: Predictive resource management and dynamic scaling are essential for handling large user bases and varying demands efficiently.


Best System Design Interviews Resources

And, here are curated list of the best system design books, online courses, and practice websites which you can check to better prepare for System design interviews.

  1. DesignGuru's Grokking System Design Course: An interactive learning platform with hands-on exercises and real-world scenarios to strengthen your system design skills.

  2. Codemia.io: This is another great platform to practice System design problems for interviews. It got more than 120+ System design problems, many of which are free, and also a proper structure to solve them.

  3. "System Design Interview" by Alex Xu: This book provides an in-depth exploration of system design concepts, strategies, and interview preparation tips.

  4. "Designing Data-Intensive Applications" by Martin Kleppmann: A comprehensive guide that covers the principles and practices for designing scalable and reliable systems.

  5. LeetCode System Design Tag: LeetCode is a popular platform for technical interview preparation. The System Design tag on LeetCode includes a variety of questions to practice.

  6. "System Design Primer" on GitHub: A curated list of resources, including articles, books, and videos, to help you prepare for system design interviews.

  7. Educative's System Design Course: An interactive learning platform with hands-on exercises and real-world scenarios to strengthen your system design skills.

  8. High Scalability Blog: A blog that features articles and case studies on the architecture of high-traffic websites and scalable systems.

  9. YouTube Channels: Check out channels like "Gaurav Sen" (ex-Google engineer and founder of InterviewReddy.io and "Tech Dummies" for insightful videos on system design concepts and interview preparation.

  10. ByteByteGo: A live book and course by Alex Xu for System design interview preparation. It contains all the content of System Design Interview book volumes 1 and 2 and will be updated with volume 3 which is coming soon.

  11. Exponent: A specialized site for interview prep especially for FAANG companies like Amazon and Google, They also have a great system design course and many other materials that can help you crack FAAN interviews.

how to prepare for system design

image_credit - ByteByteGo

Remember to combine theoretical knowledge with practical application by working on real-world projects and participating in mock interviews. Continuous practice and learning will undoubtedly enhance your proficiency in system design interviews.


Conclusion

Zoom's software design architecture offers valuable insight into building a scalable, reliable, and efficient video conferencing platform. By leveraging adaptive streaming, separating processing and routing, and employing robust network protocols, Zoom ensures high-quality video calls for millions of users daily.

These lessons from Zoom's architecture provide a roadmap for developing scalable and efficient software solutions.

For further reading and more detailed information on Zoom's architecture, check out the references below. If you found this article useful, consider sharing it with someone interested in system design.

Here is also a nice video which explains Zoom's scalable software architecture

References:
credit - https://www.lavivienpost.com/how-zoom-works-architecture/

All the best with your System Design journey.

If you haven't read, here are a few of my System design articles you may like

Top comments (0)