读《演进式架构》学习笔记

01 什么是演进式架构?

外文技术书翻译后通常很难理解,此书也不例外,首先,书中对演进式架构的定义就很晦涩 —— 演进式架构是支持跨多个维度进行引导性增量变更的架构。

第一,先多读几遍,念顺了;

第二,通过拆解关键词,来理解定义。

定义中的关键字一:多个维度。

所谓多个维度,指的是架构师不要只关注技术维度对架构演进的影响,也要关注数据、安全、运维等纬度的变化影响。除此之外,康威也提醒架构师,还应关注团队之间的协同纬度的变化影响。在现实情况下,一次组织架构的调整,将很大程度影响着架构演进的路径。

定义中的关键字二:增量和引导。

“增量和引导”是演进式架构包含的两个关键特征,其中“增量”表达了架构随时间不断变化的概念,而“引导”的含义反映了我们期望的架构演进方向。

回到生物学的隐喻,演进是这样一个过程:建立一个适用的并能在其所处的不断变化的环境中持续运行的系统。

 

理解了引导的含义,那么“引导”引导的是什么?引导的原则又是什么?

我们知道,安全性、吞吐量、低延迟、故障恢复能力都可以定义为系统的架构特征,由于这些特征有的是相互冲突的,比如安全性与性能。所以,对架构师而言,在架构演进过程中需要评估和权衡这些不同的特征,而所谓引导就是评估这些不同架构特征,让架构演进中不随着时间而磨损掉这些特征。简单说,引导就是架构师期望架构具备那些特征。

关于引导的原则,本书引入了进化计算中的概念 —— 适应度函数,让架构师可以通过适应度函数来解释什么方案更好,并用它衡量何时能达到目标,但笔者通读之后,没有理解,故不过多阐述。

之后,本书又重点介绍了增量变更、架构耦合对演进式架构的影响,内容围绕持续交付、领域驱动设计、架构演进等方面,内容并不新鲜,故也不做罗列。

02 如何构建可演进的架构

如何构建?本书的逻辑是这样的。

架构耦合很大程序决定了技术架构的演进能力,清晰解耦的架构易于演进,反之则会妨碍演进。回答如何构建演进式架构,我理解的是从微服务架构开始,后面的内容基本也都是在围绕着微服务和领域驱动设计再说,有兴趣的读者可以去读一下本书。

上一篇:NETAPP E-Series 使用简单配置


下一篇:Guava Multimap putAll OOM?