Fundamentals of System Design

Software Development



Course Outline

Introduction


  • What is System Design?


Databases


  • Database Indexes
  • Scaling issues with RDBMS
  • NoSQL Databases
  • SQL vs NoSQL
  • Database Sharding


Locking


  • Distributed Locks
  • Optimistic and Pessimistic Locking


Distributed Systems


  • Distributed Transactions
  • CAP Theorem
  • Consistency patterns


Caching


  • What is caching?
  • Distributed Caching


Scaling


  • Horizontal and Vertical Scaling
  • Load Balancing
  • Consistent Hashing


Asynchronism


  • PubSub
  • Message Queues