导航

架构度量

Posted on 2022-11-30 16:34  蝈蝈俊  阅读(440)  评论(0编辑  收藏  举报

一、什么是架构度量?

软件架构是一系列相关的抽象模式,用于指导大型软件系统的各方面设计。

架构的指导效果没有好坏之分,只有合适不合适,不合适的架构表现(输出指标)在:接纳新需求难,交付周期长,加班严重,协调工作投入大,问题定位难.....

这些表现部分是架构不合理,架构腐化、耦合日益严重导致的,我们需要找到其中的架构可控输入指标,并对他们度量,以指导架构演进,这就是架构度量。

二、为什么要架构度量?

没有架构度量,我们就陷入架构演进的暗箱,只能凭感觉迭代演进架构。

这就像:没有统一度量标准的传统手工业,能工巧匠能做出火绳枪,但是每个枪的口径都有差别,子弹没法通用。只有统一的标准和度量,才能持续、稳定的工业化生产。

架构腐化

什么是架构腐化,架构设计之初总是追求简单易行需求优先,甚至得益于优秀的框架和新技术,这个开发阶段非常愉悦高效,

但随着项目周期的增长和技术人员流动,一些问题开始逐渐显露,例如复杂性提高、过度设计、包袱越做越大等等,最后演变为开发人员屡屡唾弃的架构腐化现象。

架构治理

架构治理的目标是防止架构失控架构腐化

架构治理主要包含如下动作:

  1. 识别出当前架构有什么问题?
  2. 需要做哪些改进?
  3. 改进的策略和落地步骤是什么?

需要建立架构衡量指标体系监控评估体系,用以持续的对架构进行度量优化重构

三、如何度量架构?

度量(measurement)又称测量、计量,是指对于一个物体或是事件的某个性质给予一个数字,使其可以和其他物体或是事件的相同性质比较

从这个定义看,度量要做好,必须明确下面两点:

  1. 维度划分,哪些性质是需要度量的;
  2. 确定标准,有实际值、目标值、容差值这些信息,以便可以数字比较。

维度划分

每个具体度量的可控输入指标叫架构坏味道,一类坏味道组成了一个架构度量维度。多个维度组成了架构评分

  1. 度量应该是全研发生命周期的。 比如我们要看架构腐化对新需求的影响程度,就需要看人员的研发效率、每次需求变更的服务数量、需求变更涉及的团队数等等这些指标;
  2. 度量应该是分层的,代码、模块、服务、应用、团队这些都应该包含;

华为吴文胜在2018年QCon上《超大规模软件架构度量与演进的思考和实践关键点》演讲中给出的这几个图,可以看到华为架构度量的维度划分。

四、架构度量的难点

需要长时间积累的运营行动

这是一个需要长时间积累的运营行动,每一个架构坏味道指标都需要不断尝试、并根据当时情况改进。

企业领导是否支持做长时间的运营?是否有人能耐住寂寞持续的做? 都是要面临的挑战。

企业需沉淀出自己的核心架构原则

既然要度量,其实就有一个标杆,什么是好的, 宏观的就是企业应该有自己的核心架构原则。比如华为就有下面10个架构原则:华为《偶然到必然》这本书有详细描述。

产品是否能够呈现期望的或被要求的质量属性,本质上是由架构来决定的。华为制定了十大核心原则来指导架构与设计:

  1. 全面解耦原则:对业务进行抽象建模,业务数据与业务逻辑解耦,软件和硬件解耦,平台和产品解耦,系统各部件间解耦。

  2. 服务化、组件化原则:以服务、数据为中心,构建服务化、组件化架构,具备灵活、按需组合的能力。

  3. 接口隔离及服务自治原则:通过接口隐藏服务、组件的实现细节,服务、组件间只能通过接口进行交互,接口契约化、标准化,跨版本兼容;服务、组件可独立发展、独立发布、独立升级;服务自治,可视、可管、可控、可测、可维、故障自愈。

  4. 弹性伸缩原则:构建全分布式云化架构,或借鉴云化架构思想,每种服务具备横向扩展能力,支持按需使用、自动弹性伸缩,可动态替换、灵活部署,支撑高性能、高吞吐量、高并发、高可用业务场景。

  5. 安全可靠环保原则:构建最小权限、纵深防御、最小公共化、权限分离、不轻信、开放设计、完全仲裁、失效安全、保护薄弱环节、安全机制经济性、用户接受度以及加强隐私保护的安全体系,确保系统、网络和数据的机密性、完整性、可用性、可追溯;以业务系统零故障为导向,按需构筑分层分级的可靠性,通过故障的预测、预防、快速恢复,避免故障的发生;系统资源使用效率最大化,实现节能、节地、节材、环保。

  6. 用户体验和自动化运维原则:面向业务获取和使用场景,构建实时、按需、在线、自助、社区化、方便易用的用户体验;支持远程、自动、智能、安全、高效地完成网规/网设、安装、部署、调测、验收、扩缩容、软件升级、打补丁、日常维护、问题处理。

  7. 开放生态原则:面向生态场景,按需开放平台设施、中间件、数据、业务逻辑、UI等能力,构建开放生态,支持分层、远程、自动、自助、简单高效地完成定制、集成、第三方应用开发。

  8. 高效开发原则:创建支持迭代、增量、持续交付的架构,支持部件独立开发、自动化编译构建、测试、集成验证,并易于高效修改和持续优化;支持开发组织小型化、扁平化,支持小团队独立高效并行开发。

  9. 柔性供应制造原则:模块化设计,模块、物料归一化、标准化,支持自动化、数字化、智能化、随需应变的柔性制造。

  10. 持续演进原则:架构并非一蹴而就,需要有效地管理架构需求,持续构建和发展架构,适应业务需求变化,适时引入业界最佳实践,及时重构,确保架构生命力和竞争力。

总结

没有架构度量,我们就只能被动的、感觉到架构腐化的再也无法容忍时,头痛医头、脚痛医脚的做架构治理。

我们需要找到其中的架构可控输入指标,并对他们度量,以指导架构演进