EP139: Design a Live Streaming System

EP139: Design a Live Streaming System

Mike Tyson vs. Jake Paul was live-streamed on Netflix last week. Let’s break down the typical tech stack of a live-streaming system.
͏     ­͏     ­͏     ­͏     ­͏     ­͏     ­͏     ­͏     ­͏     ­͏     ­͏     ­͏     ­͏     ­͏     ­͏     ­͏     ­͏     ­͏     ­͏     ­͏     ­͏     ­͏     ­͏     ­͏     ­͏     ­͏     ­͏     ­͏     ­͏     ­͏     ­͏     ­͏     ­͏     ­͏     ­͏     ­͏     ­͏     ­͏     ­͏     ­͏     ­͏     ­͏     ­͏     ­͏     ­͏     ­͏     ­͏     ­͏     ­͏     ­͏     ­͏     ­͏     ­͏     ­͏     ­͏     ­͏     ­͏     ­͏     ­͏     ­͏     ­͏     ­͏     ­͏     ­͏     ­͏     ­͏     ­͏     ­͏     ­͏     ­͏     ­͏     ­͏     ­͏     ­͏     ­͏     ­͏     ­͏     ­͏     ­͏     ­͏     ­͏     ­͏     ­͏     ­͏     ­͏     ­͏     ­͏     ­͏     ­͏     ­͏     ­͏     ­͏     ­͏     ­͏     ­͏     ­͏     ­͏     ­͏     ­͏     ­͏     ­͏     ­͏     ­͏     ­͏     ­͏     ­͏     ­͏     ­͏     ­͏     ­͏     ­͏     ­͏     ­͏     ­͏     ­͏     ­͏     ­͏     ­͏     ­͏     ­͏     ­͏     ­͏     ­͏     ­͏     ­͏     ­͏     ­͏     ­͏     ­͏     ­͏     ­͏     ­͏     ­͏     ­͏     ­͏     ­͏     ­͏     ­͏     ­͏     ­͏     ­͏     ­͏     ­͏     ­͏     ­͏     ­͏     ­͏     ­͏     ­͏     ­͏     ­͏     ­͏     ­͏     ­͏     ­͏     ­͏     ­͏     ­͏     ­͏     ­͏     ­͏     ­͏     ­͏     ­͏     ­͏     ­͏     ­͏     ­͏     ­͏     ­͏     ­͏     ­͏     ­͏     ­͏     ­͏     ­͏     ­͏     ­͏     ­͏     ­͏     ­͏     ­͏     ­͏     ­͏     ­͏     ­͏     ­͏     ­͏     ­͏     ­͏     ­͏     ­͏     ­͏     ­͏     ­͏     ­͏     ­͏     ­͏     ­͏     ­͏     ­
Forwarded this email? Subscribe here for more

📅Meet your EOY deadlines – faster releases, zero quality compromises (Sponsored)

If slow QA processes and flaky tests are a bottleneck for your engineering team, you need QA Wolf.

Their AI-native platform, backed by full-time QA engineers, enables their team to create tests 5x faster than anyone elseNew tests are created in minutes and existing tests are updated almost instantaneously.

 ✔️Unlimited parallel test runs
 ✔️15-min QA cycles
✔️ 24-hour maintenance and on-demand test creation
✔️CI/CD integration
 ✔️Zero-flake guarantee

 Also available through AWS, GCP, and Azure marketplaces.

Schedule a demo


This week’s system design refresher:

  • API Pagination: Making Billions of Products Scrolling Possible (Youtube video)

  • Design a Live Streaming System

  • How NAT Made the Growth of Internet Possible

  • Must Know System Design Building Blocks

  • SPONSOR US


API Pagination: Making Billions of Products Scrolling Possible


Design a Live Streaming System

Mike Tyson vs. Jake Paul was live-streamed on Netflix last week.

Let’s break down the typical tech stack of a live-streaming system.

Live streaming is challenging because the video content is sent over the internet in near real-time. Video processing is compute-intensive. Sending a large volume of video content over the internet takes time. These factors make live streaming challenging.

The diagram below explains what happens behind the scenes to make this possible.

No alt text provided for this image

