kdocs
GitHub
SC - Solution Architecture
SC - Solution Architecture
  • About
  • System Design
  • System Requirements
Powered by GitBook
On this page
  • Tradeoffs to think about
  • Scalability vs Complexity
  • Consistency vs Availability (CAP theorem)
  • Latency vs Throughput
  • Security vs Usability
  • Memory storage vs Disk storage
  • Stages
  • 1. Finding out the Requirements
  • 2. Defining the Usecases
  • 3. Do the Solution Design

System Design

PreviousAboutNextSystem Requirements

Last updated 4 months ago

Must consider some tradeoffs when designing a system.

This is the first part when starting a project, because this is where you will pick which tools, definitions, architechtures will be used to develop and serve the product/idea.

Tradeoffs to think about

Some of the tradeoffs to be thought and considered.

Scalability vs Complexity

  • Raising scalability usually add more complexity.

    • Like using load balancing, horizontal scaling...

Consistency vs Availability (CAP theorem)

  • In distributed systems, says that it is impossible to garantee Consistency, Availability and Partition Tolerance (CAP theorem).

Latency vs Throughput

  • Optimizing for low latence (quicker reponse time) may reduce the throughput (amount of work done in a period of time).

Security vs Usability

  • More strict security measures may protect more the system, but also may reduce end user usability.

Memory storage vs Disk storage

  • Memory storage (like caches) will offer quicker access to data, but it is more limited and more costly.

  • Disk storage is usually more abundant and cheaper, but with slower access.

Stages

1. Finding out the Requirements

  • To better understand the system we are developing.

  • FRs and NFRs. (here)

2. Defining the Usecases

  • Given the functionalities definined in the FRs, what can the user do with them.

    • How can the user interact with the application.

3. Do the Solution Design

  • Choosing the tradeoffs.

CAP Theorem