探索 DevOps 体系结构

已完成

设计良好的体系结构就像一条高速公路,可快速向最终用户交付业务价值。 如果设计得不好,就会像一座被冲蚀的桥,阻碍你实现最终目标。

软件体系结构简介

任何体系结构的长期生存都需要其能够成功完成设计、实现、升级和不可避免的更改

体系结构是抽象的,直到它成为一个动态、可操作的东西。

William LeMessurier 是美国最杰出的结构建筑师之一,曾担任纽约的创新性 Citicorp 总部大楼的设计和建筑顾问。 该楼于 1977 年完工。 第二年,普林斯顿大学的一名学生研究了该楼的设计,给他打电话指出了可能存在的缺陷后,LeMessurier 发现该大楼确实存在结构缺陷。

该大楼将无法承受每小时 70 英里的风,根据气象表,纽约市每 55 年至少会有一次这样的大风。 在这种情况下,从 13 层开始,接头将出故障,大楼将倒塌。 当时大楼已完全投入使用。 LeMessurier 必须向业主和市政官员发布此消息。

LeMessurier 面临着一个复杂而棘手的职业责任问题。 他不得不提醒广大民众注意结构缺陷,并争取他们的合作,在飓风摧毁大楼之前修复缺陷。

那年夏天,飓风 Ella 侵袭了这座城市。 而大楼受到了保护。 此后,Citicorp 大楼一直屹立不倒。

重要

软件体系结构就是进行基础结构选择,一旦实现,改变这些选择的成本将非常高昂

其特征包括:

  • 利益干系人,其中可能包括业务利益干系人、应用程序团队、QA 团队、操作、安全性和用户。
  • 分离关注点:为了降低复杂性,分离驱动设计的关注点。
  • 质量驱动的属性:包括可伸缩性、可扩展性、可靠性、可维护性和安全性。
  • 概念完整性:软件体系结构代表了对于维护体系结构、数据和流程完整性应该做什么以及应该如何做的总体构想。
  • 认知约束:组织受到约束,生成的设计只能是其沟通结构的副本。
  • 重复样式:软件体系结构规范要求我们制定标准方法来解决重复出现的问题。

任何体系结构都可以解决“- 性”的问题

  • 可审核性
  • availability
  • 兼容性
  • 可组合性
  • 可配置性
  • 辅助功能
  • 适应性
  • 经济性
  • 可定制性
  • 可证明性
  • 可部署性
  • 持续性
  • 可用性
  • 扩展性
  • 灵活性
  • 互操作性
  • 可管理性
  • 可移植性
  • 可预测性
  • 可恢复性
  • 可靠性
  • 可重复性
  • 可重用性
  • 可伸缩性
  • 可服务性
  • 社交性
  • 简易性
  • 可测试性
  • 可持续发展
  • 可追溯性
  • 可再现性

构建软件时,架构师必须确定这些“- 性”中最重要的一个。 但是,其中许多因素相互对立。

例如,要同时实现高性能和极高的可伸缩性可能很困难,因为它需要在体系结构、操作和许多其他因素之间进行仔细的平衡。

这一决策过程是一种平衡操作。平衡每个体系结构决策的利弊会导致折衷,这是架构师通经常抱怨的

在过去的几年中,软件开发核心工程实践的增量开发为重新思考体系结构如何随时间变化,以及如何在发生这种变化时保护重要的体系结构特征奠定了基础

DevOps 体系结构

Gene Kim 是著名的 DevOps 研究人员、作者,并且具有远见。 他确定了实现 DevOps 所需的三个部分:

“一个是文化构成。 当然,另一个部分是工具和技术。 第三部分是体系结构。 你需要优秀的技术做法,其中包括自动化。 你需要高度信任的文化。 此外,是体系结构使你能够实现目标。

《加速》一书中的研究表明,对于许多类型的系统,包括新系统、记录系统、打包的商业软件、大型机软件和嵌入式软件,系统类型与交付性能之间没有显著的相关性。 重要的是可部署性和可测试性

提示

良好的体系结构可促进可部署性和可测试性。

体系结构和组织

康威定律以计算机程序员 Melvin Conway 的名字命名,他于 1967 年提出了这一想法。 该定律认为系统设计受设计该系统的组织的沟通结构的影响:

重要

康威定律:任何设计系统(广泛定义)的组织都将产生一个设计,其结构是该组织沟通结构的副本。

该定律基于这样一个推理,即一个软件模块要正常工作,多个作者必须经常相互交流。

因此,系统的软件接口结构将反映生成该系统的组织的社交边界,而跨这些社交边界进行沟通将更加困难。

Enterprise DevOps 中的架构师技能

架构师开发并优化了各种技能,例如:

  • 大局思维
  • 系统思维
  • 业务知识
  • 人际交往能力
  • 影响力和领导能力
  • 了解技术体系结构
  • IT 金融管理经验
  • 时间管理
  • 接触过企业体系结构 (EA) 框架
  • 向管理人员解释 IT 的能力
  • 演讲技巧
  • 培训技巧
  • 了解数据体系结构和 IT 操作

重要

但是,21 世纪成功取得最重要的技能是什么?

要学习的意愿和能力