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
Tutorial Slides