Description

Book Synopsis

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.



Table of Contents

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

Software Architecture and DecisionMaking

    Product form

    £28.79

    Includes FREE delivery

    RRP £31.99 – you save £3.20 (10%)

    Order before 4pm today for delivery by Sat 1 Aug 2026.

    A Paperback / softback by Srinath Perera

      Trusted by thousands of customers. See 2,385+ Customer Reviews

      View other formats and editions of Software Architecture and DecisionMaking by Srinath Perera

      Publisher: Pearson Education (US)
      Publication Date: Publication Date: 02/01/2024
      ISBN13: 9780138249731, 978-0138249731
      ISBN10: 0138249733

      Description

      Book Synopsis

      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.



      Table of Contents

      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

      Recently viewed products

      © 2026 Book Curl

        • American Express
        • Apple Pay
        • Diners Club
        • Discover
        • Google Pay
        • Maestro
        • Mastercard
        • PayPal
        • Shop Pay
        • Union Pay
        • Visa

        Login

        Forgot your password?

        Don't have an account yet?
        Create account