Learn Labs
14. Doing the Right Thing

14.7 The book, in one page

ChWhat it established
1Trade-offs. Operational vs analytical; cloud vs self-hosted; distributed vs single-node; business needs vs user rights
2Nonfunctional requirements. Performance (percentiles, tail amplification), reliability (fault vs failure), scalability (no magic sauce), maintainability (operability, simplicity, evolvability)
3Data models. Relational, document, graph, event sourcing, DataFrames; SQL, Cypher, SPARQL, Datalog, GraphQL
4Storage engines. LSM-trees and B-trees for OLTP; column-oriented for analytics; inverted, multidimensional, and vector indexes for retrieval
5Encoding and evolution. Backward/forward compatibility; JSON vs Protobuf vs Avro; dataflow through databases, services, workflows, and events
6Replication. Single-leader, multi-leader, leaderless; replication lag anomalies; conflict resolution; version vectors
7Sharding. Key-range vs hash; rebalancing; request routing; local vs global secondary indexes
8Transactions. ACID's ambiguity; the anomaly table; serial execution, 2PL, SSI; 2PC and why XA fails
9The trouble with distributed systems. Unreliable networks, unreliable clocks, process pauses; quorums, fencing, Byzantine faults; system models, safety vs liveness
10Consistency and consensus. Linearizability and its cost; logical clocks; the equivalence of consensus, CAS, shared logs, and atomic commit
11Batch processing. Unix tools → MapReduce → dataflow engines; the shuffle; workflow orchestration; serving derived data
12Stream processing. Log-based brokers; CDC and log compaction; event time vs processing time; the three join types; exactly-once
13A philosophy. Unbundling the database; write path vs read path; integrity without coordination; the end-to-end argument; trust but verify
14Doing the right thing. Predictive analytics, bias, feedback loops, surveillance, consent, data as a toxic asset — and the responsibility that comes with all of the above

"Given the large impact that software and data have on the world, we as engineers must remember that WE CARRY A RESPONSIBILITY TO WORK TOWARD THE KIND OF WORLD THAT WE WANT TO LIVE IN: A WORLD THAT TREATS PEOPLE WITH HUMANITY AND RESPECT. LET'S WORK TOGETHER TOWARD THAT GOAL."

On this page