最近读了一本很有意思的书《演进式架构》,从一个不太一样的角度来描述架构这件事。也让我痛定思痛的反省了一下过去犯的错误,以及由于知识欠缺,所留下的遗憾。

这不是一篇介绍书目的软文,所以不会通篇介绍书中内容,我也没有电子版的链接,单纯是结合个人经历抒发一些感慨……

Evolutionary Architecture

它的定义原文如下:

An evolutionary architecture supports incremental, guided change as a first principle across multiple dimensions.

翻译过来大致是演进式架构是一种支持将增量式、指导式的变更作为跨多个维度中的第一原则的架构。

这里涉及到几个要素:

做架构,就像表演杂技独轮车,你要保持车身的平衡,同时还要接住一个个球,并且让他们也加入这个平衡里来。

一个个球,就是人力资源、时间节点、功能需求、性能需求等等,在不摔下来的前提下,你不能接住所有的球,那么如何选择你的策略,就是亟待解决的问题,在时间节点固定的前提下是加大人力投入?还是砍需求?或是,客户要求的功能一定要实现的前提下,去游说到更多的时间和人力资源…

长袖善舞…也是架构师必要的技能

Conway’s law: Organizations which design systems are constrained to produce designs which are copies of the communication structures of these organizations. — Melvin Conway(1967)
设计系统的组织其产生的设计等价于组织间的沟通结构。

反向理解起来也是成立的。

Conway’s law reversed:You won’t be able to successfully establish an efficient organizational structure that is not supported by your system architecture design.
如果系统架构不支持,你无法建立一个高效的组织。

对于这一点,我的体会更深一点,在做BI产品的时候,起初我们将产品分成了若干功能模块,然后按照模块来构建团队,起初还是很顺利的各个模块表现良好,每一个模块其实都可以作为一款单独的产品来卖了。但是攒成一个BI产品,整体上,总是欠缺一点东西,融合不到一起的感觉,这也是困扰V3-V5的一个通病了。现在回想起来,当初一直要推行杜绝”各扫门前雪”的行为,也真的挺无奈的,是不是当时做一些组织结构的调整能好一些呢?

Incremental change describes two aspects of software architecture: how teams build software incrementally and how they deploy it.

其中增量构建,比如向前兼容,多版本支持;部署的话,比如蓝绿部署、金丝雀部署、feature toggles等。

它要求这些变更是可逆的,即可以回滚。当然有些架构是用来抛弃/牺牲的。比如可牺牲的架构中提到的:

支持1996年eBay的合适架构,对于2006年eBay来说,就不是合适的了。1996年的架构无法处理2006年的负载,但是2006年的版本太过复杂而难以建立、维护,它是根据1996年的需求演化而来的。的确,这个原则可以引出工作的一种组织方式。在Google,大家熟知的要求就是设计一个满足当前10倍需求的系统,这暗示着如果需求超过了一个数量级,那么扔掉并从头做起是更好的。每隔几年就被重新设计与抛弃的子系统而言,这是非常普遍的。

这个是书中最晦涩的部分,我特意查了下原文,”fitness functions”翻译上似乎没有什么问题,但是总觉得怪怪的。

A particular type of objective function that is used to summarize…how close a given design solution is to achieving the set aims.

意思大概就是,在构建fitness functions的时候,要找出系统的关键能力,那些能力是可以被弱化或是移除的……

反正这块是看的云里雾里的…..

总体上,这本书还是推荐一读的,我也还在研习中,先发一点感慨上来,也许通读以后,还会再写点啥,也欢迎有兴趣的同学与我交流….

参考链接:

https://www.jianshu.com/p/e0342bf3716e

https://book.douban.com/subject/34793521/

