限时领|《AI 百问百答》专栏课+实体书(包邮)! 了解详情
写点什么

体系架构的生命期:对业务的影响以及如何构建更持久的体系架构

  • 2008-10-06
  • 本文字数:1363 字

    阅读完需:约 4 分钟

什么是体系架构的生命期?应该考虑到何种程度?它对业务可能有何影响?为了回答这些问题,Dan Pritchett 引入了“体系架构保质期”的概念,他将其定义为“开始设计新的系统时,一组模式和技术的适用期限”。他认为体系架构保质期能持续5 年左右,经过两到三代以后,任何体系架构至少会有部分的改变。否则,该体系架构就会很陈旧,而且在适应业务需求发展时会引起成本的增加。基于此,Pritchett 认为“体系架构通常有10 到15 年的有效期”。为了支持自己的论点,他给出了自1990 年以来发生的技术、体系架构演进的一系列例证。

Pritchett 主张,如果没有在体系架构生命期结束的时候更新体系架构,可能会对业务有重大的影响。但他也承认,改变主要的体系架构会导致可观的成本,尤其是“你在供应链里已经拥有了坚实的客户基础,以及超值的业务特性”。正如争论:是否应该避免架构重写?中涉及的几个作者所强调的一样,改变甚至是破坏性的。不过 Pritchett 认为,不采用新的模式和技术会带来更大的成本。这些技术和模式通常有助于提高开发者的效率、降低部署的成本。拒绝利用这一潜在的竞争优势相当于让竞争对手占尽先机,对业务来说这可是致命的:

被忽略的是,新的模式和平台无论如何都能用来破坏你的业务。如果你拥有成功的业务,许多人也会想分一杯羹。技术就成了他们追赶你业务的工具。他们会以更低的成本或者更具竞争力的特性提供和你一样的服务,这引起的破坏可要远甚于内部体系架构改变所引起的破坏。

在他第一篇文章的续作中,Pritchett 提出随着新模式和技术的涌现,主要体系架构改变的必然性上存在一些细微的差别。他曾经讲过,体系架构的生命期依赖于其轻松扩展以适应演进业务需求的能力,他将这一点转换为技术术语,解释为“随着不断风行的新技术而被更新”的能力。“遵循优良构件设计的标准体系架构原则,保持组件间最大限度的松耦合度”能强化这一能力,使得这些构件可以相互独立地实现和演进。基于识别的一些常见错误,Pritchett 提取出了一 些要构建更持久的体系架构可采纳的原则

1. 接口协议和实现策略之间的解耦。这将增加“构件在可选实现技术之间移植的灵活性”。Pritchett 建议,构件之间定义像 XML 或 JSON 之类的、基于文本的接口可以达到这个目的。

2. 注重关注点分离,即使两个关注点的初始大小差别很大。这可以避免如下情形:为现有构件增加一个新特性,随着该新特性逐渐发展,你最终等于把两个组件实现成一个严重耦合、相互纠缠、难于解耦的组件,特别是当“解耦后无法保持客户已经习惯的旧有行为”,更加难以解耦。

3. 避免无意识的供应商依赖,这种依赖需要深入理解供应商的产品、它们对体系架构及其含义的影响。

4. 最小化持久化绑定,避免数据库依赖。对实体的关键访问路径应该仅通过主键,其它访问路径则应该在资源层进行分离,以便将来在其它形式的持久化中能处理这些可选路径。

遵循以上尽可能降低耦合度的规则可以让我们构建灵活的体系架构,这样的体系架构更容易与新技术和新模式集成,从而降低改变的成本、延长体系架构的生命期。

查看英文原文: Architecture Life Span:Implications on Business and how to build more Long-lasting Architecture


译者简介: 张兵,有 Web 应用开发、XML 技术、消息中间件和企业服务总线等方面的开发经验,对 SOA 领域比较熟悉,关注软件架构技术和有效的项目管理。

2008-10-06 01:161094

评论

发布
暂无评论
发现更多内容

MongoDB源码学习:原子操作WriteUnitOfWork

云里有只猫

mongodb 源码刨析

Focus Matrix for Mac(智能任务管理器) v1.6.1激活版

Rose

Focus Matrix Focus Matrix破解 focus matrix mac激活版 智能任务管理器

爱了,Spring Cloud Alibaba内部微服务架构笔记真的太牛了

Java你猿哥

Java 微服务 微服务架构 Spring Cloud ssm

开源赋能 普惠未来|OpenHarmony诚邀您参与2023开放原子全球开源峰会

开放原子开源基金会

开源 OpenHarmony 开放原子

强渡大渡河!华为云GaussDB支撑华为MetaERP系统全面替换

YG科技

火山引擎DataLeap的Catalog系统搜索实践(三):Learning to rank与后续工作

字节跳动数据平台

数据湖 数据化 数据平台 大数据分析 DataLeap

开源赋能 普惠未来|腾讯寄语2023开放原子全球开源峰会

开放原子开源基金会

开源 开放原子全球开源峰会 开放原子

写给程序员的可逆计算理论辨析补遗

canonical

低代码 可逆计算 范畴论

Nautilus Chain上首个DEX PoseiSwap即将开启IDO,潜力几何?

鳄鱼视界

C语言编程-typedef

芯动大师

如何在企业中培养平台工程文化?

SEAL安全

平台工程 平台工程文化

简单好用的便利贴工具:Sticky 激活版

真大的脸盆

Mac Mac 软件 便利贴工具 便利贴软件

mac高质量图像浏览处理软件 GraphicConverter 12 v12.0.3(6140)中文直装版

Rose

GraphicConverter 12中文 GraphicConverter破解 mac图像浏览器 GraphicConverter下载

技术驱动,数据赋能,华为云GaussDB给世界一个更优选择

YG科技

从0到1:活动报名小程序开发笔记

CC同学

Xcode for Mac(开发工具)v14.3.1正式版

Rose

Xcode Mac版 Xcode中文版 Xcode破解版

怎么看阿里拆中台这件事

agnostic

中台架构

Go 语言流行 ORM 框架 GORM 使用介绍

江湖十年

后端 ORM框架 ORM Go 语言 gorm

如何从零实现一个简单的Spring Bean容器

Java你猿哥

Java spring ssm Spring Bean Java web

硬核!力扣官方首发了这套1568页LeetCode算法刷题笔记(彩页版)

Java你猿哥

面试 算法 LeetCode ssm

Windows 高效应用快捷键

Andy

干货 | IDaaS 身份即服务背后的基石

Authing

设计模式之不一样的责任链模式

越长大越悲伤

Java 设计模式

Microsoft Remote Desktop下载,微软远程连接工具

Rose

microsoft remote desktop 微软远程桌面连接工具 mac远程链接

App Cleaner & Uninstaller:mac专业的系统清理优化工具

Rose

App Cleaner 系统清理工具 苹果mac系统优化 App Cleaner 破解

Java上进了,JDK21 要来了,并发编程再也不是噩梦了

Java你猿哥

Java jdk ssm

来聊聊才离职就被拉黑禁用的这些事

HoneyMoose

Nautilus Chain上首个DEX PoseiSwap即将开启IDO,潜力几何?

西柚子

synchronized和Lock有什么区别?

javacn.site

【2023华为云CodeArts Build 实战训练营】云端实战-玩转编译构建

云计算 华为云 华为开发者大会2023

体系架构的生命期:对业务的影响以及如何构建更持久的体系架构_架构_Sadek Drobi_InfoQ精选文章