Build systems made of multiple machines using replication, sharding, consensus, leader election, distributed transactions, queues, and failure handling. You will reason about partial failure as a normal design condition.