what-are-design-fundamentals

Table of Contents

Are Design Fundamentals

What Are Design Fundamentals?

There's a lot of subjectivity in System Design -- most of the time, it's important to justify your solution and discuss tradeoffs.

Why did you design parts of the system one way vs. another?

Categories of System Design:

Foundational -- If you don't understand the basics, you can't answer any system:

Client/Server Protocol Networking (TCP/IP, UDP)

Characteristics -- Things you want a system to have

Availability Latency Throughput Redundancy Consistency

Components -- Tangible things you can implement in a system, like Leader Election, a Database, Load Balancers, Web Servers

Technology -- What technologies will you use as components, or to achieve some requirement of a system:

ZooKeeper or Etcd for Leader Election S3 for Blob Storage EC2 for a Server Nginx for a Server or Reverse Proxy Redis for a Key-Value Store

Prev: [introduction-to-systemsexpert](introduction-to-systemsexpert.html) Next: [client-server-model](client-server-model.html)