Published by Addison-Wesley Professional (June 23, 2021) © 2021
Eoin Woods | Murat Erder | Pierre Pureur
Update Your Architectural Practices for New Challenges, Environments, and Stakeholder Expectations
As part of the Vaughn Vernon Signature Series, this title was hand-selected for the practical, delivery-oriented knowledge that architects and software engineers can quickly apply. It includes in-depth guidance for addressing today's key quality attributes and cross-cutting concerns such as security, performance, scalability, resilience, data, and emerging technologies. Each key technique is demonstrated through a start-to-finish case study reflecting the authors' deep experience with complex software environments. Key topics include:
"I am continuously delighted and inspired by the work of these authors. Their first book laid the groundwork for understanding how to evolve the architecture of a software-intensive system, and this latest one builds on it in some wonderfully actionable ways."Authors Murat Erder, Pierre Pureur, and Eoin Woods have taken their extensive software architecture experience and applied it to the practical aspects of software architecture in real-world environments. Continuous Architecture in Practice provides hands-on advice for leveraging the continuous architecture approach in real-world environments and illuminates architecture's changing role in the age of Agile, DevOps, and cloud platforms. This guide will help technologists update their architecture practice for new software challenges.
--Grady Booch, Chief Scientist for Software Engineering, IBM Research
As part of the Vaughn Vernon Signature Series, this title was hand-selected for the practical, delivery-oriented knowledge that architects and software engineers can quickly apply. It includes in-depth guidance for addressing today's key quality attributes and cross-cutting concerns such as security, performance, scalability, resilience, data, and emerging technologies. Each key technique is demonstrated through a start-to-finish case study reflecting the authors' deep experience with complex software environments. Key topics include:
- Creating sustainable, coherent systems that meet functional requirements and the quality attributes stakeholders care about
- Understanding team-based software architecture and architecture as a "flow of decisions"
- Understanding crucial issues of data management, integration, and change, and the impact of varied data technologies on architecture
- Architecting for security, including continuous threat modeling and mitigation
- Architecting for scalability and resilience, including scaling microservices and serverless environments
- Using architecture to improve performance in continuous delivery environments
- Using architecture to apply emerging technologies successfully
Foreword by Vaughn Vernon, Series Editor xv
Foreword by Kurt Bittner xix
Introduction xxi
Acknowledgments xxv
About the Authors xxvii
Chapter 1: Why Software Architecture Is More Important than Ever 1
What Do We Mean by Architecture? 1
Software Industry Today 3
Current Challenges with Software Architecture 5
Software Architecture in an (Increasingly) Agile World 8
Introducing Continuous Architecture 11
Applying Continuous Architecture 17
Introduction to the Case Study 19
Summary 22
Chapter 2: Architecture in Practice: Essential Activities 23
Essential Activities Overview 24
Architectural Decisions 26
Quality Attributes 32
Technical Debt 36
Feedback Loops: Evolving an Architecture 42
Common Themes in Today's Software Architecture Practice 48
Summary 54
Chapter 3: Data Architecture 55
Data as an Architectural Concern 56
Key Technology Trends 60
Additional Architectural Considerations 76
Summary 84
Further Reading 85
Chapter 4: Security as an Architectural Concern 87
Security in an Architectural Context 88
Architecting for Security 92
Architectural Tactics for Mitigation 101
Maintaining Security 115
Summary 119
Further Reading 119
Chapter 5: Scalability as an Architectural Concern 123
Scalability in the Architectural Context 124
Architecting for Scalability: Architecture Tactics 134
Summary 155
Further Reading 156
Chapter 6: Performance as an Architectural Concern 159
Performance in the Architectural Context 159
Architecting for Performance 163
Summary 183
Further Reading 184
Chapter 7: Resilience as an Architectural Concern 187
Resilience in an Architectural Context 188
Architecting for Resilience 195
Architectural Tactics for Resilience 200
Maintaining Resilience 216
Summary 222
Further Reading 223
Chapter 8: Software Architecture and Emerging Technologies 225
Using Architecture to Deal with Technical Risk Introduced by New Technologies 226
Introduction to Artificial Intelligence, Machine Learning, and Deep Learning 227
Using Machine Learning for TFX 230
Using a Shared Ledger for TFX 246
Summary 257
Further Reading 258
Chapter 9: Conclusion 259
What Changed and What Remained the Same? 259
Updating Architecture Practice 261
Data 263
Key Quality Attributes 264
The Architect in the Modern Era 267
Putting Continuous Architecture in Practice 268
Appendix A: Case Study 269
Appendix B: Comparison of Technical Implementations of Shared Ledgers 299
Glossary 301
Index 311
Foreword by Kurt Bittner xix
Introduction xxi
Acknowledgments xxv
About the Authors xxvii
Chapter 1: Why Software Architecture Is More Important than Ever 1
What Do We Mean by Architecture? 1
Software Industry Today 3
Current Challenges with Software Architecture 5
Software Architecture in an (Increasingly) Agile World 8
Introducing Continuous Architecture 11
Applying Continuous Architecture 17
Introduction to the Case Study 19
Summary 22
Chapter 2: Architecture in Practice: Essential Activities 23
Essential Activities Overview 24
Architectural Decisions 26
Quality Attributes 32
Technical Debt 36
Feedback Loops: Evolving an Architecture 42
Common Themes in Today's Software Architecture Practice 48
Summary 54
Chapter 3: Data Architecture 55
Data as an Architectural Concern 56
Key Technology Trends 60
Additional Architectural Considerations 76
Summary 84
Further Reading 85
Chapter 4: Security as an Architectural Concern 87
Security in an Architectural Context 88
Architecting for Security 92
Architectural Tactics for Mitigation 101
Maintaining Security 115
Summary 119
Further Reading 119
Chapter 5: Scalability as an Architectural Concern 123
Scalability in the Architectural Context 124
Architecting for Scalability: Architecture Tactics 134
Summary 155
Further Reading 156
Chapter 6: Performance as an Architectural Concern 159
Performance in the Architectural Context 159
Architecting for Performance 163
Summary 183
Further Reading 184
Chapter 7: Resilience as an Architectural Concern 187
Resilience in an Architectural Context 188
Architecting for Resilience 195
Architectural Tactics for Resilience 200
Maintaining Resilience 216
Summary 222
Further Reading 223
Chapter 8: Software Architecture and Emerging Technologies 225
Using Architecture to Deal with Technical Risk Introduced by New Technologies 226
Introduction to Artificial Intelligence, Machine Learning, and Deep Learning 227
Using Machine Learning for TFX 230
Using a Shared Ledger for TFX 246
Summary 257
Further Reading 258
Chapter 9: Conclusion 259
What Changed and What Remained the Same? 259
Updating Architecture Practice 261
Data 263
Key Quality Attributes 264
The Architect in the Modern Era 267
Putting Continuous Architecture in Practice 268
Appendix A: Case Study 269
Appendix B: Comparison of Technical Implementations of Shared Ledgers 299
Glossary 301
Index 311