Designing Data-Intensive Applications Chapter 5: Replication Chapter 6: Partitioning Chapter 7: Transactions Chapter 8: The Trouble with Distributed Systems Chapter 9: Consistency and Consensus Chapter 10: Batch processing Chapter 11: Streaming Processing