軟件架構(gòu)難點(diǎn)解惑(Software Architecture: The Hard Parts 影
定 價:138 元
- 作者:[美]尼爾·福特(NealFord)著
- 出版時間:2023/3/1
- ISBN:9787576605914
- 出 版 社:東南大學(xué)出版社
- 中圖法分類:TP311.1
- 頁碼:441
- 紙張:膠版紙
- 版次:1
- 開本:16開
在軟件架構(gòu)中沒有哪個決定是輕而易舉的。相反,有許多艱難的部分,要么是難題,要么是缺少最佳實(shí)踐,這迫使你在各種妥協(xié)中做出選擇。通過本書,你將學(xué)會如何批判性地思考分布式架構(gòu)的利弊。
軟件架構(gòu)老兵和實(shí)踐顧問Neal Ford、Mark Richards、Pramod Sadalage、zhamak Dehghani討論了選擇適合架構(gòu)的策略。全書交織著一群虛構(gòu)的技術(shù)專業(yè)人員(Sysops Squad)的故事,他們研究了從如何確定服務(wù)粒度、管理工作流和編排、管理和解耦契約、管理分布式事務(wù)到如何優(yōu)化可擴(kuò)展性、彈性和性能等操作特性的一切問題。
本書通過關(guān)注常見的問題,提供了一些技巧,幫助你在面對架構(gòu)問題時進(jìn)行權(quán)衡。
·分析權(quán)衡并有效記錄你的決策
·作出更好的服務(wù)粒度決策
·理解拆分單體應(yīng)用的復(fù)雜性
·管理和解耦服務(wù)之間的契約
·在高度分布式架構(gòu)中處理數(shù)據(jù)
·學(xué)習(xí)在分解應(yīng)用時的工作流和事務(wù)管理模式
尼爾·福特(Neal Ford)是ThoughtWorks軟件架構(gòu)師、Meme Wrangler,曾任DSW集團(tuán)CTO,是國際公認(rèn)的軟件開發(fā)與交付專家。
Preface
1. What Happens When There Are No\"Best Practices\"?
Why \"The Hard Parts\"?
Giving Timeless Advice About Software Architecture
The Importance of Data in Architecture
Architectural Decision Records
Architecture Fitness Functions
Using Fitness Functions
Architecture Versus Design: Keeping Definitions Simple
Introducing the Sysops Squad Saga
Nonticketing Work_flow
Ticketing Workflow
A Bad Scenario
Sysops Squad Architectural Components
Sysops Squad Data Model
Part I. Pulling Things Apart
2. Discerning Coupling in Software Architecture
Architecture (Quantum [ Quanta)
Independently Deployable
High Functional Cohesion
High Static Coupling
Dynamic Quantum Coupling
Sysops Squad Saga: Understanding Quanta
3. Architectural Modularity
Modularity Drivers
Maintainability
Testability
Deployability
Scalability
Availability/Fault Tolerance
Sysops Squad Saga: Creating a Business Case
4. Architectural Decomposition
Is the Codebase Decomposable?
Afferent and Efferent Coupling
Abstractness and Instability
Distance from the Main Sequence
Component-Based Decomposition
Tactical Forking
Trade-Offs
Sysops Squad Saga: Choosing a Decomposition Approach
5. Component-Based Decomposition Patterns
Identify and Size Components Pattern
Pattern Description
Fitness Functions for Governance
Sysops Squad Saga: Sizing Components
Gather Common Domain Components Pattern
Pattern Description
Fitness Functions for Governance
Sysops Squad Saga: Gathering Common Components
Flatten Components Pattern
Pattern' Description
Fitness Functions for Governance
Sysops Squad Saga: Flattening Components
Determine Component Dependencies Pattern
Pattern Description
Fitness Functions for Governance
Sysops Squad Saga: Identifying Component Dependencies
Create Component Domains Pattern
Pattern Description
Fitness Functions for Governance
Sysops Squad Saga: Creating Component Domains
Create Domain Services Pattern
Pattern Description
Fitness Functions for Governance
Sysops Squad Saga: Creating Domain Services
Summary
6. Pulling Apart Operational Data
Data Decomposition Drivers
Data Disintegrators
Data Integrators
Sysops Squad Saga: Justifying Database Decomposition
Decomposing Monolithic Data
Step 1: Analyze Database and Create Data Domains
Step 2: Assign Tables to Data Domains
Step 3: Separate Database Connections to Data Domains
Step 4: Move Schemas to Separate Database Servers
Step 5: Switch Over to Independent Database Servers
Selecting a Database Type
Relational Databases
Key-Value Databases
Document Databases
Column Family Databases
Graph Databases
NewSQL Databases
Cloud Native Databases
Time-Series Databases
Sysops Squad Saga: Polyglot Databases
7. Service Granularity
Granularity Disintegrators
Service Scope and Function
Code Volatility
Scalability and Throughput
Fault Tolerance
Security
Extensibility
Granularity Integrators
Database Transactions
Workflow and Choreography
Shared Code
Data Relationships
Finding the Right Balance
Sysops Squad Saga: Ticket Assignment Granularity
Sysops Squad Saga: Customer Registration Granularity
Part II. Putting Things Back Together
8. Reuse Patterns
Code Replication
When to Use
Shared Library
Dependency Management and Change Control
Versioning Strategies
When To Use
Shared Service
Change Risk
Performance
Scalability
Fault Tolerance
When to Use
Sidecars and Servic