# System Design

- Page: https://shared.btbytes.com/p/system-design
- Date: 2023-01-22
- Tags: system-design

> **Attention Conservation Notice**
>
> This specifically refers to software systems. Perhaps even more narrowly to Distributed Systems that involve  Data, Web etc.,  Very unlikely hardware/embedded etc., because I do not deal in those.


[Everything I know about good system design](https://www.seangoedecke.com/good-system-design/) by [sean goedecke](https://www.seangoedecke.com/). This article links to a few others he has writte on the topic.

> software design is how you assemble lines of code, system design is how you assemble _services_. The primitives of software design are variables, functions, classes, and so on. The primitives of system design are app servers, databases, caches, queues, event buses, proxies, and so on.

---

Popular Service Level Indicators (SLIs):

- Correctness
- Availability
- Throughput
- Response Time ( p50, p99, etc)
- Functional requirements describe the SLI for correctness.
-  Non-functional requirements describe the SLIs for availability, throughput, response time etc.


Service Level Objective (SLO):

- A target value (or range) for an SLI. (e.g.: SLI <= target).
-  non-functional requirements for scaling, like - data size, bulky service time, geolocation, and data hotspots, to satisfy SLOs.

Service Level Agreement (SLA) is a contract with users on what the SLOs are, including the consequences of meeting/missing the SLOs. (e.g.: penalty/rebate).


----

[videos on system design](https://www.linkedin.com/posts/touseefliaqat_distributedsystems-systemdesign-interviews-activity-7022622454481113088-aSPs)


[Distributed Systems in One Lesson by Tim Berglund ](https://www.youtube.com/watch?v=Y6Ev8GIlbxc)

[Google Systems Design Interview With An Ex-Googler](https://www.youtube.com/watch?v=q0KGYwNbf-0)

[My System Design Template - LeetCode Discuss](https://leetcode.com/discuss/career/229177/My-System-Design-Template)

[ByteByteGo | Ace Your Next System Design Interview](https://bytebytego.com/)

[How to crawl a quarter billion webpages in 40 hours – DDI](http://web.archive.org/web/20120812141345/http://www.michaelnielsen.org/ddi/how-to-crawl-a-quarter-billion-webpages-in-40-hours/)

[CS 329S](https://stanford-cs329s.github.io/) - Machine Learning Systems Design;  "an iterative framework for developing real-world machine learning systems that are deployable, reliable, and scalable."
