System Design Part - I


1. Server
A server is a computer system that provides data, services, or programs to other computers, known as clients, over a network. In cloud environments like AWS, servers are often virtual and hosted on platforms like Amazon EC2 (Elastic Compute Cloud).
AWS Equivalent: EC2 (Elastic Compute Cloud)
2. IP Address
An IP address (Internet Protocol address) is a unique string of numbers separated by periods (IPv4) or colons (IPv6) that identifies each computer using the Internet Protocol to communicate over a network.
3. DNS (Domain Name System)
DNS translates human-friendly domain names (like example.com
) into IP addresses that computers use to identify each other on the network.
AWS Equivalent: Route 53
4. Vertical Scaling
Vertical scaling means increasing the capacity of a single server by adding more CPU, RAM, or storage.
Pros:
Simple to implement
No change to application architecture
Cons:
Limited by maximum hardware capacity
Single point of failure
Downtime may be required
5. Horizontal Scaling
Horizontal scaling involves adding more servers to handle increased load.
Pros:
Fault-tolerant
Scalable almost infinitely
Better for high availability and distributed systems
Cons:
Requires load balancing
More complex infrastructure
6. Load Balancer
A load balancer distributes incoming network traffic across multiple servers to ensure no single server becomes a bottleneck.
Use:
- Improves application availability and reliability
AWS Equivalent: Elastic Load Balancer (ELB)
Load Balancing Algorithms:
Round Robin: Requests are distributed sequentially.
Least Connections: New requests go to the server with the fewest active connections.
IP Hash: Distributes requests based on the client's IP address.
7. Database Read Replicas
Read replicas are copies of the main database that handle read-only queries to offload traffic from the primary database.
Main Database: Handles write operations and is the source for replication.
AWS Equivalent: Amazon RDS Read Replicas
8. Caching
Caching stores frequently accessed data in memory to reduce load on servers and databases.
Use:
Faster response times
Reduced load on backend
AWS Equivalent: Amazon ElastiCache (Redis or Memcached)
9. Microservices Architecture
An architectural style where applications are composed of small, independent services that communicate over APIs.
Each microservice can have its own server (EC2), database (RDS), and load balancer (ELB).
They are connected via an API Gateway that routes requests to the correct service.
AWS Equivalent: AWS API Gateway
10. SQS (Simple Queue Service)
SQS is a distributed message queuing service to decouple and scale microservices.
Use:
- Buffers requests between services
Pros:
Increases fault tolerance
Smooths traffic spikes
Cons:
Adds latency
Increases system complexity
11. Event-Driven Architecture
An architecture where services communicate by producing and consuming events (messages).
Benefits:
Loosely coupled
Scalable and flexible
12. SNS (Simple Notification Service)
SNS is a pub/sub messaging service for sending notifications to subscribers.
Use:
- Push notifications to services or users
Pros:
Real-time notifications
Supports multiple protocols
Cons:
Not ideal for message durability
Less control over message processing
13. Fan-Out Architecture
In this architecture, SNS publishes messages to multiple SQS queues. Each queue is consumed by different services.
Use:
Efficient parallel processing
Decouples services
14. CDN (Content Delivery Network)
A CDN is a network of edge servers that cache content closer to users to reduce latency and improve performance.
Use:
- Serve static assets like images, CSS, JS quickly
AWS Equivalent: Amazon CloudFront
Conclusion:
This guide introduces essential system design concepts used to build scalable, reliable, and high-performance applications. By leveraging AWS services, these designs become easier to implement and maintain.
Subscribe to my newsletter
Read articles from Yash Yadao directly inside your inbox. Subscribe to the newsletter, and don't miss out.
Written by
