读完《演进式架构》我悟了!!!
最近读了一本很有意思的书《演进式架构》,从一个不太一样的角度来描述架构这件事。也让我痛定思痛的反省了一下过去犯的错误,以及由于知识欠缺,所留下的遗憾。
这不是一篇介绍书目的软文,所以不会通篇介绍书中内容,我也没有电子版的链接,单纯是结合个人经历抒发一些感慨……
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/
读完《演进式架构》我悟了!!!相关推荐
- 敏捷之父Martin Fowler作序推荐《演进式架构》
本文摘自<演进式架构>推荐序 长久以来,软件行业都奉行这样一个理念:在开始编写第一行代码前就应该完成架构开发.受到建筑行业的影响,人们认为成功的软件架构在开发过程中不需要修改,而且重新架构 ...
- [case12]演进式架构
序 本文主要聊聊演进式架构 Evolutionary Architecture 它的定义原文如下: An evolutionary architecture supports incremental, ...
- Netflix Play API:我们为什么构建了一个演进式架构?
在QCon SF大会上,Suudhan Rangarajan做了题为"Netflix Play API:我们为什么构建了一个演进式架构"的演讲.他演讲的要点包括:具有单一标识/职责 ...
- 13 岁自学编程,提出演进式架构的她,成 ThoughtWorks CTO!
作者 | Yingying 责编 | 伍杏玲 本文经授权转载自DataGirls(ID:DataGirls) "Young aspiring women who want to work i ...
- 演进式架构读书笔记(四):陷阱与反模式
演进式架构的陷阱和反模式 反模式:供应商为王.即以供应商提供的架构为核心来组织自身业务,被供应商掌控全局.类似于20200517的HW事件,美国通过掐断半导体晶圆片的供给(非禁止,要许可).也就是说, ...
- 演进式架构学习笔记(一):架构评估及适应度函数
适应度函数,本质上就是一组评估函数,用以评估架构在不同维度上的表现,并从全局角度进行平衡,从而实现增量和引导式演进.简言之,其实就是能够构建出一套架构监控机制. 适应度函数,并不一定全部采用自动化手段 ...
- 以演进式的架构来让系统为变化做好准备
2016敏捷海滩会议在英国康沃尔举行.会上Rebecca Parsons认为,缩短进入市场的时间和提高业务敏捷性的要求,可以通过构建真正的演进式架构的软件.让系统做好准备改变.降低实验成本(和风险). ...
- 栋的月结 | 第二回合(定期更新、动态、架构、云技术、算法、后端、前端、收听/收看、英文、书籍、影视、好歌、新奇)[含泪总结.. 憋泪分享!]
开篇词 大家好!以下是我在 2020 年 2 月 1 日至 29 日的所见.所闻.所学和所悟. 现在,我把它们安利给你们. 定期更新 原创专栏: 一文搞定 Linux 管理员手册:既简单又深刻 官方授 ...
- 微服务架构下的测试之道
作者:袁慎建,崇尚简约,热爱编程 && 运动健身 && 知识分享,擅长敏捷开发实践,持续集成 && 持续交付,关注代码整洁 && TDD ...
最新文章
- 巨头拼杀下的IM市场,网易云信如何站上终极对决?
- homepod怎么设置为中文_设置 HomePod
- OpenCV腐蚀和膨胀Eroding and Dilating
- Python 抓取数据存储到Mysql中
- 串口通信寄存器/库函数配置、实例编写
- JAVA-初步认识-第十三章-多线程(验证同步函数的锁)
- python播放音乐同步歌词_使用Python下载歌词并嵌入歌曲文件中的实现代码
- Tensorflow实现多元线性回归
- UVA12633 Super Rooks on Chessboard
- 强大的 pdf 编辑器 —— Acrobat
- python入门先学什么-所以学完 Python 入门课的孩子到底能干啥?
- KVC在定义Model类中的妙用
- golang mac 环境变量_Golang (Go语言) Mac OS X下环境搭建 环境变量配置 开发工具配置 Sublime Text 2...
- 关于STL allocator
- 64位win8系统加64位sql server 2008,性能提高了好多
- 信息安全工程师考试大纲(含pdf)
- iapp退出软件按钮代码_推荐几款安卓手机开发的编程软件!
- VMware虚拟机的下载与安装(附Win10简易安装教程)
- 根号n向下取整的c语言编程,【向上取整/向下取整】C语言向上或向下取整 函数...
- android 4.4.2海信电视,ROOT海信电视Android4.0的详细步骤