Files
system-design-101/data/guides/10-system-design-tradeoffs-you-cannot-ignore.md
Kamran Ahmed ee4b7305a2 Adds ByteByteGo guides and links (#106)
This PR adds all the guides from [Visual
Guides](https://bytebytego.com/guides/) section on bytebytego to the
repository with proper links.

- [x] Markdown files for guides and categories are placed inside
`data/guides` and `data/categories`
- [x] Guide links in readme are auto-generated using
`scripts/readme.ts`. Everytime you run the script `npm run
update-readme`, it reads the categories and guides from the above
mentioned folders, generate production links for guides and categories
and populate the table of content in the readme. This ensures that any
future guides and categories will automatically get added to the readme.
- [x] Sorting inside the readme matches the actual category and guides
sorting on production
2025-03-31 22:16:44 -07:00

2.5 KiB
Raw Blame History

title, description, image, createdAt, draft, categories, tags
title description image createdAt draft categories tags
10 System Design Tradeoffs You Cannot Ignore Explore 10 crucial system design tradeoffs for robust architecture. https://assets.bytebytego.com/diagrams/0026-10-system-design-trade-offs-you-cannot-ignore.png 2024-03-03 false
software-architecture
System Design
Tradeoffs

System Design Tradeoffs

If you dont know trade-offs, you DON'T KNOW system design.

1. Vertical vs Horizontal Scaling

Vertical scaling is adding more resources (CPU, RAM) to an existing server.

Horizontal scaling means adding more servers to the pool.

2. SQL vs NoSQL

SQL databases organize data into tables of rows and columns.

NoSQL is ideal for applications that need a flexible schema.

3. Batch vs Stream Processing

Batch processing involves collecting data and processing it all at once. For example, daily billing processes.

Stream processing processes data in real time. For example, fraud detection processes.

4. Normalization vs Denormalization

Normalization splits data into related tables to ensure that each piece of information is stored only once.

Denormalization combines data into fewer tables for better query performance.

5. Consistency vs Availability

Consistency is the assurance of getting the most recent data every single time.

Availability is about ensuring that the system is always up and running, even if some parts are having problems.

6. Strong vs Eventual Consistency

Strong consistency is when data updates are immediately reflected.

Eventual consistency is when data updates are delayed before being available across nodes.

7. REST vs GraphQL

With REST endpoints, you gather data by accessing multiple endpoints.

With GraphQL, you get more efficient data fetching with specific queries but the design cost is higher.

8. Stateful vs Stateless

A stateful system remembers past interactions.

A stateless system does not keep track of past interactions.

9. Read-Through vs Write-Through Cache

A read-through cache loads data from the database in case of a cache miss.

A write-through cache simultaneously writes data updates to the cache and storage.

10. Sync vs Async Processing

In synchronous processing, tasks are performed one after another.

In asynchronous processing, tasks can run in the background. New tasks can be started without waiting for a new task.