Basics of System Design
Basics of System Design
Functional Requirements:
Examples:
o Generating reports.
Non-Functional Requirements:
Examples:
System design is composed of several critical components that work together to achieve the desired
functionality. Key components include:
2. Backend Services:
3. Database:
4. APIs:
o Provide communication between different components or systems.
5. Caching Layer:
6. Load Balancer:
The SDLC outlines the process for designing, building, and maintaining a system. Key phases include:
1. Planning:
2. Analysis:
3. Design:
4. Implementation:
5. Testing:
6. Deployment:
7. Maintenance:
o Address bugs, optimize performance, and implement updates.
Structured Analysis:
Uses tools like Data Flow Diagrams (DFDs) to represent processes and data flows.
Structured Design:
Example: Breaking a system into subsystems such as UI, database, and backend.
Top-Down Approach:
Start with the overall system and break it down into smaller modules.
Bottom-Up Approach:
Start with individual modules or components and integrate them into a complete system.
Hybrid Approach:
What is Sharding?
Sharding is a database partitioning technique where large datasets are split into smaller,
manageable parts (shards).
Benefits:
Challenges:
Complexity: Increases complexity in maintaining distributed data.
Horizontal Scaling:
Vertical Scaling:
Distributes incoming traffic across multiple servers to ensure reliability and efficiency.
Types of algorithms:
o Least Connections: Routes traffic to the server with the fewest active connections.
Example:
Latency:
The delay between a request being sent and a response being received.
Throughput:
This format provides detailed explanations of each topic in an easily digestible format. Let me know if
you need any additional details!