barisozmen.github.io

System Design Resources

System design of Twitter

source: https://www.infoq.com/presentations/Twitter-Timeline-Scalability

Everything-in-it page

https://github.com/donnemartin/system-design-primer

Interview solutions

Real-world examples (Tech Engineering pages)

Resource with many real-world system design explanations: http://highscalability.com/

Step-by-step

  1. Requirements classification
  2. System interface definition
  3. Back-of-the-envelope estimation
  4. Defining data model
  5. High-level design
  6. Detailed design
  7. Identifying and resolving bottlenecks

Very good course

Grokking the system design interview

Great book

Distributed systems for fun and profit

Some terms

Introduction to architecting systems for scale

https://lethain.com/introduction-to-architecting-systems-for-scale/

HTTP requests

https://www.codecademy.com/articles/http-requests

What is REST

https://www.codecademy.com/articles/what-is-rest

Data engineering pipeline

with choices of technologies for each stage dataengpipeline

CAP Theorem

CAP Theorem. Source:https://robertgreiner.com/cap-theorem-revisited/

In a distributed computer system, you can only support two of the following guarantees:

Consistency - Every read receives the most recent write or an error

Availability - Every request receives a response, without guarantee that it contains the most recent version of the information

Partition Tolerance - The system continues to operate despite arbitrary partitioning due to network failures Networks aren’t reliable, so you’ll need to support partition tolerance. You’ll need to make a software tradeoff between consistency and availability.

Consistent Hashing

A hash map with machines instead of buckets (ref).