Week 4: Non-functional requirements pt 2

Can we horizontally scale a database? What do we give up when copies of our data disagree, how do we keep a system available and fast, and how do we ship a new version without breaking the people already using the old one?

Learning Outcomes:

  • Compare strategies for horizontally scaling a database, and explain why keeping copies of data in sync is hard
  • Distinguish synchronous from asynchronous replication, and apply the CAP theorem's trade-off between consistency and availability
  • Measure availability using health checks, uptime, and SLAs
  • Improve performance with caching, and compare read-through and write-through caching
  • Keep APIs and database schemas backward compatible across versions, using semantic versioning and data migrations
  • Compare deployment strategies (recreate, ramped, canary, blue-green) and when to use each
Lecture Slides
Tutorial Slides