System Design
Last updated
Last updated
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.
Some of the tradeoffs to be thought and considered.
Raising scalability usually add more complexity.
Like using load balancing
, horizontal scaling
...
In distributed systems, says that it is impossible to garantee Consistency, Availability and Partition Tolerance (CAP theorem).
Optimizing for low latence (quicker reponse time) may reduce the throughput (amount of work done in a period of time).
More strict security measures may protect more the system, but also may reduce end user usability.
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.
To better understand the system we are developing.
FRs and NFRs. (here)
Given the functionalities definined in the FRs, what can the user do with them.
How can the user interact with the application.
Choosing the tradeoffs.