一篇讲明白DevOps时代下的持续架构实践
“送书老规矩:留言第5名,第10名 得书一本
软件架构领域正在爆发一场新的革命。Gartner权威发布2023年十大科技趋势之一“ 可持续IT架构” ,可持续架构得到越来越多从业人员认同。创建和维护可持续的软件架构对于架构师和工程师而言也是一项巨大的挑战。
1 持续架构的引入
如今,定义前期架构的价值降低了很多,但系统仍必须满足其具有挑战性的质量属性;
软件涉众仍然有着复杂、冲突且重叠的需求;
仍有许多设计选项需要被理解和权衡;
为了使系统能够满足涉众的需求,也许我们比以往任何时候更需要解决交叉问题。
这些挑战与长久以来困扰软件架构师的挑战是一样的。
然而,在当今的环境里使用软件架构来应对这些挑战的方式必须要改变了。
敏捷性和DevOps 实践正在从根本上改变IT 专家(包括软件架构师)的工作方式。
软件架构的实践方式可能会发生变化,但我们相信它比以往任何时候都更加重要。
2 持续架构的定义
满足以下六个简单准则的架构就可以被称为持续架构: 准则 1 : 用产品思维,而非项目思维来设计架构。 从产品的角度进行构建比单纯设计点的解决方案更有效率,更容易让团队专注于客户的需求。 准则 2 :聚焦质量属性,而不仅仅是功能性需求。 质量属性需求驱动着架构。 准则 3 :在绝对必要的时候再做设计决策。 架构设计取决于事实,而不是猜 测。设计和实施可能永远都用不到的功能是无意义的,是对时间和资源的浪费。 准则 4 :利用“微小的力量”,面向变化来设计架构。 大的、单体的、紧耦合的组件很难改变。相反,应该使用小且松耦合的软件元素。 准则 5 :为构建、测试、部署和运营来设计架构。 大多数架构方法只关注软件构建活动,但我们认为架构师也应该关注测试、部署和运营,以支持持续交付。 准则 6 :在完成系统设计后,开始为团队做组织建模。 团队的组建方式驱动着系统的架构和设计。 这六项准则、 基本活动和工具可以帮助我们进行架构活动并定义软件架构的关键组件,例如:
- 系统上下文
- 影响架构的关键功能性需求
- 驱动架构的质量属性
- 架构和设计决策
- 架构蓝图
有趣的是,软件架构的组件并不是孤立存在的,而是相互关联的(见图1)。创建软件架构需要在需求、决策、蓝图甚至最终架构工件(可执行代码本身)之间做出一系列权衡。
▲图1 软件架构的关键组件
那么持续架构与其他架构方法有什么不同呢?
4 持续架构提供的准则和工具
我们并不是要定义一个具体 的架构方法论或开发流程。 我们的主要目标是分享一组在实际工作中的核心准则和工具。 事实上,应用持续架构是关于如何理解准则和理念,并把它们应用到自己的环境中去。 这么做的时候,读者可以自主决定使用哪些工具以及如何解读必要的活动。
为了应对当前的挑战,即在敏捷与持续交付的实用主义中建立坚固的架构基础,我们已定义了这个基于价值的方法。然而,这并不意味着使用持续交付是使用持续架构的先决条件。类似地,我们意识到一些公司可能还没有准备好在各方面都采用敏捷方法论。甚至,即使一个公司已经完全投入到敏捷工作中,某些情况下(比如采用第三方软件包时),其他方法也可能更为合适(见图2)。
▲图2 应用持续架构
这是不是意味着持续架构在这种情况下不可用呢?绝对不是。持续架构的好处之一就是,其工具可以很好地与其他软件开发方法融合,不是仅限于敏捷开发。 持续架构也在两个维度中运作:规模和软件交付速度(见图3)。软件交付速度的维度决定着如何在这个加速交付循环的世界中采用架构实践。尽管规模维度注重于运营层面,我们相信持续架构准则可以被稳定地应用在所有的产品规模中,只是关注的层次和需要使用的工具会有所不同。
▲ 图3 持续架构的维度
本文摘编于《持续架构实践:持续架构实践:敏捷和DevOps时代下的软件架构》,经出版方授权发布(书号:9787111717744),转载请保留文章来源。
END
往期推荐
评论