Statistics
4
Views
0
Downloads
0
Donations
Support
Share
Uploader

高宏飞

Shared on 2026-01-16

AuthorMichael Carducci, Daniel Tippie

[T]he field of software architecture grapples with ever-increasing complexity, uncertainty, and risk. While numerous patterns and practices have emerged as potential approaches to solving the industry’s most challenging problems, these tools often struggle to consistently deliver on their promises and software projects fail to reach their potential with alarming frequency. This meticulously crafted guide presents a deep exploration into the intricacies of crafting systems that precisely and predictably address modern challenges. It goes beyond mere comprehension of architecture; it encourages mastery. Mastery of software architecture requires much more than just technical know-how. The author, drawing upon deep experience and unique perspectives, introduces a fresh, problem-centric approach to the realm of software architecture to address these myriad challenges. This book offers a uniquely holistic approach, weaving together architectural principles with organizational dynamics, environmental subtleties, and the necessary tools to execute on architecture more effectively. It addresses the broader contexts that are often overlooked. You’ll be introduced to the transformative Tailor-Made model which provides fast, design-time feedback on total architectural fit and offers more deterministic outcomes, without the typical (and costly) trial-and-error. [...] This book also offers a comprehensive Architect's toolbox with powerful strategies and problem-solving tools to design, communicate, and implement architectural decisions across the enterprise. Additionally, it imparts invaluable insights into the art of communication as an architect, seamlessly aligning visions with business goals and objectives. With its rich blend of theoretical depth, practical insights, and actionable tools, this book promises to redefine the landscape of software architecture, [...] enabling you to confront architectural challenges with unparalleled confidence and competence.

Tags
No tags
ISBN: 8868804093
Publisher: Apress
Publish Year: 2025
Language: 英文
Pages: 470
File Format: PDF
File Size: 17.1 MB
Support Statistics
¥.00 · 0times
Text Preview (First 20 pages)
Registered users can read the full content for free

Register as a Gaohf Library member to read the complete e-book online for free and enjoy a better reading experience.

