Communication between different software systems can be established using either RPC (Remote Procedure Call) or RESTful (Representational State Transfer) protocols, which allow multiple systems to work together in distributed computing.
/2 The two protocols differ mainly in their design philosophy. RPC enables calling remote procedures on a server as if they were local procedures, while RESTful applications are resource-based and interact with these resources via HTTP methods.
/3 When choosing between RPC and RESTful, consider your application's needs.
/4 RPC might be a better fit if you require a more action-oriented approach with custom operations, while RESTful would be a better choice if you prefer a standardized, resource-based approach that utilizes HTTP methods.
/5 Over to you: What are the best practices for versioning and ensuring backward compatibility of RPC and RESTful APIs?
/6 Get a Free System Design PDF (158 pages) by subscribing to our weekly newsletter today: blog.bytebytego.com
/1 How much storage could one purchase with the price of a Tesla Model S?
Why do we do this? There's a trade-off between the price of a storage system and its access latency. Naturally, one might wonder how much storage could be obtained if one is willing to sacrifice latency.
/2 To make this calculation more intriguing, let's use the price of a Tesla Model S as a benchmark.
🔹 Tesla Model S: $87,490 per car
🔹 L1 cache: $7 per megabyte
🔹 L2 cache: $7 per megabyte
🔹 RAM: $70 for 32G
🔹 SSD: $35 for 128G
🔹 HDD: $350 for 12T
/3 Get a Free System Design PDF (158 pages) by subscribing to our weekly newsletter today: blog.bytebytego.com
/1 Why did Amazon Prime Video monitoring move 𝐟𝐫𝐨𝐦 𝐬𝐞𝐫𝐯𝐞𝐫𝐥𝐞𝐬𝐬 𝐭𝐨 𝐦𝐨𝐧𝐨𝐥𝐢𝐭𝐡𝐢𝐜? How can it save 90% cost?
The diagram below shows the architecture comparison before and after the migration.
/2 What is Amazon Prime Video Monitoring Service?
Prime Video service needs to monitor the quality of thousands of live streams. The monitoring tool automatically analyzes the streams in real-time and identifies quality issues like block corruption, video freeze, etc.
/3 here are 3 steps: media converter, defect detector, and real-time notification.
🔹 list: keep your Twitter feeds
🔹 stack: support undo/redo of the word editor
🔹 queue: keep printer jobs, or send user actions in-game
🔹 hash table: cashing systems
🔹 Array: math operations
🔹 heap: task scheduling
/2
🔹 tree: keep the HTML document, or for AI decision
🔹 suffix tree: for searching string in a document
🔹 graph: for tracking friendship, or path finding
🔹 r-tree: for finding the nearest neighbor
🔹 vertex buffer: for sending data to GPU for rendering
/3 Which additional data structures have we overlooked?
A comparison of Docker-based and non-Docker-based development is shown below.
/2
With Docker, we can develop, package, and run apps quickly:
🔹 The developers can write code locally and then build a Docker image and push it to a dev environment. In this way, the development work is shared within the team. The tests are run automatically in the dev env.
/3 An image is a read-only template with instructions for creating a Docker container. We use a Dockerfile to define the steps to create the image and run it.