Software Architecture and Decision-Making: Leveraging Leadership, Technology, and Product Management to Build Great Products, 1st edition
BRAND: PEARSON
Publisher: | Addison-Wesley Professional |
Author: | Srinath Perera |
Edition: | (November 21, 2023) © 2024 |
eBook ISBN: | 9780138249595 |
Print ISBN: | 9780138249731 |
Type: | 1 Year Subscription. Dành cho Cá nhân |
eBook edition. 1 Year Subscription. Dành cho Cá nhân | Trường ĐH, Nhóm, Thư Viện: Gọi 0915920514 để báo giá Pearson, Vital Source eBook hoặc mua Sách In
See what in the box
Mô tả sản phẩm
Tận dụng kiến thức lãnh đạo để đưa ra quyết định về kiến trúc phần mềm tốt hơn. Hãy suy nghĩ sâu sắc nhưng thực hiện từ từ.
Mục tiêu bao trùm của hệ thống phần mềm (do đó, đối với kiến trúc phần mềm) là xây dựng các hệ thống đáp ứng các tiêu chuẩn chất lượng và mang lại lợi tức đầu tư (ROI) cao nhất trong thời gian dài hoặc trong một khoảng thời gian xác định.
Một sản phẩm tuyệt vời đòi hỏi sự kết hợp giữa công nghệ, khả năng lãnh đạo và quản lý sản phẩm (bao gồm cả UX). Lãnh đạo chủ yếu là quản lý sự không chắc chắn và đưa ra phán đoán đúng đắn. Để xây dựng những sản phẩm tuyệt vời, các nhà lãnh đạo kỹ thuật cần kết hợp kiến thức về công nghệ, khả năng lãnh đạo và quản lý sản phẩm cũng như đưa ra quyết định đúng đắn. Nhiều lỗi kỹ thuật xuất phát từ khoảng cách giữa kiến thức về ba mục này và phán đoán.
Trong Kiến trúc phần mềm và ra quyết định, Srinath Perera giải thích các nguyên tắc và khái niệm mà kiến trúc sư phần mềm phải hiểu sâu sắc và cách sử dụng những nguyên tắc đó để quản lý sự không chắc chắn. Các câu hỏi và nguyên tắc được thảo luận trong cuốn sách này giúp quản lý sự không chắc chắn trong khi xây dựng kiến trúc phần mềm và cung cấp một khuôn khổ để đưa ra quyết định. Cuốn sách này dành cho tất cả các nhà lãnh đạo kỹ thuật trong ngành công nghiệp phần mềm, những người đưa ra những đánh giá toàn diện về hệ thống mà họ xây dựng và dành cho các nhà lãnh đạo tương lai đang học nghề.
Hiểu được tầm quan trọng của việc ra quyết định đúng đắn với những ví dụ từ các nhà lãnh đạo kỹ thuật vĩ đại như anh em nhà Wright và Kelly Johnson
Tận dụng năm câu hỏi chính và bảy nguyên tắc quan trọng để hiểu những điều không chắc chắn trong quá trình thiết kế và đưa ra các quyết định kiến trúc chiến lược
Tiếp cận thiết kế một cách có hệ thống, đầu tiên ở cấp độ vĩ mô và sau đó là cấp độ dịch vụ cá nhân
Hướng dẫn dứt khoát này giải thích các nguyên tắc và khái niệm--kỹ thuật và phi kỹ thuật giống nhau--mà các kiến trúc sư phần mềm, kỹ sư phần mềm cao cấp và lãnh đạo kỹ thuật phải hiểu để quản lý sự không chắc chắn không thể tránh khỏi liên quan đến việc xây dựng hệ thống phần mềm và thúc đẩy sự thành công của các sản phẩm mà họ chịu trách nhiệm.
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
Tận dụng kiến thức lãnh đạo để đưa ra quyết định về kiến trúc phần mềm tốt hơn. Hãy suy nghĩ sâu sắc nhưng thực hiện từ từ.
Mục tiêu bao trùm của hệ thống phần mềm (do đó, đối với kiến trúc phần mềm) là xây dựng các hệ thống đáp ứng các tiêu chuẩn chất lượng và mang lại lợi tức đầu tư (ROI) cao nhất trong thời gian dài hoặc trong một khoảng thời gian xác định.
Một sản phẩm tuyệt vời đòi hỏi sự kết hợp giữa công nghệ, khả năng lãnh đạo và quản lý sản phẩm (bao gồm cả UX). Lãnh đạo chủ yếu là quản lý sự không chắc chắn và đưa ra phán đoán đúng đắn. Để xây dựng những sản phẩm tuyệt vời, các nhà lãnh đạo kỹ thuật cần kết hợp kiến thức về công nghệ, khả năng lãnh đạo và quản lý sản phẩm cũng như đưa ra quyết định đúng đắn. Nhiều lỗi kỹ thuật xuất phát từ khoảng cách giữa kiến thức về ba mục này và phán đoán.
Trong Kiến trúc phần mềm và ra quyết định, Srinath Perera giải thích các nguyên tắc và khái niệm mà kiến trúc sư phần mềm phải hiểu sâu sắc và cách sử dụng những nguyên tắc đó để quản lý sự không chắc chắn. Các câu hỏi và nguyên tắc được thảo luận trong cuốn sách này giúp quản lý sự không chắc chắn trong khi xây dựng kiến trúc phần mềm và cung cấp một khuôn khổ để đưa ra quyết định. Cuốn sách này dành cho tất cả các nhà lãnh đạo kỹ thuật trong ngành công nghiệp phần mềm, những người đưa ra những đánh giá toàn diện về hệ thống mà họ xây dựng và dành cho các nhà lãnh đạo tương lai đang học nghề.
Hiểu được tầm quan trọng của việc ra quyết định đúng đắn với những ví dụ từ các nhà lãnh đạo kỹ thuật vĩ đại như anh em nhà Wright và Kelly Johnson
Tận dụng năm câu hỏi chính và bảy nguyên tắc quan trọng để hiểu những điều không chắc chắn trong quá trình thiết kế và đưa ra các quyết định kiến trúc chiến lược
Tiếp cận thiết kế một cách có hệ thống, đầu tiên ở cấp độ vĩ mô và sau đó là cấp độ dịch vụ cá nhân
Hướng dẫn dứt khoát này giải thích các nguyên tắc và khái niệm--kỹ thuật và phi kỹ thuật giống nhau--mà các kiến trúc sư phần mềm, kỹ sư phần mềm cao cấp và lãnh đạo kỹ thuật phải hiểu để quản lý sự không chắc chắn không thể tránh khỏi liên quan đến việc xây dựng hệ thống phần mềm và thúc đẩy sự thành công của các sản phẩm mà họ chịu trách nhiệm.
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