Mastering Sof tware Architecture A Comprehensive New Model and Approach — Michael Carducci With Daniel Tippie
Mastering Software Architecture A Comprehensive New Model and Approach Michael Carducci With Daniel Tippie
Mastering Software Architecture: A Comprehensive New Model and Approach ISBN-13 (pbk): 979-8-8688-0409-0 ISBN-13 (electronic): 979-8-8688-0410-6 https://doi.org/10.1007/979-8-8688-0410-6 Copyright © 2025 by Michael Carducci This work is subject to copyright. All rights are reserved by the Publisher, whether the whole or part of the material is concerned, specifically the rights of translation, reprinting, reuse of illustrations, recitation, broadcasting, reproduction on microfilms or in any other physical way, and transmission or information storage and retrieval, electronic adaptation, computer software, or by similar or dissimilar methodology now known or hereafter developed. Trademarked names, logos, and images may appear in this book. Rather than use a trademark symbol with every occurrence of a trademarked name, logo, or image we use the names, logos, and images only in an editorial fashion and to the benefit of the trademark owner, with no intention of infringement of the trademark. The use in this publication of trade names, trademarks, service marks, and similar terms, even if they are not identified as such, is not to be taken as an expression of opinion as to whether or not they are subject to proprietary rights. While the advice and information in this book are believed to be true and accurate at the date of publication, neither the authors nor the editors nor the publisher can accept any legal responsibility for any errors or omissions that may be made. The publisher makes no warranty, express or implied, with respect to the material contained herein. Managing Director, Apress Media LLC: Welmoed Spahr Acquisitions Editor: Celestin Suresh John Development Editor: James Markham Coordinating Editor: Kripa Joseph Cover designed by eStudioCalamar Cover image designed by R. Buckminster Fuller and adapted from US Patent 2,682,235 Building Construction/Geodesic Dome filed December 12, 1951 SN 261,168 granted June 29, 1954 Pursuant to 37 CFR 1.71(d) & (e) and 1.84 (s) this image is not subject to copyright restrictions. Distributed to the book trade worldwide by Springer Science+Business Media New York, 233 Spring Street, 6th Floor, New York, NY 10013. Phone 1-800-SPRINGER, fax (201) 348-4505, e-mail orders-ny@springer- sbm.com, or visit www.springeronline.com. Apress Media, LLC is a California LLC and the sole member (owner) is Springer Science + Business Media Finance Inc (SSBM Finance Inc). SSBM Finance Inc is a Delaware corporation. For information on translations, please e-mail booktranslations@springernature.com; for reprint, paperback, or audio rights, please e-mail bookpermissions@springernature.com. Apress titles may be purchased in bulk for academic, corporate, or promotional use. eBook versions and licenses are also available for most titles. For more information, reference our Print and eBook Bulk Sales web page at http://www.apress.com/bulk-sales. Any source code or other supplementary material referenced by the author in this book can be found here: https://www.apress.com/gp/services/source-code. If disposing of this product, please recycle the paper Michael Carducci Parker, CO, USA
For Kaden, may your creative philosophy live on.
v About the Author �����������������������������������������������������������������������������������������������������xv About the Contributing Author �������������������������������������������������������������������������������xvii About the Technical Reviewer ��������������������������������������������������������������������������������xix Acknowledgments ��������������������������������������������������������������������������������������������������xxi Foreword ���������������������������������������������������������������������������������������������������������������xxv Preface: Holism in Software Architecture �����������������������������������������������������������xxvii Introduction ����������������������������������������������������������������������������������������������������������xxxi Section 1: Foundations ����������������������������������������������������������������������������������� 1 Chapter 1: The Scope and Role of Architecture �������������������������������������������������������� 3 What Exactly Is Architecture? ������������������������������������������������������������������������������������������������������� 4 Why Architecture? ������������������������������������������������������������������������������������������������������������������������� 5 Patterns ����������������������������������������������������������������������������������������������������������������������������������� 6 It Depends ������������������������������������������������������������������������������������������������������������������������������� 9 Thinking, Reasoning, and Navigating Nuance ����������������������������������������������������������������������������� 10 Understanding Business Drivers ������������������������������������������������������������������������������������������������� 12 Architects Bring Breadth of Knowledge �������������������������������������������������������������������������������������� 13 The Scope of Architecture ����������������������������������������������������������������������������������������������������������� 15 Summary������������������������������������������������������������������������������������������������������������������������������������� 15 Chapter 2: Breadth of Knowledge: The Architect’s Superpower ����������������������������� 17 Balancing Depth vs� Breadth ������������������������������������������������������������������������������������������������������� 19 Discovering Linchpins ����������������������������������������������������������������������������������������������������������������� 22 “Soft” Skills �������������������������������������������������������������������������������������������������������������������������������� 23 Table of Contents
vi The Essential Unity of All Knowledge ������������������������������������������������������������������������������������������ 24 New Challenges �������������������������������������������������������������������������������������������������������������������������� 25 Summary������������������������������������������������������������������������������������������������������������������������������������� 26 Chapter 3: Capabilities: The Language of the Architect ����������������������������������������� 27 Architectural Capabilities of Key Interest ������������������������������������������������������������������������������������ 28 Category: Performance ���������������������������������������������������������������������������������������������������������� 30 Category: Agility ��������������������������������������������������������������������������������������������������������������������� 33 Category: Integration ������������������������������������������������������������������������������������������������������������� 38 Category: Feasibility and Manageability �������������������������������������������������������������������������������� 41 Category: Reliability ��������������������������������������������������������������������������������������������������������������� 45 Category: Safety and Security ����������������������������������������������������������������������������������������������� 46 Summary������������������������������������������������������������������������������������������������������������������������������������� 49 Chapter 4: Aligning on Vision and Architectural Requirements ����������������������������� 53 Laserdisc Solved the Wrong Problem ����������������������������������������������������������������������������������������� 57 Architecture Must Solve the “Right” Problem ����������������������������������������������������������������������������� 58 The Tailor-Made Requirements Analysis Process ����������������������������������������������������������������������� 59 Step 1: Preparing for the “Business Conversation” ��������������������������������������������������������������� 59 Step 2: Identifying Stakeholders �������������������������������������������������������������������������������������������� 60 Step 3: The First Meeting ������������������������������������������������������������������������������������������������������� 62 Step 4: Identifying Architecture Capability Requirements ����������������������������������������������������� 68 Step 5: Qualifying and Quantifying Capabilities with Stakeholders ��������������������������������������� 69 Step 6: Documenting and Scoring Capabilities ��������������������������������������������������������������������� 73 Summary������������������������������������������������������������������������������������������������������������������������������������� 75 Chapter 5: KPIs, Metrics, and Data- Driven Architecture Decisions ������������������������ 77 What Is a KPI? ����������������������������������������������������������������������������������������������������������������������������� 78 Good and Bad KPIs ���������������������������������������������������������������������������������������������������������������� 78 What Motivates Organizations to Use KPIs? ������������������������������������������������������������������������������� 80 Evaluating KPIs in Relation to Architecture ��������������������������������������������������������������������������������� 81 Identifying Requirements from KPIs �������������������������������������������������������������������������������������� 87 Connecting Architecture Capabilities to KPIs ������������������������������������������������������������������������ 89 Table of ConTenTs
vii KPIs by Department �������������������������������������������������������������������������������������������������������������������� 90 Business Management ���������������������������������������������������������������������������������������������������������� 90 Product ���������������������������������������������������������������������������������������������������������������������������������� 91 Sales �������������������������������������������������������������������������������������������������������������������������������������� 95 Marketing ������������������������������������������������������������������������������������������������������������������������������ 97 Financial �������������������������������������������������������������������������������������������������������������������������������� 98 Presenting KPIs to a Target Audience ����������������������������������������������������������������������������������������� 99 Summary����������������������������������������������������������������������������������������������������������������������������������� 101 Chapter 6: Architectures Are Not “Chosen,” They Are Designed �������������������������� 103 The Limitations of Pattern-Driven Architecture ������������������������������������������������������������������������� 104 Summary����������������������������������������������������������������������������������������������������������������������������������� 107 Chapter 7: Architectural Constraints: Designing for Deterministic Capabilities ������������������������������������������������������������������������������������ 109 The Origins of Architecture Capabilities ������������������������������������������������������������������������������������ 109 Closing the Capability Gap �������������������������������������������������������������������������������������������������������� 113 Constraints for Deterministic Outcomes ����������������������������������������������������������������������������������� 114 Summary����������������������������������������������������������������������������������������������������������������������������������� 115 Chapter 8: Architectural Styles: The Tailor-Made Pattern Language �������������������� 117 Architectural Styles and Architectural Patterns ������������������������������������������������������������������������ 118 Why “Style” ������������������������������������������������������������������������������������������������������������������������������� 119 Summary����������������������������������������������������������������������������������������������������������������������������������� 120 Chapter 9: Architectural X Factors: Environment, Organization, and Teams �������� 121 The Many Dimensions of “Fit” �������������������������������������������������������������������������������������������������� 121 X Factors and the Road to Microservices ��������������������������������������������������������������������������������� 122 Team Constraints ����������������������������������������������������������������������������������������������������������������� 126 Organizational Constraints �������������������������������������������������������������������������������������������������� 126 Environmental Constraints �������������������������������������������������������������������������������������������������� 127 Constraint Dependencies ���������������������������������������������������������������������������������������������������������� 127 Summary����������������������������������������������������������������������������������������������������������������������������������� 129 Table of ConTenTs
viii Chapter 10: Abstract Styles: A New Look at Patterns ������������������������������������������ 131 Ready-to-Wear �������������������������������������������������������������������������������������������������������������������������� 132 Tailored Off-the-Rack ���������������������������������������������������������������������������������������������������������������� 134 Made-to-Measure ���������������������������������������������������������������������������������������������������������������� 135 Bespoke Tailoring ���������������������������������������������������������������������������������������������������������������� 136 Summary����������������������������������������������������������������������������������������������������������������������������������� 137 Section 2: Patterns, Abstract Styles, and Architecture As a Continuum ���� 139 Chapter 11: Architecture As a Multifaceted Continuum ��������������������������������������� 141 Agile Architecture ���������������������������������������������������������������������������������������������������������������������� 142 When to Evolve Architecture ����������������������������������������������������������������������������������������������������� 144 How to Evolve Architecture ������������������������������������������������������������������������������������������������������� 145 Summary����������������������������������������������������������������������������������������������������������������������������������� 148 Chapter 12: The Layered Monolith Abstract Style ������������������������������������������������ 149 The Big Ball of Mud Style ���������������������������������������������������������������������������������������������������������� 150 Abstraction �������������������������������������������������������������������������������������������������������������������������� 151 Affordability ������������������������������������������������������������������������������������������������������������������������� 151 Agility ����������������������������������������������������������������������������������������������������������������������������������� 151 Deployability ������������������������������������������������������������������������������������������������������������������������ 152 Elasticity ������������������������������������������������������������������������������������������������������������������������������ 152 Evolvability �������������������������������������������������������������������������������������������������������������������������� 152 Fault Tolerance �������������������������������������������������������������������������������������������������������������������� 153 Integration ��������������������������������������������������������������������������������������������������������������������������� 153 Performance ������������������������������������������������������������������������������������������������������������������������ 153 Scalability ���������������������������������������������������������������������������������������������������������������������������� 153 Simplicity ����������������������������������������������������������������������������������������������������������������������������� 154 Testability ���������������������������������������������������������������������������������������������������������������������������� 154 Workflow ����������������������������������������������������������������������������������������������������������������������������� 154 The Semi-structured Big Ball of Mud Style ������������������������������������������������������������������������������� 156 The Semi-structured, DB-Backed, Big Ball of Mud Style ���������������������������������������������������������� 157 The Layered Monolith Abstract Style ���������������������������������������������������������������������������������������� 159 Table of ConTenTs
ix Inside the Monolith ������������������������������������������������������������������������������������������������������������������� 161 The Presentation Layer �������������������������������������������������������������������������������������������������������� 162 The Services Layer �������������������������������������������������������������������������������������������������������������� 163 The Business Logic Layer ���������������������������������������������������������������������������������������������������� 163 The Persistence Layer ��������������������������������������������������������������������������������������������������������� 164 Layer Encapsulation and Abstraction ���������������������������������������������������������������������������������������� 166 Summary����������������������������������������������������������������������������������������������������������������������������������� 168 Chapter 13: The Distributed N-Tier Architecture Abstract Style ��������������������������� 171 Adding Constraints �������������������������������������������������������������������������������������������������������������������� 173 The Client/Server Constraint ����������������������������������������������������������������������������������������������� 173 API Constraints �������������������������������������������������������������������������������������������������������������������� 175 Changing Constraints ���������������������������������������������������������������������������������������������������������� 179 Coarse-Grained Component Granularity Constraint ������������������������������������������������������������� 179 Independent Deployability ��������������������������������������������������������������������������������������������������� 181 The Distributed N-Tier Abstract Style ���������������������������������������������������������������������������������������� 183 Tailoring This Abstract Style ������������������������������������������������������������������������������������������������ 184 Summary����������������������������������������������������������������������������������������������������������������������������������� 188 Chapter 14: The Modular Monolith Abstract Style ������������������������������������������������ 191 Changing Constraints: Domain Partitioning Constraint ������������������������������������������������������������� 192 Module Granularity �������������������������������������������������������������������������������������������������������������������� 196 Organizing Code Within a Domain Module �������������������������������������������������������������������������������� 197 Partitioned Shared Database Constraint ����������������������������������������������������������������������������������� 199 The Modular Monolith Abstract Style ���������������������������������������������������������������������������������������� 202 Summary����������������������������������������������������������������������������������������������������������������������������������� 204 Chapter 15: The Service-Based Abstract Style ����������������������������������������������������� 207 Changing Constraints: Medium Component Granularity ����������������������������������������������������������� 207 Interservice Communication ������������������������������������������������������������������������������������������������ 209 Independent Deployability ��������������������������������������������������������������������������������������������������� 214 Adding Constraints �������������������������������������������������������������������������������������������������������������������� 215 The Mature, Medium-Grained, Domain Partitioned RPC Client/Server Style ����������������������������� 215 Table of ConTenTs
x The Service-Based Abstract Style ��������������������������������������������������������������������������������������������� 216 Tailoring This Abstract Style ������������������������������������������������������������������������������������������������ 219 Summary����������������������������������������������������������������������������������������������������������������������������������� 220 Chapter 16: The Microservices Abstract Style ����������������������������������������������������� 223 Changing Constraints ���������������������������������������������������������������������������������������������������������������� 223 Fine Component Granularity ������������������������������������������������������������������������������������������������ 223 Isolated Databases �������������������������������������������������������������������������������������������������������������� 229 Adding Constraints �������������������������������������������������������������������������������������������������������������������� 240 Highly Decoupled Components �������������������������������������������������������������������������������������������� 240 The Microservices Abstract Style ���������������������������������������������������������������������������������������������� 247 Summary����������������������������������������������������������������������������������������������������������������������������������� 248 Chapter 17: Choreographed Event-Driven Abstract Style ������������������������������������� 251 Changing Constraints ���������������������������������������������������������������������������������������������������������������� 253 Technical Partitioning ���������������������������������������������������������������������������������������������������������� 253 Choreography-Driven Interactions ��������������������������������������������������������������������������������������� 255 Adding Constraints �������������������������������������������������������������������������������������������������������������������� 262 PubSub Messaging �������������������������������������������������������������������������������������������������������������� 262 The Choreographed Event-Driven Abstract Style ���������������������������������������������������������������������� 266 Summary����������������������������������������������������������������������������������������������������������������������������������� 269 Chapter 18: Orchestrated Event-Driven Abstract Style ���������������������������������������� 271 Changing Constraints ���������������������������������������������������������������������������������������������������������������� 271 Orchestration-Driven Interactions ��������������������������������������������������������������������������������������� 271 Persistent Queue Messaging ����������������������������������������������������������������������������������������������� 281 Preventing Data Loss ����������������������������������������������������������������������������������������������������������� 283 Orchestration-Driven Event-Driven Abstract Style �������������������������������������������������������������������� 284 Summary����������������������������������������������������������������������������������������������������������������������������������� 286 Chapter 19: The Space-Based Abstract Style ������������������������������������������������������� 289 Adding Constraints �������������������������������������������������������������������������������������������������������������������� 290 Transactional Data Stored In-Memory ��������������������������������������������������������������������������������� 290 Decoupled Database ������������������������������������������������������������������������������������������������������������ 293 Table of ConTenTs
xi The Space-Based Abstract Style ����������������������������������������������������������������������������������������������� 294 The Processing Unit ������������������������������������������������������������������������������������������������������������� 295 The Data Grid ����������������������������������������������������������������������������������������������������������������������� 295 The Virtualized Middleware Layer ��������������������������������������������������������������������������������������� 296 The Message Grid ���������������������������������������������������������������������������������������������������������������� 296 The Processing Grid������������������������������������������������������������������������������������������������������������� 296 The Deployment Manager ��������������������������������������������������������������������������������������������������� 296 Data Pumps ������������������������������������������������������������������������������������������������������������������������� 296 Summary����������������������������������������������������������������������������������������������������������������������������������� 298 Chapter 20: The Microkernel Abstract Style ��������������������������������������������������������� 301 Changing Constraints ���������������������������������������������������������������������������������������������������������������� 302 Adding Constraints �������������������������������������������������������������������������������������������������������������������� 302 Uniform Interface ����������������������������������������������������������������������������������������������������������������� 302 Plug-In Architecture ������������������������������������������������������������������������������������������������������������� 306 Fine Component Granularity ������������������������������������������������������������������������������������������������ 309 The Microkernel Abstract Style ������������������������������������������������������������������������������������������������� 309 Summary����������������������������������������������������������������������������������������������������������������������������������� 313 Chapter 21: Summary of Constraints and Abstract Styles ����������������������������������� 315 A Taxonomy of Architectural Styles ������������������������������������������������������������������������������������������� 315 Level 1: Module Partitioning ������������������������������������������������������������������������������������������������ 316 Level 2: Persistence Options ����������������������������������������������������������������������������������������������� 318 Level 3: Granularity �������������������������������������������������������������������������������������������������������������� 320 Level 4: Component Communication ����������������������������������������������������������������������������������� 322 Summary of Abstract Styles������������������������������������������������������������������������������������������������������ 324 Summary of Constraints ����������������������������������������������������������������������������������������������������������� 333 Section 3: Executing Architecture Effectively ��������������������������������������������� 339 Chapter 22: Deriving a Tailor-Made Architecture ������������������������������������������������� 341 Tailoring Existing Architectures ������������������������������������������������������������������������������������������������� 342 Made-to-Measure Architecture ������������������������������������������������������������������������������������������������� 343 Phase I: Identifying Abstract Styles ������������������������������������������������������������������������������������� 343 Table of ConTenTs
xii Phase II: Evaluating for Temporal Fit ����������������������������������������������������������������������������������� 344 Phase III: Evaluating for Team, Organizational, and Environmental Fit �������������������������������� 346 Phase IV: Reviewing Candidate Styles ��������������������������������������������������������������������������������� 346 Phase V: Presenting Candidate Architectures for Review ���������������������������������������������������� 347 Phase VI: Design and Document the Architecture ��������������������������������������������������������������� 351 Summary����������������������������������������������������������������������������������������������������������������������������������� 351 Chapter 23: Paved Roads and Variances �������������������������������������������������������������� 353 Paved Roads ����������������������������������������������������������������������������������������������������������������������������� 355 Variances ���������������������������������������������������������������������������������������������������������������������������������� 357 The Role of Variances in Software Architecture ������������������������������������������������������������������������ 357 Managing Variances ������������������������������������������������������������������������������������������������������������������ 358 Summary����������������������������������������������������������������������������������������������������������������������������������� 358 Chapter 24: Documenting Architecture ���������������������������������������������������������������� 361 Architectural Decision Records (ADRs) ������������������������������������������������������������������������������������� 361 ADRs Serve You ������������������������������������������������������������������������������������������������������������������� 362 ADRs Serve Future You �������������������������������������������������������������������������������������������������������� 362 ADRs Serve Teams ��������������������������������������������������������������������������������������������������������������� 363 ADRs Serve Future Teams ��������������������������������������������������������������������������������������������������� 363 The Anatomy of an ADR ������������������������������������������������������������������������������������������������������������� 364 Title and Metadata ��������������������������������������������������������������������������������������������������������������� 364 Context and Problem Statement ������������������������������������������������������������������������������������������ 364 Decision Drivers ������������������������������������������������������������������������������������������������������������������ 365 Considered Options ������������������������������������������������������������������������������������������������������������� 365 Decision Outcome���������������������������������������������������������������������������������������������������������������� 366 Positive and Negative Consequences ���������������������������������������������������������������������������������� 367 Pros and Cons of the Options ���������������������������������������������������������������������������������������������� 368 Links ������������������������������������������������������������������������������������������������������������������������������������ 368 The Constraint Document ��������������������������������������������������������������������������������������������������������� 369 Title and Metadata ��������������������������������������������������������������������������������������������������������������� 369 Motivation ���������������������������������������������������������������������������������������������������������������������������� 369 Table of ConTenTs
xiii Description �������������������������������������������������������������������������������������������������������������������������� 370 Considered Alternatives ������������������������������������������������������������������������������������������������������� 370 Risks ������������������������������������������������������������������������������������������������������������������������������������ 371 Support �������������������������������������������������������������������������������������������������������������������������������� 371 Implementation Guidance ���������������������������������������������������������������������������������������������������� 372 Governance�������������������������������������������������������������������������������������������������������������������������� 373 Resources ���������������������������������������������������������������������������������������������������������������������������� 373 The Architectural Style Document ��������������������������������������������������������������������������������������������� 374 Title and Introduction����������������������������������������������������������������������������������������������������������� 374 Motivation ���������������������������������������������������������������������������������������������������������������������������� 375 Summary of Constraints ������������������������������������������������������������������������������������������������������ 375 Scope ����������������������������������������������������������������������������������������������������������������������������������� 376 High-Level Overview ����������������������������������������������������������������������������������������������������������� 376 Links ������������������������������������������������������������������������������������������������������������������������������������ 377 Diagramming and Visualizing Architecture ������������������������������������������������������������������������������� 377 C4 Abstractions ������������������������������������������������������������������������������������������������������������������� 379 C4 Diagrams ������������������������������������������������������������������������������������������������������������������������ 383 General Diagram Advice ������������������������������������������������������������������������������������������������������ 396 Summary����������������������������������������������������������������������������������������������������������������������������������� 398 Chapter 25: Architectural Enforcement and Governance ������������������������������������� 399 Define Clear and Comprehensive Architectural Principles �������������������������������������������������������� 400 Establishing a Governance Framework������������������������������������������������������������������������������������� 401 Architectural Enforcement Mechanisms ����������������������������������������������������������������������������������� 402 Empower Teams to Succeed ����������������������������������������������������������������������������������������������������� 404 Summary����������������������������������������������������������������������������������������������������������������������������������� 405 Chapter 26: The Art of Being an Architect ������������������������������������������������������������ 407 Identify the Problems That Require Change ������������������������������������������������������������������������������ 408 Identify Potential Changes �������������������������������������������������������������������������������������������������������� 409 The Four-Way Test ��������������������������������������������������������������������������������������������������������������� 409 Assertiveness vs� Cooperativeness ������������������������������������������������������������������������������������� 410 Table of ConTenTs
xiv The Weighted Decision Matrix ��������������������������������������������������������������������������������������������� 412 Understanding the Attributes of an Innovation �������������������������������������������������������������������� 414 Identify Resources Necessary to Make the Change ������������������������������������������������������������������ 415 Some Terminology ��������������������������������������������������������������������������������������������������������������� 415 Identify the Resources Necessary to Make the Change������������������������������������������������������������ 417 Know the Entanglement, Environment, and Endurance of Change ������������������������������������� 417 Know the Organization �������������������������������������������������������������������������������������������������������� 419 Know Yourself and Your Place in the World ������������������������������������������������������������������������� 420 Truly Know Your Counterparts ��������������������������������������������������������������������������������������������� 422 The Diagnostic Matrix ���������������������������������������������������������������������������������������������������������� 423 The Approach Matrix ����������������������������������������������������������������������������������������������������������� 426 Plan to Orchestrate the Change ������������������������������������������������������������������������������������������������ 429 Packaging Your Solution ������������������������������������������������������������������������������������������������������ 429 Optimize Your Proposed Solution����������������������������������������������������������������������������������������� 431 Optimizing Complexity ��������������������������������������������������������������������������������������������������������� 432 Optimizing Trialability ���������������������������������������������������������������������������������������������������������� 432 Optimizing Observability ������������������������������������������������������������������������������������������������������ 433 Write Down the Plan ������������������������������������������������������������������������������������������������������������ 433 Execute the Plan ����������������������������������������������������������������������������������������������������������������������� 434 Prepare for Change �������������������������������������������������������������������������������������������������������������� 434 Prepare for Success ������������������������������������������������������������������������������������������������������������ 434 Summary����������������������������������������������������������������������������������������������������������������������������������� 435 Index ��������������������������������������������������������������������������������������������������������������������� 437 Table of ConTenTs
xv About the Author Michael Carducci is a seasoned IT professional with over 25 years of experience, an author, and an internationally recognized speaker, blending expertise in software architecture with the artistry of magic and mentalism. Michael’s career spans roles from individual contributor to CTO, with a particular focus on strategic architecture and holistic transformation. Notable roles over the past 15 years include being named the chief architect at a Fortune 100 company you have certainly heard of and being named chief architect of a social media startup you certainly have not heard of. As a magician and mentalist, Michael has captivated audiences in dozens of countries, applying the same creativity and problem-solving skills that define his technology career. He excels in transforming complex technical concepts into engaging narratives, making him a sought-after speaker and emcee for tech events worldwide. In his consulting work, Michael adopts a holistic approach to software architecture, ensuring alignment with business strategy and operational realities. He empowers teams, bridges tactical and strategic objectives, and guides organizations through transformative changes, always aiming to create sustainable, adaptable solutions. Michael’s unique blend of technical acumen and performative talent makes him an unparalleled force in both the tech and entertainment industries, driven by a passion for continuous learning and a commitment to excellence.
xvii Daniel Tippie has been a software architect, software engineer, systems architect, systems engineer, and technical lead with over 17 years of experience working in both commercial and DoD software development. He has a passion for taking computer science theory, software engineering practices, and systems engineering principles and converting that knowledge into practical application. He has also spent years designing, building, and integrating complex projects of various sizes and phases of development. Daniel applies methodical and flexible approaches to everything that he does. Daniel loves to discuss computer science, math, physics, ballistics, astrodynamics, science fiction, and dogs. He has a very supportive wife, kids, parents, and in-laws. About the Contributing Author
xix Darrell Rials is an accomplished software and enterprise architect, helping teams deliver worthwhile solutions for over 25 years in the manufacturing, building automation, financial services, and telecommunications industries. A lifelong learner, writer, and teacher, Darrell maintains an abundance mindset, believes that the way we treat people matters a lot, and is grateful to be able to experience this mystery we call life. About the Technical Reviewer
xxi Acknowledgments If I have seen further, it is by standing on the shoulders of giants. —Sir Isaac Newton As I look at this long and dense manuscript that I have spent the past two years writing, I cannot help but remain surprised. Honestly, I never thought I would ever have enough to say to fill a book, let alone the ability to sit down and write one. Yet here we are. Life, sometimes, surprises us. My entire adult life I have juggled dual careers in magic and technology with an intention to retire from software and focus completely on magic. In fact, I did just that in 2014. Just when I thought I was out, they pull me back in! —Michael Corleone, The Godfather Part III I have Jay Zimmerman, founder of the No Fluff Just Stuff (NFJS) conference series, to thank for pulling me back in. In 2008 or 2009, he found me online and booked me to perform a magic show at his flagship conference, ÜberConf. At that time, nobody knew that software engineering was my “day job”; however, my domain knowledge was clearly evident in the show that I wrote, and that performance was exceptionally well received by the audience. Well, almost. As I was leaving the ballroom, I heard a voice bellow “You’re wrong, by the way!” I turned to the source of the comment, and the volunteer critic expanded on his statement, pointing out a factual error in my script. OK, the show was well received except by that one guy. You can’t please everyone. On the success of the show at ÜberConf, Jay booked me for another conference that year, this time in Florida where I delivered a similar performance. Once again, the show was exceptionally well received. While I was packing up to head to the evening reception, a member of the audience approached me to say “Kudos! You fixed your script!” It was the volunteer critic I met at ÜberConf, six months earlier. The critic was
xxii not an attendee, as I had first assumed, but rather was Brian Sletten who was—and is—a regular speaker at NoFluff events. It is Brian Sletten to whom I owe an enormous debt of gratitude. Despite a rather gruff initial interaction, Brian and I have grown to be good friends, and he has contributed enormously to my philosophy and collection of mental models. Brian is a deep thinker who is a master of critical thought and possesses the rare ability to see things as they really are. Brian is not the only NoFluff speaker who has had a profound impact on my personal and professional growth. In fact, many subsequent conference performances allowed me to meet and befriend many brilliant thought leaders. I cannot name them all; however, at a minimum, I want to thank the tour regulars. Venkat Subramanium, Ken Kousen, Raju Gandhi, Ken Sipe, Danny Brian, Daniel Hinojosa, Jonathan Johnson, Doug Hawkins, Tim Berglund, Craig Walls, Chris Maki, Nate Schutta, Scott Davis, and Llewellyn Falco have all supported me and inspired me to become who I am today. I also owe a particular debt to Mark Richards and Neal Ford. For years, these towering intellects dominated the architecture tracks at most of the conferences I have participated in. Although they are no longer regulars at NoFluff events, their friendship and influence live on. It is no surprise that I cite and quote these individuals and their work frequently throughout this book. I’m also extraordinarily grateful to Roy Fielding, both for his contributions to the Web and for his dissertation which introduced me to a new model of software architecture that has informed my thinking ever since. There is, of course, more to the story than just doing magic tricks at conferences. As the NFJS resident magician, my software bona fides were not widely known. The speakers and crew, however, welcomed me into the fold without question. Jay always recognized that there was more to me than meets the eye, and, within a year or two of giving shows, he invited me to speak. At that point, the two worlds that I fought so hard for so long to keep separate irrevocably collided. Like it or not, I was back in the game. History repeats itself. I met Martin Anderson, an early mentor and my first employer in the tech industry, when I was the resident magician at TGI Friday’s back in the late 1990s. Through sheer luck, I learned of Martin the night before we met. His name had come up as someone I should approach for an internship or junior developer role, and subsequent research turned up a personal home page he had built as an exercise to learn HTML. The website laid out his, and his family’s, whole life story. Such inside information is particularly valuable when giving mindreading demonstrations. I can aCknowledgmenTs
xxiii only imagine that the “insight” I displayed was nothing short of astounding. When I had finally deployed every fact at my disposal (and, thus, finally time to conclude my extended performance), I mentioned that I was “a keen amateur programmer” who might be in the market for an entry-level software development position. Martin responded by saying “If you’re half as good at that as you are at this, you’re hired” and gave me a job on the spot. I suppose I should have come clean to Martin, but the timing never seemed right. In the beginning, it seemed too soon to confess and pull the rug out from underneath the first impression I had created. Before long, the optimal window for sharing the truth had passed. Consequently, the story never came up. Martin, if you are learning this for the first time, let me take this opportunity to say both “Thank you” and “I’m sorry.” Another notable employer is Robert Harris, a standout boss, friend, and mentor who instilled a sense of ruthless pragmatism into me and taught me how to navigate the complex human element of software engineering. I also owe a debt to another manager, Ståle Veipe, who encouraged me to refine and sharpen my unique perspective on software architecture. Of course, I must go even further back to thank my parents, Bob and Jackie, for somehow acquiring an Apple IIgs in the 1980s, where I first learned to program. I also owe a debt to Jim Rogers, my neighbor growing up, for mentoring me during my early programming journey and who first connected me to the Internet in 1993, allowing me to participate in the dawn of the Web. Also, my sister Sara who lit the spark of magic in me at an early age, which led me to where I am today. Michael Lewis, my stepfather, also helped me greatly during my formative years exploring technology and facilitated many opportunities that were not yet commonplace. As I enumerate the names of those who have been instrumental in my journey, I realize a list of acknowledgments will never be complete. In truth, I owe a debt to so many people who have helped me along my journey. Even if you do not see your name in this section, it is not a reflection of the extent of your contribution, but rather a reflection of the challenges inherent to writing an “acknowledgments” section for a book that I know will always be incomplete. Before I close, however, I want to personally thank a few more people. I am grateful to Celestin John and the team at Apress for their patience as they waited for me to finally respond to their requests for me to join the ranks of their authors (and their patience as they waited for a completed manuscript). Thanks to my good friend, Joshua van aCknowledgmenTs