bazmurphy / immersive-go-course

An immersive, introductory course to backend software engineering using go.
https://systems.codeyourfuture.io/
Creative Commons Zero v1.0 Universal
0 stars 0 forks source link

Sprint 2 - Study - Distributed Systems: State #45

Open bazmurphy opened 7 months ago

bazmurphy commented 7 months ago

https://systems.codeyourfuture.io/primers/distributed-software-systems-architecture/state/

Distributed Systems: State

Sections

1. Caching

2. Databases

3. Time and Ordering in Distributed Systems

4. Sharding

5. Project Work

6. Additional Reading

Key Things To Learn

  1. The difference between stateful and stateless services
  2. The role and benefits of caching in distributed systems
  3. Strategies for loading data into caches (lazy loading, write through)
  4. Reasons for using a separate cache service rather than in-application caching
  5. Potential hazards of using cache services and how to mitigate them
  6. Cache invalidation strategies and challenges
  7. The concept of immutable data and its benefits for caching
  8. Scaling caches through replication and sharding
  9. Consistent hashing and its importance in sharding data
  10. Reasons for using distributed databases (reliability, capacity)
  11. The CAP Theorem and its implications for distributed data stores
  12. Leader/follower (primary/secondary) database replication
  13. Synchronous, asynchronous, and semisynchronous replication
  14. The role of transaction IDs and logical timestamps in maintaining data consistency
  15. Challenges with using system time for ordering in distributed systems
  16. Database sharding considerations and orchestration tools like Vitess
  17. Application changes needed when moving to a sharded datastore
  18. Real-world examples of distributed data stores (Amazon DynamoDB, Google File System, Bigtable)
  19. Analyzing distributed system failures, such as the 2017 Amazon S3 outage