风险对架构设计的驱动力

我在博客文章《以RAID分析作为架构驱动力》中介绍了RAID分析方法。这个方法将风险作为其中的一个重要驱动力,指导我们进行架构设计,避免陷入未知的陷阱。

无独有偶,Simon Brown在其著作Software Architecture for Developers中专门列出一个章节来阐释风险。他认为:

识别风险是恰如其分的预先设计的一个关键的部分,简而言之,风险就是未来可能发生的坏事,比如所选技术无法满足供应商的承诺。

△ Software Architecture for Developers中译本

George Fairbanks在其著作Just Enough Software Architecture中更是将风险看做架构设计的核心,提出“风险驱动设计”的方法论。我作为本书的译者之一,深刻地理解了这一方法,并在诸多项目中尝试实践。

古语云:为将者,未虑胜先虑败,故可百战不殆矣。这种“未虑胜先虑败”的思维实则就是我们时常提及的风险思维。由于软件架构是整个系统中最重要也是最不容易改变的部分(另一层意思就是改变成本太高),若不能正确地预见风险,并给出应对之道,一旦风险成为事实上的问题,就可能导致整个系统架构要推到重来,又或者付出即为沉重的重构成本。

George Fairbanks在Just Enough Software Architecture书中给出一个风险驱动设计的案例,介绍了Rackspace日志处理系统的演化,分别从本地日志文件演化到中央数据库,进而演化到基于HDFS的索引簇方案。这种演化固然说明了在当时当刻做出的所谓“恰如其分”的架构,但从另外一个层面来看,也可以视为风险意识不够,没有充分考虑到日志分析系统的可伸缩性,从而带来两次高成本的架构重构(甚至可以认为是重写)。

与RAID分析方法相似,Simon Brown在Software Architecture for Developers书中提出了一种帮助团队识别风险并排定优先级的协作手段——风险风暴。步骤如下:

  • 首先在白板上绘制系统最高层的架构图(可以参考书中给出的C4模型);
  • 团队成员(架构师、开发者、项目经理、业务分析师)在架构图前,各自写下他们能够识别的风险,一个风险用一张便利贴,并量化该风险;
  • 将各自的便利贴贴在架构图上,邻近风险被识别的区域;
  • 对风险设定优先级。

△ C4模型

识别风险并评估其优先级并非最终的目的。风险可以提前给我们以警示,之所以采用风险风暴的形式,是希望通过团队成员的群策群力尽可能让隐藏的风险暴露出来,从而为架构设计提供重要的参考。

于是乎,识别风险大多数时候又与技术决策以及技术选型相关,这才是真正考验架构师技术能力、敏锐性、知识广度与深度,以及设计经验的关卡。这是一个很大的话题,我希望能结合广泛的案例来深度探讨这部分内容。这里揭过不提,算是一个不礼貌的收尾。

原文发布于微信公众号 - 逸言(YiYan_OneWord)

原文发表时间:2016-10-19

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏个人分享

大数据生涯感悟

  不知不觉,毕业一年半了,从实习开始接触大数据技术。那时懵懂的我,不对,应该说懵逼的我在想,卧槽,这是啥这么牛逼,我都不会啊。。。啥都不会完蛋了。。即便现在也...

862
来自专栏Cloud Native - 产品级敏捷

三个指标, 使得开发人员迈向 "完美" 的圣殿

2017.9.17, 深圳, Ken Fang 我们搞软件开发的, 应该要有些 “指标” 来驱使着我们自己能不断的持续改进;永远的朝着 “完美” 的圣殿前进⋯ ...

18310
来自专栏ThoughtWorks

数据质量管理的一些思考

在近期的项目当中,我们为客户落地实施了数据资产平台。随后,在数据平台中接入了客户子公司的一个业务系统的明细数据。客户希望在我们的数据平台上通过数据探索和数据分析...

1114
来自专栏杨建荣的学习笔记

一半技术一半生活(r7笔记第51天)

都说工作生活要平衡,今天就写一篇技术+生活的文章。 目前有一套系统,最近会有新的业务上线,所以负载会大大提高,而且有的时候负载会有很大的抖动。有很多历史的原因,...

3399
来自专栏PPV课数据科学社区

【学习】1月份推荐给程序员们的技术书书单

时光飞逝,不知不觉,微信君已经和小伙伴们走过了2014,感谢你们的支持。小编会在2015年加倍努力,与你们一起分享好书。 2015年,首月,好多技术书的付印计划...

35710
来自专栏DT数据侠

科技巨头都爱的Data Pipeline,如何自动化你的数据工作?

对于做数据分析或者需要建模的人来说,面对庞杂的大数据,最棘手的难题往往就是多线程工作了。面对这种情况,你其实可以尝试搭建一套Data Pipeline系统。Da...

500
来自专栏顶级程序员

王咏刚:为什么 AI 工程师都要懂些架构?

作者简介 王咏刚 Google软件工程师 著名技术撰稿人和IT演说家 创新工场AI工程院副院长 AI 时代,我们总说做科研的 AI 科学家、研究员、算法工程师...

2816
来自专栏BestSDK

不会从大数据掘金?试试这三个方法

大数据价值的发现与其所处的应用场景密切相关。概括起来,大数据价值发现可以划分为三大类:数据服务、数据分析和数据探索。数据服务是面向大规模用户,提供高性能的数据查...

2586
来自专栏斑斓

结束语与参考文献

四. 结束语 遗留系统的技术栈迁移可能是一个漫长艰苦的过程,它的难度甚至要高于新开发一个系统,这是因为我们常常会挣扎在新旧系统之间,并在不断的妥协、权衡中缓步前...

3477
来自专栏PPV课数据科学社区

【干货】怎样进行大数据的入门级学习?

数据科学并没有一个独立的学科体系,统计学,机器学习,数据挖掘,数据库,分布式计算,云计算,信息可视化等技术或方法来对付数据。但从狭义上来看,我认为数据科学就是解...

2473

扫描关注云+社区