前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >读《演进式架构》有感

读《演进式架构》有感

作者头像
麒思妙想
发布2020-07-10 10:35:30
5160
发布2020-07-10 10:35:30
举报
文章被收录于专栏:麒思妙想

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

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

Evolutionary Architecture

它的定义原文如下:

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

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

这里涉及到几个要素:

  • Incremental change
  • Guided change with fitness functions
  • Appropriate coupling

独轮车理论

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

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

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

康威定律

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/

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-06-24,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 麒思妙想 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Evolutionary Architecture
相关产品与服务
腾讯云 BI
腾讯云 BI(Business Intelligence,BI)提供从数据源接入、数据建模到数据可视化分析全流程的BI能力,帮助经营者快速获取决策数据依据。系统采用敏捷自助式设计,使用者仅需通过简单拖拽即可完成原本复杂的报表开发过程,并支持报表的分享、推送等企业协作场景。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档