Leverage leadership knowledge to make better software architecture decisions. Think deeply but implement slowly. The overarching goal of software systems (hence, for software architecture) is to build systems that meet quality standards and that provide the highest return on investment (ROI) in the long run or within a defined period of time. A great product requires a combination of technology, leadership, and product management (including UX). Leadership is primarily about managing uncertainty and making the right judgment. To build great products, technical leaders need to combine…mehr
Leverage leadership knowledge to make better software architecture decisions. Think deeply but implement slowly. The overarching goal of software systems (hence, for software architecture) is to build systems that meet quality standards and that provide the highest return on investment (ROI) in the long run or within a defined period of time. A great product requires a combination of technology, leadership, and product management (including UX). Leadership is primarily about managing uncertainty and making the right judgment. To build great products, technical leaders need to combine technology, leadership, and product management knowledge, and make the right decisions. Many technical mistakes come from the gap between knowledge about these three items and judgment. In Software Architecture and Decision-Making, Srinath Perera explains principles and concepts that software architects must understand deeply and how to employ those principles to manage uncertainty. The questions and principles discussed in this book help manage uncertainty while building software architecture and provide a framework for making decisions. This book is for all technical leaders in the software industry who make holistic judgments about the systems they build and for future leaders learning the craft. * Understand the importance of strong decision making with examples from great technical leaders such as the Wright brothers and Kelly Johnson * Leverage five key questions and seven important principles to understand uncertainties during the design process and make strategic architectural decisions * Approach the design systematically, first at the macro level and then the individual service level This definitive guide explains principles and concepts--technical and non-technical alike--that software architects, senior software engineers, and technical leads must understand to manage the inevitable uncertainty involved in building software systems and to drive success of the products for which they are responsible. Register your book for convenient access to downloads, updates, and/or corrections as they become available. See inside book for details.Hinweis: Dieser Artikel kann nur an eine deutsche Lieferadresse ausgeliefert werden.
Srinath Perera has been an Apache open source developer for the last 20 years. He has played a major role in the architecture of Apache Axis2, Apache Airavata, WSO2 CEP (Siddhi), and WSO2 Choreo. He has designed two SOAP engines and helped build four. He is a committer (a developer who can commit to a code base) for Apache Axis, Axis2, Apache Geronimo, and Apache Airavata. He joined WSO2 in 2009 after finishing his PhD. WSO2 products are used by many Fortune 500 companies such as airlines, banks, and governments. At WSO2, he has played an architecture review role for 10+ projects and 100+ releases. He reviewed hundreds of customer solution architectures and deployments and sat in on thousands of architecture reviews. He has published 40+ peer-reviewed research articles, which have been referenced by thousands of other research publications.
Inhaltsangabe
Chapter 1: Introduction to Software Leadership 1 Role of Judgment 1 Goal of This Book 3 Part I: Introduction 6 Part II: Essential Background 7 Part III: System Design 7 Part IV: Putting Everything Together 8
Chapter 2: Understanding Systems, Design, and Architecture 9 What Is Software Architecture? 9 How to Design a System 11 Five Questions 12 Seven Principles: The Overarching Concepts 16 Designing for an Online Bookstore 24 Designing for the Cloud 27 Summary 29
Chapter 3: Mental Models for Understanding and Explaining System Performance 31 A Computer System 32 Models for Performance 33 Optimization Techniques 41 Intuitive Feel for Performance 46 Leadership Considerations 46 Summary 47
Chapter 4: Understanding User Experience (UX) 49 General UX Concepts for Architects 49 UX Design for Configurations 53 UX Design for APIs 54 UX Design for Extensions 56 Leadership Considerations 57 Summary 57
Chapter 5: Macro Architecture: Introduction 59 History of Macro Architecture 60 Modern Architectures 62 Macro Architectural Building Blocks 63 Leadership Considerations 66 Summary 68
Chapter 6: Macro Architecture: Coordination 69 Approach 1: Drive Flow from Client 69 Approach 2: Use Another Service 70 Approach 3: Use Centralized Middleware 71 Approach 4: Implement Choreography 71 Leadership Considerations 73 Summary 73
Chapter 7: Macro Architecture: Preserving Consistency of State 75 Why Transactions? 75 Why Do We Need to Go Beyond Transactions? 76 Going Beyond Transactions 77 Best Practices 80 Leadership Considerations 81 Summary 83
Chapter 8: Macro Architecture: Handling Security 85 User Management 86 Interaction Security 88 Storage, GDPR, and Other Regulations 96 Security Strategy and Advice 98 Leadership Considerations 101 Summary 103
Chapter 9: Macro Architecture: Handling High Availability and Scale 105 Adding High Availability 105 Understanding Scalability 109 Scaling for a Modern Architecture: Base Solution 110 Scaling: The Tools of Trade 111 Building Scalable Systems 113 Leadership Considerations 117 Summary 118
Chapter 10: Macro Architecture: Microservices Considerations 119 Decision 1: Handling Shared Database(s) 120 Decision 2: Securing Microservices 122 Decision 3: Coordinating Microservices 122 Decision 4: Avoiding Dependency Hell 122 Loosely Coupled, Repository-Based Teams as an Alternative to Microservices 125 Leadership Considerations 126 Summary 127
Chapter 11: Server Architectures 129 Writing a Service 129 Understanding Best Practices for Writing a Service 130 Understanding Advanced Techniques 132 Using These Techniques in Practice 143 Leadership Considerations 146 Summary 147
Chapter 12: Building Stable Systems 149 Why Do Systems Fail, and What Can We Do About Them? 149 How to Handle Known Errors 151 Common Bugs 159 How to Handle Unknown Errors 161 Graceful Degradation 163 Leadership Considerations 163 Summary 164
Chapter 13: Building and Evolving the Systems 165 Getting Your Hands Dirty 165 Communicating the Design 172 Evolving the System: How to Learn from Your Users and Improve the System 172 Leadership Considerations 175 Summary 176
Chapter 1: Introduction to Software Leadership 1 Role of Judgment 1 Goal of This Book 3 Part I: Introduction 6 Part II: Essential Background 7 Part III: System Design 7 Part IV: Putting Everything Together 8
Chapter 2: Understanding Systems, Design, and Architecture 9 What Is Software Architecture? 9 How to Design a System 11 Five Questions 12 Seven Principles: The Overarching Concepts 16 Designing for an Online Bookstore 24 Designing for the Cloud 27 Summary 29
Chapter 3: Mental Models for Understanding and Explaining System Performance 31 A Computer System 32 Models for Performance 33 Optimization Techniques 41 Intuitive Feel for Performance 46 Leadership Considerations 46 Summary 47
Chapter 4: Understanding User Experience (UX) 49 General UX Concepts for Architects 49 UX Design for Configurations 53 UX Design for APIs 54 UX Design for Extensions 56 Leadership Considerations 57 Summary 57
Chapter 5: Macro Architecture: Introduction 59 History of Macro Architecture 60 Modern Architectures 62 Macro Architectural Building Blocks 63 Leadership Considerations 66 Summary 68
Chapter 6: Macro Architecture: Coordination 69 Approach 1: Drive Flow from Client 69 Approach 2: Use Another Service 70 Approach 3: Use Centralized Middleware 71 Approach 4: Implement Choreography 71 Leadership Considerations 73 Summary 73
Chapter 7: Macro Architecture: Preserving Consistency of State 75 Why Transactions? 75 Why Do We Need to Go Beyond Transactions? 76 Going Beyond Transactions 77 Best Practices 80 Leadership Considerations 81 Summary 83
Chapter 8: Macro Architecture: Handling Security 85 User Management 86 Interaction Security 88 Storage, GDPR, and Other Regulations 96 Security Strategy and Advice 98 Leadership Considerations 101 Summary 103
Chapter 9: Macro Architecture: Handling High Availability and Scale 105 Adding High Availability 105 Understanding Scalability 109 Scaling for a Modern Architecture: Base Solution 110 Scaling: The Tools of Trade 111 Building Scalable Systems 113 Leadership Considerations 117 Summary 118
Chapter 10: Macro Architecture: Microservices Considerations 119 Decision 1: Handling Shared Database(s) 120 Decision 2: Securing Microservices 122 Decision 3: Coordinating Microservices 122 Decision 4: Avoiding Dependency Hell 122 Loosely Coupled, Repository-Based Teams as an Alternative to Microservices 125 Leadership Considerations 126 Summary 127
Chapter 11: Server Architectures 129 Writing a Service 129 Understanding Best Practices for Writing a Service 130 Understanding Advanced Techniques 132 Using These Techniques in Practice 143 Leadership Considerations 146 Summary 147
Chapter 12: Building Stable Systems 149 Why Do Systems Fail, and What Can We Do About Them? 149 How to Handle Known Errors 151 Common Bugs 159 How to Handle Unknown Errors 161 Graceful Degradation 163 Leadership Considerations 163 Summary 164
Chapter 13: Building and Evolving the Systems 165 Getting Your Hands Dirty 165 Communicating the Design 172 Evolving the System: How to Learn from Your Users and Improve the System 172 Leadership Considerations 175 Summary 176
Index 179
Es gelten unsere Allgemeinen Geschäftsbedingungen: www.buecher.de/agb
Impressum
www.buecher.de ist ein Internetauftritt der buecher.de internetstores GmbH
Geschäftsführung: Monica Sawhney | Roland Kölbl | Günter Hilger
Sitz der Gesellschaft: Batheyer Straße 115 - 117, 58099 Hagen
Postanschrift: Bürgermeister-Wegele-Str. 12, 86167 Augsburg
Amtsgericht Hagen HRB 13257
Steuernummer: 321/5800/1497
USt-IdNr: DE450055826