
Trade-offs in Data Systems Architecture: Considerations related to operational vs. analytical systems; cloud services vs. self-hosted systems; and single-node systems vs. distributed systems.
Defining Nonfunctional Requirements: Core principles underlying fast, reliable, scalable systems: how to measure performance, model load and capacity, handle failures, and manage complexity.
The Trouble with Distributed Systems: The wide range of things that can go wrong in distributed systems (network issues, clocks & timing issues) and the notions of knowledge and truth in distributed systems.