书评:构建进化架构

在听了尼尔·福特在软件工程电台上讨论软件体系结构之后,我学习了尼尔·福特,丽贝卡·帕森斯和帕特里克·夸的《建筑进化体系结构》。 他雄辩地谈到了“ capab-ilities”体系结构和不断发展的系统。 他阐明了我对此主题的许多想法,并提到了这本书。 一年后,我花时间阅读了本书,并重新研究了软件体系结构。 这篇评论涵盖了本书的背景信息,我的想法和建议。 如果您对建议完全不感兴趣,则应该跳到最后。

背景

我们探索了连续体系结构背后的思想:构建没有最终状态的体系结构,其设计旨在随着不断变化的软件开发生态系统而发展,并包括围绕重要体系结构特征的内置保护。

构建演化架构的目标是证明构建的价值以及如何实现适合当今动态软件环境的可演化系统。

该过程始于识别“ -ilities”(其词意为诸如“负担能力”或“灵活性”之类的特征),然后在各个维度(例如技术实施或数据存储)之间平衡“ -ilities”,并验证其中的“ -ilities”。具有健身功能的相关尺寸。 将适应性功能视为体系结构测试。 现在将整个事情捆绑在一起,作为部署管道的一部分,您将获得“连续性架构”,该架构在适应性功能的指导下不断发展。

作者以实例和假设案例研究为例。 作者使用一家名为Penultimate Widgets的理论公司来演示问题并贯穿全文。 读者可能会遇到假设性问题,因为他们反映了任何软件团队的挫败感。

思想

这本书的许多想法对我而言都不是新鲜事物。 在我看来,软件体系结构是管理技术折衷,业务成果,团队结构以及对未知未知事物进行套期保值的学科。

我尽力在Saltside平衡了这个方程式。 我带领团队将准整体泥浆球重组为更多面向服务/微服务架构。 我们这样做是因为有意义的产品开发非常耗时。 这是当团队无法随着时间发展而发生变化时的案例和重点示例。 有趣的是,我们在后面的章节中的迁移案例研究中提到了我们采取的重组步骤,所以我想我们做了正确的事情。

在该项目中,我没有做出所有正确的决定。 几年的长尾经验揭示了新的尺寸和脆弱的集成点。 建筑进化架构可能有助于消除这些影响,但是该项目在本书出版之前已经完成了数年。

就我个人而言,我从书中讨论的想法中得不到很多,而且很少有技术示例对我的口味没有足够的实质性帮助。 但是,我很欣赏这种新的语言,因为它提供了一种交流软件体系结构方面的好方法。

作者介绍了上口白话。 这不是一点。 他们的白话语经过深思熟虑并且很有用。 让我从“ -ilities”开始-一种类似的功能。 软件体系结构平衡了诸如“可扩展性”,“恶意性”或“可调试性”之类的“缺点”。 我用“担忧”一词来涵盖这些。 作者以“ -ilities”卖了我,因为它在众多其他重载术语中脱颖而出。

他们还介绍了对健身功能进行分类的术语。 由于它们在所有架构决策中都需要权衡使用范围,因此它们引起了我的最大共鸣。 它们是(引用):

  • 关键:这些尺寸对于做出技术或设计选择至关重要。 应该投入更多的精力来探索设计选择,从而使围绕这些元素的更改变得更加容易。 例如,对于银行应用程序,性能和弹性是关键维度。
  • 相关:需要在功能级别上考虑这些维度,但不太可能指导体系结构选择。 例如,围绕代码库质量的代码度量很重要,但不是关键。
  • 不相关:设计和技术选择不受这些类型的尺寸影响。 例如,诸如周期时间(从设计到实现的时间量,在某些方面可能很重要,但与体系结构无关)等过程度量标准则是不必要的。

回顾过去,我很容易看到我归类为关键,相关和不相关的内容。 希望这些术语能与我保持联系,以备将来讨论时使用。

我确实提出了一个有力的新想法。 作者提出了一种自动依赖升级的形式,该升级可以最大程度地减少技术负担。 依赖关系被标记为“流体”或“受保护”。 粗略地讲,部署管道将升级到最新的主要或次要版本的依赖关系。 如果一切顺利,则依赖关系将自动更新。 如果它们失败,则该过程将以次要版本冲突退出。 如果它们再次失败,则使用补丁程序版本重复。 如果它们仍然失败,则它们将被“保护”,并要求工程师采取手动措施以恢复流体标签。

我认为这种做法会为框架级别的依赖带来好处。 由于耦合度更高,它们是最痛苦的。 如果您跳过的次数太多,那么了解最新信息将成为一项艰巨的任务。 自动升级将减轻技术负担并提高安全性。 不幸的是,目前没有这样的工具可用于流畅和受保护的依赖性。

亮点与要点

软件架构师应注意如何划分和委派工作,以使架构目标与团队结构保持一致。

作者花费大量时间讨论软件体系结构和团队结构之间的联系。 不要低估架构选择如何影响工作流程,反之亦然。 这是一个强大的反馈循环,可能会破坏公司!

在开发人员重组体系结构时,他们的第一步应该是消除表现为技术债务的历史设计折衷方案。

这并不明显,但很重要。 还很高兴看到技术债务是过时的设计选择(或“缺点”选择)的体现。

建议

我建议您跳过这本书。 而是访问作者的网站,听他们的会议演讲或播客露面。 如果您认为软件体系结构应该具有灵活性并且可以随时间变化,并且您具有在该领域的实践经验,那么您可能不会从书中获得太多价值。 但是,如果您从未考虑过高级架构设计,那么您可能会发现这本书很有价值。 即使这样,我认为可以通过其他免费媒介获得大致相同的信息。

更多信息请访问https://freedevopscourse.com