Step 1: The streamer starts their stream. The source could be any video and audio source wired up to an encoder

Step 2: To provide the best upload condition for the streamer, most live streaming platforms provide point-of-presence servers worldwide. The streamer connects to a point-of-presence server closest to them.

Step 3: The incoming video stream is transcoded to different resolutions, and divided into smaller video segments a few seconds in length.

Step 4: The video segments are packaged into different live streaming formats that video players can understand. The most common live-streaming format is HLS, or HTTP Live Streaming.

Step 5: The resulting HLS manifest and video chunks from the packaging step are cached by the CDN.

Step 6: Finally, the video starts to arrive at the viewer’s video player.

Step 7-8: To support replay, videos can be optionally stored in storage such as Amazon S3.


Join the Ultimate Streaming Data Event at Redpanda StreamFest! (Sponsored)

Don’t miss Redpanda StreamFest 2024, the ultimate streaming data event! Join us virtually on December 12 to explore groundbreaking innovations in real-time data processing. Hear from industry leaders, dive into hands-on workshops, and discover how Redpanda simplifies streaming. Gain insights on trends like Apache Iceberg, GenAI, and event-driven architectures—all designed to help you build faster, smarter applications. Whether you’re a developer, architect, or tech leader, this is your chance to level up.

Spots are limited, so sign up today


How NAT Made the Growth of Internet Possible

Network Address Translation (NAT) is the process that has made the growth of the Internet possible.

No alt text provided for this image

But how does it work?

  1. In a corporate or home setting, multiple devices (phones, computers, etc.) share one router with a single public IP address.

  2. When a device wants to access the internet, it sends a request to your router. The request contains the device's private IP address.

  3. The router’s NAT process replaces the private IP with the router’s public IP.

  4. The modified request is sent to the internet.

  5. When the response comes back, NAT checks its record and replaces the public IP with the correct private IP. It sends the response to the right device.

NAT has several important uses:

  1. It helps conserve public IP addresses. Without NAT, IPv4 addresses would have been depleted much faster, severely limiting the growth of the Internet.

  2. It allows sharing a single public IP address across multiple devices.

  3. NAT acts as a basic firewall that hides internal IP addresses.

  4. NAT also makes it easy to manage large networks.

Over to you: What else would you add to better understand NAT?


Must Know System Design Building Blocks

No alt text provided for this image

These are divided into 6 broad categories

  1. Distributed Computing
    Distributed message queues facilitate async communication and decouple services
    Distributed caching improves performance by storing frequently accessed data in memory
    A Distributed task scheduler manages and coordinates the execution of tasks

  2. Scalability and Performance
    Scaling services help adjust the capacity of services to handle changes in demand
    CDNs serve content from geographically closer locations to improve performance and reduce latency.
    Consistent hashing minimizes the remapping of keys when nodes are added or removed

  3. Service Management
    Service discovery enables services to find and communicate with each other without hard-coding network locations

  4. Networking and Communication
    DNS translates human-readable domain names into IP addresses
    Load Balancer distributes incoming network traffic across multiple servers
    API Gateway acts as a single entry point for a group of microservices

  5. Data Storage and Management
    Databases store and manage structured data
    Object storage helps store complex objects like images, videos, and documents
    Sharding helps horizontally partition data across multiple nodes
    Replication helps horizontally scale the database by copying data to multiple nodes

  6. Observability and Resiliency
    Gain insights into the system's internal state through metrics, logging, and tracing.

Over to you - Which other building block would you add to the list?


SPONSOR US

Get your product in front of more than 1,000,000 tech professionals.

Our newsletter puts your products and services directly in front of an audience that matters - hundreds of thousands of engineering leaders and senior engineers - who have influence over significant tech decisions and big purchases.

Space Fills Up Fast - Reserve Today

Ad spots typically sell out about 4 weeks in advance. To ensure your ad reaches this influential audience, reserve your space now by emailing sponsorship@bytebytego.com

 
Like
Comment
Restack
 

© 2024 ByteByteGo
548 Market Street PMB 72296, San Francisco, CA 94104
Unsubscribe

Get the appStart writing


by "ByteByteGo" <bytebytego@substack.com> - 11:54 - 23 Nov 2024