📅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 else. New 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.
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.
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.
How NAT Made the Growth of Internet Possible
Network Address Translation (NAT) is the process that has made the growth of the Internet possible.
But how does it work?
In a corporate or home setting, multiple devices (phones, computers, etc.) share one router with a single public IP address.
When a device wants to access the internet, it sends a request to your router. The request contains the device's private IP address.
The router’s NAT process replaces the private IP with the router’s public IP.
The modified request is sent to the internet.
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:
It helps conserve public IP addresses. Without NAT, IPv4 addresses would have been depleted much faster, severely limiting the growth of the Internet.
It allows sharing a single public IP address across multiple devices.
NAT acts as a basic firewall that hides internal IP addresses.
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
These are divided into 6 broad categories
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 tasksScalability 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 removedService Management
Service discovery enables services to find and communicate with each other without hard-coding network locationsNetworking 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 microservicesData 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 nodesObservability 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