SystemDesignWithZeeshanAli
No description available
Install / Use
/learn @ZeeshanAli-0704/SystemDesignWithZeeshanAliREADME
System Design with Zeeshan Ali
Welcome to the System Design with Zeeshan Ali repository! This collection is dedicated to in-depth articles and resources on system design, covering foundational concepts, architecture patterns, optimization techniques, and real-world case studies. Each section is carefully curated to provide clear explanations, practical examples, and best practices for building scalable, reliable, and efficient systems.
- GitHub: System Design with Zeeshan Ali
- Dev.to: System Design with Zeeshan Ali
Folder Structure
System Design Concepts
- Apache Zookeeper: Coordination service for distributed systems, used for leader election, configuration, and synchronization.
- Blob Storage: Explanation of Blob Storage, use cases, and benefits in cloud systems.
- Bloom Filters: Deep dive into Bloom Filters, Counting Bloom filters, and Cuckoo filters with practical examples.
- Cache Eviction Policies: Strategies like LRU, LFU, FIFO for managing cache space efficiently.
- CAP Theorem: Principles of Consistency, Availability, Partition Tolerance with trade-offs in real-world databases.
- Capacity Estimations: Techniques to estimate storage, bandwidth, and traffic for scalable systems.
- CDNs (Content Delivery Networks): How CDNs distribute content geographically to reduce latency and improve performance.
- Client-Server Architecture Pattern: Explains client-server interactions and their role in networked applications.
- DNS - The Domain Name System: Translating human-readable domain names into IP addresses with caching and security.
- Database Replication System Design: Techniques for ensuring high availability and fault tolerance via replication.
- Hashing and Consistent Hashing: Includes explanation, examples, and Java implementation for load balancing and distributed storage.
- Horizontal vs Vertical Scaling: Trade-offs between adding more servers vs. scaling up existing servers.
- How to Store Passwords in a Database: Best practices for secure password storage (hashing, salting, peppering).
- HTTPS: How HTTPS Works - The HTTP Handshake: Explains SSL/TLS handshake and how HTTPS secures communication.
- Kafka: Distributed event streaming platform for real-time data pipelines and messaging.
- Load Balancers: Layer 4 vs Layer 7, algorithms like Round Robin, Least Connections, and Hashing.
- Memory Management: Covers JavaScript memory handling, garbage collection, and optimization.
- Redis: In-memory data store for caching, session management, and pub/sub.
- Storage Concepts in System Design: Overview of file systems, databases, and storage layers in modern apps.
- Types Api Testing: Explains API testing strategies like unit, load, functional, and security tests.
System Design Case Studies
- Design_Craigslist: Classified ads system design with posting, browsing, and search.
- Design High Availability System: Patterns for ensuring system uptime using redundancy and failover.
- Design Instagram System: Covers feeds, media storage, and scaling challenges.
- Design Key-Value Store: Covers data partitioning, replication, and fault tolerance.
- Design Notification Alerting Service: Real-time push notifications with retries, queues, and priorities.
- Design PasteBin: Text sharing service with expiration and storage strategies.
- Design Spotify Top K: Ranking and recommendation systems for most-played tracks.
- Design Twitter: Large-scale social media design with timelines and fan-out strategies.
- Design Unique ID Generation: UUID, Snowflake IDs, and distributed ID generation techniques.
- Design URL Shortener: Designing TinyURL-like systems with hashing and redirection.
- Design Web Crawler: Crawling, indexing, and respecting robots.txt at scale.
- Polling System: Vote collection, real-time tallying, and fraud prevention strategies.
- Rate Limiter: Token bucket, leaky bucket, and sliding window algorithms.
- URL Working in Browser: End-to-end lifecycle of a web request.
Architecture Patterns
- Client Server Architecture Pattern: Basic 2-tier pattern for request/response systems.
- Design Pattern Example: Classic design patterns with JS examples (Factory, Builder, Observer, etc.).
- Event-Driven Architecture Pattern: Reactive systems built around events and consumers.
- Microservice Architecture: Service decomposition, pros/cons, and comparison with monoliths. Comparison of Monolith vs Microservices (./Architecture_Patterns/Micro_Service_Architecture/Mono-vs-Micro)
- Serverless Architecture Pattern: Cloud functions, pay-per-execution, and auto-scaling benefits.
- What is Pub/Sub Architecture: Publish-subscribe model for decoupled communication.
Low Level Design (LLD)
- ATM Machine: LLD for ATM operations (cash withdrawal, balance inquiry, etc.).
- Bloom Filters Implementation: Java/JS implementations of Bloom, Counting Bloom, and Cuckoo filters.
- Consistent Hashing Implementation: Practical code example of consistent hashing in Java.
- Design Patterns: LLD examples of popular design patterns.
- Food Delivery System Design: Building a clean food ordering system in Java with in memory repos, delivery agent auto assign, and pending queues
- Parking Lot System: Multi-floor parking lot with different spot types, entry/exit gates, and strategies.
- Polling System: CRUD-based voting system design.
- Threading Examples: Multi-threading and synchronization examples.
- Ticket Booking System: Reservation, availability check, and concurrency handling.
- UPI System: Unified Payment Interface system design with transactions and security.
Optimization and Security
- Front End Optimization: Best practices to improve performance (lazy loading, caching, bundling).
