System Design Fundamentals

0.0(0)
Studied by 0 people
call kaiCall Kai
learnLearn
examPractice Test
spaced repetitionSpaced Repetition
heart puzzleMatch
flashcardsFlashcards
GameKnowt Play
Card Sorting

1/28

encourage image

There's no tags or description

Looks like no tags are added yet.

Last updated 2:33 AM on 10/9/26
Name
Mastery
Learn
Test
Matching
Spaced
Call with Kai
Chat

No analytics yet

Send a link to your students to track their progress

29 Terms

1
New cards

Software Architecture

Software Architecture is the high-level structure of a software system and the way its major components communicate and work together.

2
New cards

Functional Requirement

Functional requirements describe what the system must do.

They describe the features and behaviors of the system.

3
New cards

Non-Functional Requirement.

Non-functional requirements define the quality, performance, reliability, scalability, security, and operational characteristics of a system.

4
New cards

Functional vs Non Functional

Functional = WHAT?
Non-Functional = HOW WELL?

5
New cards

Important NFRs

  • Scalability

  • Availability

  • Reliability

  • Performance / Latency

  • Throughput

  • Security

  • Durability

  • Maintainability


6
New cards
  1. What does the system need to do?

  2. How well does it need to do it?

  3. How should we structure the system to achieve both?


  1. Functional Requirements

  2. Non-Functional Requirements

  3. Software Architecture


7
New cards

Scalability

The ability of a system to handle increasing load by adding resources while maintaining acceptable performance.

8
New cards

Load

Load is the amount of work coming into your system.

As load increases, the system needs more capacity.

9
New cards

Scalability vs Performance

Scalability - How well does the system continue to perform as workload increases?

1K users     → 50 ms
1M users     → 100 ms

Performance - How fast can the system handle a given workload?

Request → Server → Response --- 50 ms


10
New cards

Main Types of Scaling

Vertical Scaling — Scale Up

Horizontal Scaling — Scale Out

11
New cards

Vertical Scaling

Make one machine more powerful. By increasing CPU, RAM, Disk, Network capacity, etc.,

12
New cards

Vertical Scaling - Advantages

  • Simple

  • Less architectural complexity

  • Usually easier to implement


13
New cards

Vertical Scaling - Disadvantages

  • Hardware has limits

  • Can become expensive

  • Single point of failure may remain

  • Doesn't scale indefinitely


14
New cards

Horizontal Scaling

Instead of making one server bigger, add more servers.

15
New cards

Horizontal Scaling - Advantages

  • Can scale much further

  • Better fault tolerance

  • Easy to add/remove machines

  • Very useful for cloud systems


16
New cards

Horizontal Scaling - Disadvantages

  • More complexity

  • Requires load balancing

  • Data consistency becomes harder

  • Distributed-system problems appear


17
New cards

Stateless Servers

The server doesn't store user-specific session information locally. Any server can handle the request. This makes horizontal scaling easy. For modern distributed systems, Prefer stateless application servers whenever practical.

18
New cards

Stateful Servers

The server keeps important user state locally. You may need: Shared session storage, Redis, Database, Sticky sessions


19
New cards

Database Scalability

Database scalability is the ability of a database system to handle growing amounts of data, user traffic, and transaction requests without losing performance or availability. Application servers aren't the only thing that needs scaling. The database can become the bottleneck.

20
New cards

Database Scalability - Vertical Scaling

Make the database server bigger. Simple, but eventually limited.

DB
4 CPU → 32 CPU
8 GB  → 128 GB


21
New cards

Database Scalability - Read Replicas

Create copies of the database for read operations.

22
New cards

Auto Scaling

Cloud systems can automatically increase/decrease resources based on demand.

23
New cards

Scalability vs Elasticity

Scalability:

Can the system handle growth?

Elasticity:

Can the system automatically adjust capacity as load changes?


24
New cards

Bottlenecks

A system is only as scalable as its bottleneck.

Common bottlenecks:

CPU, Memory, Database, Disk I/O, Network, Lock contention, Connection pools, External APIs, Single-threaded components

Find the bottleneck before adding more resources.


25
New cards

Scale Up vs Scale Out

knowt flashcard image
26
New cards

The Scalability Toolkit

                 SCALABILITY
                      │
       ┌──────────────┼──────────────┐
       ↓              ↓              ↓
    Compute         Database       Content
       │              │              │
  ┌────┴────┐    ┌────┴────┐       CDN
  ↓         ↓    ↓         ↓
Scale Up  Scale Out
                Read      Sharding
              Replicas
                │
              Cache


27
New cards

If an interviewer asks "What is scalability?"

Scalability is the ability of a system to handle increasing workload by adding resources while maintaining acceptable performance. We can scale vertically by increasing the capacity of a machine, or horizontally by adding more machines. In distributed systems, horizontal scalability is commonly achieved using load balancers, stateless services, caching, database replication/sharding, CDNs, asynchronous processing, and auto-scaling.


28
New cards

What is Reliability?

Reliability is the ability of a system to perform its intended functions correctly and consistently over a specified period, even when failures may occur.

29
New cards