【翻译】进化型建筑是什么?

"一个进化的架构支持在多个 维度 上有指导的、渐进的变化 "。
摘自《构建进化型架构》一书

曾几何时,架构的改变是极其昂贵的。正因为如此,一旦架构被定义和构建,人们就会避免改变。跳跃到云计算的出现--现在,不改变的成本更高,保持不变是一种昂贵的风险。

新的流程也已经形成。遵循敏捷的方法已经成为一个行业标准。曾经,以瀑布式的方式创建系统是很常见的,花几个月的时间来设计一个系统,然后花几年时间来实施这个系统。有了敏捷,系统的设计和构建是渐进的。没有完成点,只有不断的改进。

敏捷通常被认为是软件开发的一种实践,但敏捷对架构同样重要。基于云的架构也没有结束状态。架构可以像软件一样,被认为是连续的。

Continuous Architecture图片参考:https://continuous-architecture.org/

变化并不意味着混乱。架构仍然需要是可预测的。你可以通过这些实践来创造这种可预测性。

  • 对架构关注点进行优先排序--通常被称为 "效用"。
  • 了解业务和行业的维度
  • 增加适配功能,作为护栏。

对架构问题进行优先排序

为业务选择正确的关注点并将精力集中在正确的领域是很重要的。有很多的 "功能 "可以选择。我们有可能被卷入到试图创建一个完美的架构,以满足所有的关注。了解什么应该是优先事项是关键。

例如,安全可能是一个在高度管制的部门(如金融服务)运作的组织的首要关注点,因此,这将意味着对架构的关注。在某些情况下,你可能会决定你可以用另一个关注点来交换,比如时间表--在这个例子中,安全被认为比满足最后期限要重要得多。

了解影响架构的维度

"生存下来的不是最强大的物种,也不是最聪明的物种,而是对变化反应最灵敏的物种"。
查尔斯-达尔文

建筑图以二维方式观察世界。他们创造了一个理想世界的快照。进化的建筑是考虑建筑周围一系列维度的做法。

为了创造进化的建筑,你还必须考虑其他的力量。有很多维度会影响架构,并影响其可进化性。

下图显示了一些重要的维度。

Continuous Architecture Dimensions

从图中可以看出,任何一个项目在任何一个时间点都有多种相互竞争的力量在发挥作用。意识到它们并使其可视化,可以帮助你的团队思考合适的架构。

适配功能

健身功能是架构的护栏。它们支持迭代变化的做法,并提供架构不会退化的信心。让企业相信架构仍然迎合了主要的关切。

有许多类型的适配功能需要考虑;一些更广泛的适配功能类别是触发的和持续的。

触发式

众所周知的触发式适配功能是自动扫描,可以添加到持续交付的实践中,也可以作为DevSecOps实践的一部分。这些功能在发生变化时被触发。

这些可以包括。

  • 软件的测试
  • 代码质量扫描
  • 安全扫描
  • 集成测试

持续的

Netflix的Simian Army中的猴子脚本是持续健身功能的好例子。最著名的通常是混沌猴,但另一个值得注意的是符合性猴,它发现那些不遵守最佳实践的实例,并将其关闭。

你可能不会选择像Netflix那样积极地关闭生产中的服务,但你可以设置脚本来持续收集信息。通过收集到的信息,你可以设置仪表盘,触发对团队的通知,并随着时间的推移生成报告。你希望有一种方法,可以随着时间的推移监测架构关注点是否被遵守,并在没有被遵守时通知相关人员。

架构的相对性

关于健身功能的最后一个想法--考虑系统中各部分的相对性。架构中的一个变化可能会对另一个部分产生连锁反应。通过设置正确的适配功能,你可以预测到架构变化的连锁反应。

一个例子是微服务架构中的集成测试。当一个新的变化被部署到微服务中,或者对生态系统做出任何改变--比如用Kong替换AWS API Gateway--运行集成测试,以确认架构关注点仍然得到满足。

在实践中

有了进化的架构,变化是一流的考虑。变化是被鼓励的。

将演进式架构付诸实践使我们能够探索像gitops这样的模式,其中架构的改变就像更新基于git的仓库中的配置文件一样简单。

Diagram3

图片参考:https://blogs.vmware.com

这种灵活性也意味着自上而下的架构指令的方法只会减慢整体进度。架构现在可以左移,团队可以架构他们的领域。让团队等待架构指令会导致一个大的瓶颈,这是你想要避免的。

另一个支持进化架构的做法是网站可靠性工程(SRE)。SRE有助于使系统具有可观察性,使你的团队创建的所有系统具有可见性。你还会获得其他好处,比如能够为任何架构的退化设置警报。Diagram 4图片参考:https://www.comparethecloud.net

一旦你有了这个设置,你就有能力允许团队自治。你有合适的功能,所以你可以相信变化不会降低架构,你有SRE,对一切都有可视性。

总结

进化的架构被认为是"-能力 "之一。架构的可演化性是使其对变化有弹性的原因。创建一个允许不断变化的架构并不意味着允许出现混乱。你可以使用一系列的实践,让你的架构保持可预测性。

在企业架构中,你的目标之一是确保团队了解他们自己的架构,以及确保他们在提出新的想法时感到舒适,并且不害怕变化。

hiring.png

猜你喜欢

转载自blog.csdn.net/community_717/article/details/128392158