写点什么

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

  • 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:161165

评论

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

《黑马程序员》通讯录管理系统实战,终于搞明白了

Java 程序员 后端

this与super关键字(阿里巴巴面试竟然问道这个了…,ubuntulinux操作系统实用教程

Java 程序员 后端

Tomcat目录结构,java基础教程第三版

Java 程序员 后端

VBA常用语法,操作系统原理与linux实践教程申丰山

Java 程序员 后端

volatile 和原子类的异同,画个图理解一下,面试官让我下周来上班

Java 程序员 后端

“996”为什么还没实行(1),java零基础教程视频

Java 程序员 后端

【Java 强化】代码规范,springcloud视频

Java 程序员 后端

【Java从0到架构师】学习记录,BAT大厂面试基础题集合

Java 程序员 后端

tomcat优化——并发和Tomcat线程数,mysql集群原理详解

Java 程序员 后端

VIVO一面竟然翻车,含泪整理了这些Java面经,看完我悟了

Java 程序员 后端

vivo官网商城开发团队:同城双活与异地多活架构分析,java面试问项目流程

Java 程序员 后端

【Java8 新特性 5】Java8 stream的详细用法,java开发面试视频

Java 程序员 后端

Zookeeper原理篇-Zookeeper启动流程分析,从底层开始带你了解并发编程

Java 程序员 后端

《重构 改善既有代码的设计 3》代码的可理解性应该是我们虔诚追求的目标

Java 程序员 后端

【Java 多线程 3】线程池2,linux内核编程进阶篇pdf

Java 程序员 后端

「Java」几种典型的内存溢出案例,linux视频教程迅雷下载

Java 程序员 后端

「Java」手把手理解CAS实现原理,学习linux编程

Java 程序员 后端

uniapp props、$ref、$emit,如何保证高可用

Java 程序员 后端

Zookeeper(从7个方面来了解Zookeeper基础概念),java新技术网站

Java 程序员 后端

“996”为什么还没实行,mybatis从入门到精通电子书

Java 程序员 后端

《项目开发团队分配管理软件》,nginx面试题阿里

Java 程序员 后端

「并发原理专题」AQS的技术体系之CLH,java基础重点知识点

Java 程序员 后端

【 大厂必考之JVM】01,kafka原理和面试笔试题目

Java 程序员 后端

「源码解析」 消息队列Kombu基本架构综述,透过根源从而探究红黑树的本质

Java 程序员 后端

《零基础》MySQL 连接的使用(二十),开发多年HashMap原理不知道

Java 程序员 后端

ThreadLocal内存泄漏分析与解决方案,java语言程序设计基础篇答案第六章

Java 程序员 后端

Web开发基础:JavaScript常用类、面向对象和BOM,java中锁的实现原理

Java 程序员 后端

YYDS,瞬间秒杀全网,这套Java面试笔记可以解决90,kafka基础架构消费模式

Java 程序员 后端

XML简介,kafka教程尚谷

Java 程序员 后端

Zookeeper系列-我保证!样样聚到!没有一句废话,今日头条面试经历

Java 程序员 后端

【95 后 Java 程序员的大厂梦】三年开发经验,springboot开源项目讲解

Java 程序员 后端

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