Thursday, October 10, 2019

Designing Distributed Systems Useful Links

Distributed Systems Useful Links
Below are some of the links to the different technologies which are used to build a distributed system. It is necessary to know the different technologies available and how they can be used to build a distributed system.

Topics to Discuss for System Design Interview
Whenever you are Designing a System the following things should be discussed.
  1. What is the problem Statement
  2. Requirement and Goal of the System?
  3. Functional Requirements
  4. Non Functional Requirements
  5. Some Design Considerations
  6. Capacity Estimation and Constraints
    • Traffic Estimate
    • Storage Estimate
    • Bandwidth Estimate
    • Memory Estimate
  7. High Level Design
  8. System API
  9. Database Design
  10. Load Balancer
  11. Caching
  12. Disaster Recovery plan
Keep the following things in Mind and call the following things during the interview to show that you have a deep understanding of the concepts
  • Load Balancer and usage
  • CAP theorem - Will you choose Consistency or Availability ?
  • Multiple instances of the service
  • Software Architectural pattern for used
  • Microservices Architectural pattern used
  • Discuss Databases
    • Type of database used - NoSQL vs SQL and why ?
    • Do we need DB Sharding?
    • Do we need Consistent Hashing ?
    • Master - slave architecture
    • Will Read and Write happen from same DB ?
  • Discuss Caching
    • Caching strategy - DBs that can be used for Caching
    • Cache eviction policy
  • Discuss Queueing mechanism
    • Kafka, RabbitMQ
  • Discuss Disaster Recovery
    • How multiple instances could help 
    • How DB backups can be made

Service Registry

Rabbit MQ:


Video : 



KAFKA vs RabbitMQ



JMS vs RabbitMQ:







Capacity Estimation

No comments:

Post a Comment