读完《演进式架构》我悟了!!!相关推荐

  1. 敏捷之父Martin Fowler作序推荐《演进式架构》

    本文摘自<演进式架构>推荐序 长久以来,软件行业都奉行这样一个理念:在开始编写第一行代码前就应该完成架构开发.受到建筑行业的影响,人们认为成功的软件架构在开发过程中不需要修改,而且重新架构 ...

  2. [case12]演进式架构

    序 本文主要聊聊演进式架构 Evolutionary Architecture 它的定义原文如下: An evolutionary architecture supports incremental, ...

  3. Netflix Play API:我们为什么构建了一个演进式架构?

    在QCon SF大会上,Suudhan Rangarajan做了题为"Netflix Play API:我们为什么构建了一个演进式架构"的演讲.他演讲的要点包括:具有单一标识/职责 ...

  4. 13 岁自学编程,提出演进式架构的她,成 ThoughtWorks CTO!

    作者 | Yingying 责编 | 伍杏玲 本文经授权转载自DataGirls(ID:DataGirls) "Young aspiring women who want to work i ...

  5. 演进式架构读书笔记(四):陷阱与反模式

    演进式架构的陷阱和反模式 反模式:供应商为王.即以供应商提供的架构为核心来组织自身业务,被供应商掌控全局.类似于20200517的HW事件,美国通过掐断半导体晶圆片的供给(非禁止,要许可).也就是说, ...

  6. 演进式架构学习笔记(一):架构评估及适应度函数

    适应度函数,本质上就是一组评估函数,用以评估架构在不同维度上的表现,并从全局角度进行平衡,从而实现增量和引导式演进.简言之,其实就是能够构建出一套架构监控机制. 适应度函数,并不一定全部采用自动化手段 ...

  7. 以演进式的架构来让系统为变化做好准备

    2016敏捷海滩会议在英国康沃尔举行.会上Rebecca Parsons认为,缩短进入市场的时间和提高业务敏捷性的要求,可以通过构建真正的演进式架构的软件.让系统做好准备改变.降低实验成本(和风险). ...

  8. 栋的月结 | 第二回合(定期更新、动态、架构、云技术、算法、后端、前端、收听/收看、英文、书籍、影视、好歌、新奇)[含泪总结.. 憋泪分享!]

    开篇词 大家好!以下是我在 2020 年 2 月 1 日至 29 日的所见.所闻.所学和所悟. 现在,我把它们安利给你们. 定期更新 原创专栏: 一文搞定 Linux 管理员手册:既简单又深刻 官方授 ...

  9. 微服务架构下的测试之道

    作者:袁慎建,崇尚简约,热爱编程 && 运动健身 && 知识分享,擅长敏捷开发实践,持续集成 && 持续交付,关注代码整洁 && TDD ...

最新文章

  1. 巨头拼杀下的IM市场,网易云信如何站上终极对决?
  2. homepod怎么设置为中文_设置 HomePod
  3. OpenCV腐蚀和膨胀Eroding and Dilating
  4. Python 抓取数据存储到Mysql中
  5. 串口通信寄存器/库函数配置、实例编写
  6. JAVA-初步认识-第十三章-多线程(验证同步函数的锁)
  7. python播放音乐同步歌词_使用Python下载歌词并嵌入歌曲文件中的实现代码
  8. Tensorflow实现多元线性回归
  9. UVA12633 Super Rooks on Chessboard
  10. 强大的 pdf 编辑器 —— Acrobat
  11. python入门先学什么-所以学完 Python 入门课的孩子到底能干啥?
  12. KVC在定义Model类中的妙用
  13. golang mac 环境变量_Golang (Go语言) Mac OS X下环境搭建 环境变量配置 开发工具配置 Sublime Text 2...
  14. 关于STL allocator
  15. 64位win8系统加64位sql server 2008,性能提高了好多
  16. 信息安全工程师考试大纲(含pdf)
  17. iapp退出软件按钮代码_推荐几款安卓手机开发的编程软件!
  18. VMware虚拟机的下载与安装(附Win10简易安装教程)
  19. 根号n向下取整的c语言编程,【向上取整/向下取整】C语言向上或向下取整 函数...
  20. android 4.4.2海信电视,ROOT海信电视Android4.0的详细步骤

热门文章

  1. uniapp 使用editor编辑器实现 发布文章的功能
  2. 计算机显卡发展史,NVIDIAPCIE计算机显卡发展史.doc
  3. ubuntu 15.04 怎么安装搜狗输入法
  4. SVS为某集团打造数字化会议室
  5. C语言——细节决定成败(一)
  6. 对于 CRC 校验的 学习笔记
  7. MATLAB 画三维图
  8. Nginx一网打尽:动静分离、压缩、缓存等,想要的这都有
  9. Linux-定时任务
  10. Win10+GTX 1660 SUPER安装Cuda11.5.1+cudnn8.3.0