logo
分类于: 设计 计算机基础

简介

Building Evolutionary Architectures: Support Constant Change

Building Evolutionary Architectures: Support Constant Change 7.4分

资源最后更新于 2020-09-26 17:39:58

作者:Neal Ford

出版社:O'Reilly Media

出版日期:2017-01

ISBN:9781491986363

文件格式: pdf

标签: 架构 软件工程 软件开发 architecture 计算机 Software_Architecture 计算机科学 ThoughtWorks

简介· · · · · ·

The software development ecosystem is constantly changing, providing a constant stream of new tools, frameworks, techniques, and paradigms. Over the past few years, incremental developments in core engineering practices for software development have created the foundations for rethinking how architecture changes over time, along with ways to protect important architectural char...

想要: 点击会收藏到你的 我的收藏,可以在这里查看

已收: 表示已经收藏

Tips: 注册一个用户 可以通过用户中心得到电子书更新的通知哦

目录

Foreword
Preface
Conventions Used in This Book
O’Reilly Safari
How to Contact Us
Additional Information
Acknowledgments
1. Software Architecture
Evolutionary Architecture
How Is Long-term Planning Possible When Everything Changes All the Time?
Once I’ve Built an Architecture, How Can I Prevent It from Gradually Degrading Over Time?
Incremental Change
Guided Change
Multiple Architectural Dimensions
Conway’s Law
Why Evolutionary?
Summary
2. Fitness Functions
What is a Fitness Function?
Categories
Atomic Versus Holistic
Triggered Versus Continual
Static Versus Dynamic
Automated Versus Manual
Temporal
Intentional Over Emergent
Domain-specific
Identify Fitness Functions Early
Review Fitness Functions
3. Engineering Incremental Change
Building Blocks
Testable
Deployment Pipelines
Combining Fitness Function Categories
Case Study: Architectural Restructuring while Deploying 60 Times/Day
Conflicting Goals
Case Study: Adding Fitness Functions to PenultimateWidgets’ Invoicing Service
Hypothesis- and Data-Driven Development
Case Study: What to Port?
4. Architectural Coupling
Modularity
Architectural Quanta and Granularity
Evolvability of Architectural Styles
Big Ball of Mud
Monoliths
Event-Driven Architectures
Service-Oriented Architectures
“Serverless” Architectures
Controlling Quantum Size
Case Study: Guarding Against Component Cycles
5. Evolutionary Data
Evolutionary Database Design
Evolving Schemas
Shared Database Integration
Inappropriate Data Coupling
Two-Phase Commit Transactions
Age and Quality of Data
Case Study: Evolving PenultimateWidgets’ Routing
6. Building Evolvable Architectures
Mechanics
1. Identify Dimensions Affected by Evolution
2. Define Fitness Function(s) for Each Dimension
3. Use Deployment Pipelines to Automate Fitness Functions
Greenfield Projects
Retrofitting Existing Architectures
Appropriate Coupling and Cohesion
Engineering Practices
Fitness Functions
COTS Implications
Migrating Architectures
Migration Steps
Evolving Module Interactions
Guidelines for Building Evolutionary Architectures
Remove Needless Variability
Make Decisions Reversible
Prefer Evolvable over Predictable
Build Anticorruption Layers
Case Study: Service Templates
Build Sacrificial Architectures
Mitigate External Change
Updating Libraries Versus Frameworks
Prefer Continuous Delivery to Snapshots
Version Services Internally
Case Study: Evolving PenultimateWidgets’ Ratings
7. Evolutionary Architecture Pitfalls and Antipatterns
Technical Architecture
Antipattern: Vendor King
Pitfall: Leaky Abstractions
Antipattern: Last 10% Trap
Antipattern: Code Reuse Abuse
Case Study: Reuse at PenultimateWidgets
Pitfall: Resume-Driven Development
Incremental Change
Antipattern: Inappropriate Governance
Case Study: Goldilocks Governance at PenultimateWidgets
Pitfall: Lack of Speed to Release
Business Concerns
Pitfall: Product Customization
Antipattern: Reporting
Pitfall: Planning Horizons
8. Putting Evolutionary Architecture into Practice
Organizational Factors
Cross-Functional Teams
Organized Around Business Capabilities
Product over Project
Dealing with External Change
Connections Between Team Members
Team Coupling Characteristics
Culture
Culture of Experimentation
CFO and Budgeting
Building Enterprise Fitness Functions
Case Study: PenultimateWidgets as a Platform
Where Do You Start?
Low-Hanging Fruit
Highest-Value
Testing
Infrastructure
Case Study: Enterprise Architecture at PenultimateWidgets
Future State?
Fitness Functions Using AI
Generative Testing
Why (or Why Not)?
Why Should a Company Decide to Build an Evolutionary Architecture?
Case Study: Selective Scale at PenultimateWidgets
Why Would a Company Choose Not to Build an Evolutionary Architecture?
Convincing Others
Case Study: Consulting Judo
The Business Case
“The Future Is Already Here…”
Moving Fast Without Breaking Things
Less Risk
New Capabilities
Building Evolutionary Architectures
Index