#System Design
24 articles
8 Books for Learning System Design and the Architect Role
A reading list of 8 books on system design and the work of an architect: design patterns through interview problems, the architecture design process, the architect's role, and trade-offs and non-functional requirements. Each entry links to its full review.
12 Books for Learning Software Architecture, from Fundamentals to Practice
A staged reading list of 12 books for learning software architecture, from fundamentals to practice: design basics, trade-offs, domain-driven design, microservices, and API design. Each entry links to its full review.
Fundamentals of Software Architecture, 2nd Edition: An Engineering Approach
A review of Fundamentals of Software Architecture, 2nd Edition. A textbook-like book by Mark Richards and Neal Ford. It treats architecture not as experience and intuition but as a measurable, governable engineering discipline, systematically explaining the definition, identification, measurement, and governance of architectural characteristics (non-functional requirements).
Trends and Strategies for System Design Interviews
A review of Trends and Strategies for System Design Interviews. While themed around interview prep, it is also just right for learning system design patterns. With well-organized question patterns that capture design essentials, it is useful not only for candidates but also for interviewers who set the questions.
Driving Domain with Data Modeling - Towards Distributed and Loosely Coupled Core Systems
A review of a book on driving the domain with data modeling. Centered on the concept of ledgers, it systematically explains data modeling for making core systems distributed and loosely coupled. It proposes splitting activity and management systems and a new 'balance' concept, offering practical guidance for DDD and microservices.
The Importance of Explicitly Stating Constraints and Trade-offs in Technical Decision Making
Document technical decisions by explicitly stating constraints and trade-offs to enable future re-evaluation and org growth.
Practical Techniques for Building System Architecture
A review of Practical Techniques for Building System Architecture. A practical guide for engineers doing architecture design in the field. Where the prior book focused on why, this one covers how, from requirements definition to logical and physical design and documentation through views, introducing concrete techniques useful on the ground.
About Architecture, Architects, and Architecting
Understand architecture as essential system structure, architect responsibilities, and architecting activities for building aligned systems.
Principles of Building System Architecture: Three Mindsets IT Architects Should Have
A review of Principles of Building System Architecture. A must-read if you are involved in architecture design. Beyond technical solutions, it systematically articulates the whole design process, from the definition and framing of architecture to engaging stakeholders and design techniques.
Cohesion and Coupling
Understand cohesion and coupling as software design metrics. Learn the 7 levels of cohesion (coincidental to functional) and 6 levels of coupling (content to data) with practical examples.
Considering the Shelf Life of Design
Consider design shelf life across business, organization, product, and technical perspectives. Balance constraints and trade-offs.
Structure of My System Specification Document
Learn to structure system specification documents with sections for architecture, data models, APIs, and sequence diagrams for design clarity.
Considering Architecture Strategy
Understand architecture strategy as systematic policy for building and evolving systems, covering vision, principles, and scalability planning.
Decision-Making Techniques for Software Architects: Leveraging Leadership, Technology, and Product Management
A review of Decision-Making Techniques for Software Architects. A groundbreaking book focused on how architects make decisions. It introduces five questions and seven principles for facing architectural uncertainty, offering solid learning for anyone heading into design.
freee Technical Book: Multi-Product Development at freee
A review of freee Technical Book: Multi-Product Development at freee. A book on the practice of multi-product development in business SaaS. It concretely discusses design decisions in the field, such as how to carve out shared operations like application and approval as domains, the relationship between the platform and each app, and the trade-offs that arise.
Reliability Patterns
Learn cloud reliability patterns from AWS, Azure, and GCP. Covers Circuit Breaker, Bulkhead, Ambassador, Retry, Queue-Based Load Leveling, BFF, and other fault-tolerance design patterns.
Mistakes in Software Architecture: Development and Evaluation of Non-Functional Requirements
A review of a book on mistakes in software architecture. Though old (published in 2010), it discusses architecture topics that still resonate today, in a casual style. Closer to an essay than a technical book, its later chapters (from chapter 6) are where the technical substance lies.
Exploring Permission Management Design
Understand ACL, RBAC, and ABAC permission design methods with functional/data scope, control targets, and operational constraints.
Trade-offs and Mistakes in Software Design: Making Better Choices in Programming
A review of Software Design Trade-offs and Errors. A book for learning the importance of weighing design trade-offs against each other, along with concrete examples of software design trade-offs. It teaches that considering even the reasons you did not choose an option leads to better choices.
Data-Oriented Application Design
A review of Data-Oriented Application Design. Known as a classic on distributed system design, it systematically covers the foundational technologies behind reliable, scalable applications, such as data storage and retrieval, distribution, and consistency. It is substantial and rewards repeated rereading.