π€βοΈπ§©ποΈπ‘ Everything I know about good system design

π€ AI Summary
- π Good design looks underwhelming: nothing goes wrong for a long time.
- π§± Complex systems reflect poor design; working complex systems evolve only from simple working systems.
- β οΈ Minimize stateful components because they cannot be automatically repaired when they fail.
- βοΈ Contain all writing logic within a single, state-aware service; multiple services must not write to the same table.
- π Design tables to be human-readable, balancing flexibility with application complexity.
- π Index tables to match common queries, placing highest-cardinality fields first.
- β‘ Get the database to do the work, using
JOINinstead of in-memory stitching. - π Send read queries to replicas; use in-memory updates to work around replication lag.
- βοΈ Split slow operations: do minimum useful work for the user immediately, queue the rest in background jobs.
- π§ Caching introduces statefulness and must never replace first speeding up the original operation, such as adding a database index.
- π£ Use events when the sender is indifferent to the consumers, or for high-volume, non-time-sensitive data.
- π― Focus on βhot paths,β the most critical, data-heavy parts of the system, as they have fewer viable solutions.
- π¨ Log aggressively during unhappy paths, recording the specific condition hit.
- π Monitor basic observability metrics, watching p95/p99 for user-facing latency.
- π Use idempotency keys when retrying writes that may or may not have succeeded.
- π‘οΈ Define failure policy (fail open vs. fail closed) based on the specific feature requirement.
π€ Evaluation
- π This perspective contrasts sharply with advice focused on leveraging complex distributed patterns like microservices or event sourcing early in a projectβs lifecycle, which often prioritize future scalability over present-day simplicity.
- βοΈ A legitimate perspective would argue that for a hyper-growth startup, not using message queues or a well-sharded database from day one can lead to a costly re-architecture later, contradicting the philosophy that a complex system must evolve from a simple one.
- π‘ The emphasis on simplicity and βboringβ technology aligns with the βworse is betterβ design philosophy, prioritizing immediate practical value and ease of maintenance over theoretical completeness or advanced features.
- π Topics to explore for a better understanding:
- π The trade-offs between βfail openβ and βfail closedβ policies in non-security-critical but high-stakes systems (e.g., fraud detection, high-volume ad serving).
- β±οΈ Specific techniques for measuring and optimizing p99 latency in database queries and service-to-service communication.
- π§© The point at which a simple system must be split into microservices, and whether the overhead of complexity is truly earned before or after catastrophic scale issues appear.
π Book Recommendations
- πΎβ¬οΈπ‘οΈ Designing Data-Intensive Applications: The Big Ideas Behind Reliable, Scalable, and Maintainable Systems by Martin Kleppmann: π‘ Similar This book is mentioned in the article and provides the definitive deep dive into the underlying systems discussed, like databases, replication, and distributed transactions.
- π A Philosophy of Software Design by John Ousterhout: π Similar It directly argues that complexity is the fundamental challenge in software, promoting simplicity and βdeepβ modules over βshallowβ ones, strongly supporting the articleβs core thesis.
- π¦π€ποΈ The Mythical Man-Month: Essays on Software Engineering by Frederick Brooks Jr.: π₯ Contrasting While focused on software project management, its core messageβthat adding manpower to a late project makes it laterβhighlights that complexity in organization (and thus system design) is the hardest and most dangerous problem to solve.
- π§©π§±βοΈβ€οΈ Domain-Driven Design: Tackling Complexity in the Heart of Software by Eric Evans: ποΈ Contrasting This foundational text provides the intellectual toolkit for managing the necessary complexity of large, core systems, a stage the article advises earning but does not detail.
- π§βπ»π The Pragmatic Programmer: Your Journey to Mastery by David Thomas and Andrew Hunt: π§βπ» Creatively Related This book is a manual for the disciplined, thoughtful, and professional attitude required to successfully implement βboringβ and simple design principles day-to-day.
- π»βοΈπ‘οΈπ Site Reliability Engineering: How Google Runs Production Systems by Niall Richard Murphy et al.: π§ Creatively Related Details the operational practices, metrics (like p99), and βunhappy pathβ planning (like killswitches and graceful degradation) that transform a good design into a reliable, continuously running system.
π¦ Bluesky
π€βοΈπ§©ποΈπ‘ Everything I know about good system design
AI Q: ποΈ Is starting simple better than building for scale?
πΎ Database Optimization | π Software Simplicity | π οΈ Engineering Principles | π Performance Monitoring
β Bryan Grounds (@bagrounds.bsky.social) 2026-07-16T13:45:56.000Z
https://bagrounds.org/articles/everything-i-know-about-good-system-design