写点什么

从迪卡侬的架构流程看如何管理大规模软件架构

作者:Eran Stiller

  • 2024-08-13
    北京
  • 本文字数:2621 字

    阅读完需:约 9 分钟

大小:1.30M时长:07:35
从迪卡侬的架构流程看如何管理大规模软件架构

迪卡侬资深工程师Raphaël Tahar最近分享了他在大规模架构流程中进行协同领导的洞见。在四篇系列博文中,Tahar 描述了如何通过结合架构委员会、C4 模型和系统思维等方法,以及强调 ADR 和集中文档的重要性,来确保迪卡侬的团队能够做出明智且具有战略性的决策。


他所在的团队为超过 120 名工程师提供支持,这些工程师分布在 23 个团队中,是迪卡侬全球 1500 多名工程师的一部分。为这种规模的开发者提供支持并非易事,涉及为设计新系统、优化现有系统以及确保与全球战略对齐提供专业支持。为此,迪卡侬成立了一个架构委员会,该委员会在引导团队评审复杂决策过程方面发挥着至关重要的作用。


Tahar 利用垃圾桶模型来阐释架构委员会的重要性。这个在 20 世纪 70 年代发展起来的模型将组织决策描绘为一个混乱的流程,其中问题、解决方案和决策者分散在不同的流程中。这些流程以不可预测的方式相互交织,就像垃圾桶中的杂物一样,而决策的机会就是在这种动态中孕育出来的。


然而,根据 Tahar 的说法,这种“垃圾桶流”缺乏三个要素:决策替代方案、后果以及后果与目标的对比。


组织必须确保充分考虑了这三个要素,如果忽视了这些,项目延期、否决和反弹(例如不可靠的服务招致的罚款)的风险将大幅上升,进而可能导致巨大的预算浪费。



垃圾桶模型及其缺失的要素(source


架构委员会 介入正是为了填补这一空白。它的职责不在于代替软件工程师做出架构决策,而是提供必要的支持和指导,类似于一个建议流程。委员会帮助工程师明确和深化他们的问题理解与背景分析。它确保涉及正确的利益相关者,识别可能的解决方案,并筛选出最合适的替代方案。委员会成员深入理解每种解决方案的潜在后果,确保这些决策与迪卡侬的技术战略和指导原则保持一致,并借助 C4 模型,通过架构决策记录(ADR)和图表即代码(Code as Diagram)的方式记录下所有的决策。


迪卡侬利用一系列关键绩效指标(KPI)来评估架构委员会的成效。其中一项核心指标是工程师的满意度,这通过净推荐值(NPS)调查来衡量,反映团队在知识共享和识别潜在盲点方面的信心水平。


此外,委员会还密切关注对服务等级目标(SLO)的影响,特别关注与组织优先事项一致的关键指标,如高峰时段的系统可靠性。此外,委员会还评估其对 DORA 指标的影响,包括部署频率、变更前置时间、变更失败率和服务恢复时间。这些 KPI 有助于衡量委员会在提升部署效率和降低运营问题方面的贡献。。


迪卡侬采用C4模型来明确界定软件架构的范围和边界,有效管理架构的复杂性。根据问题的不同规模采取相应的方法来简化复杂度。还原论方法将问题分解为更小、更易于管理的任务,而整体论方法则强调理解系统内部的相互依赖性,这两种方法对于做出有效决策都至关重要。通过结合系统思维和这些方法来梳理相互交织的问题和解决方案之间的层次结构。


最后,架构决策记录(ADR)提供了一种结构化的方式来记录决策的背景、考虑到的可选项、决策结果及其潜在影响。这种文档确保决策是可追溯的,促进了知识的传递,并有助于避免重复过去的错误,因为记录架构决策对于维护大型组织的一致性和连续性起到了关键作用。迪卡侬使用Structurizr来存储 ADR,该工具支持“图表即代码”,并将文档集中管理,从而促进团队协作和保持一致性。



Structurizr 自动生成的页面示例 (source)


InfoQ 与 Tahar 就迪卡侬的架构流程、相关挑战和组织影响进行了交谈。


InfoQ: 运营架构委员面临着哪些挑战?你如何确保应该提交给委员会进行评审的决策确实被摆在了台面上?


Raphaël Tahar: 在运营架构委员会的过程中,我们面临两个主要的挑战。第一个挑战是确保一个庞大且多样化的组织,尽管涉及不同的职业角色并经历着人员的更替,仍然能够与我们的过程保持一致。


第二个挑战确保在关键时刻通知资深工程师,让他们知情参与,以协助在项目的功能性和技术探索阶段做出调整。鉴于我们有大量的倡议,但只有五名 Staff Engineer,所以并不总是能够让他们都参与每个倡议。


此外,我们资深工程师的专业特长以及在新倡议中不均衡的工作负载分配进一步增加了复杂性。为了解决这个问题,我们让工程副总裁、总监、集团产品经理、工程经理和技术领导也参与委员会的工作。


InfoQ: 在文章中,你提到了委员会的 KPI。这些 KPI 如何体现委员会的工作成效?反馈周期有多长,你又是如何根据这些指标来调整委员会的工作以提高 KPI?


Tahar: 量化架构委员会的影响力确实具有挑战性,这主要是因为它的作用是间接的。委员会的任务是影响团队,然后团队再影响他们的产品,最终影响业务。为了有效评估委员会初期影响,对每个步骤进行细致的监督至关重要。


通过从工程团队那里收集反馈,我们能够做出必要的调整,并澄清一些细节。例如,我们发现委员会需要关注的具体变化缺乏明确的定义,因此经过多次迭代才得出了准确的界定。这个过程还帮助我们识别并解决了一些虽小但至关重要的考虑因素,例如确定审查、研讨会和接触点的最相关时间段和最佳节奏。在委员会的最初几个月内收集这些反馈至关重要,之后应每季度进行一次。


最后,我们通常可以在决策后的六个月到一年内评估业务影响。决策必须被实施和部署,产品必须在生产环境中运行一段时间,才能看到对业务的影响。


InfoQ: 在迪卡侬实施 C4 模型带来了哪些最显著的影响,它如何帮助管理复杂性并提高工程师对系统的了解?


Tahar: C4 模型本质上是一种声明性方法。它要求团队成员明确并协调他们对代码、组件、容器乃至整个应用上下文的认知模型。这个过程激发了富有成效的讨论,促进了知识的共享和对固有信念的重新审视。


它还有助于领导层深入理解团队与外部系统之间的相互依存关系。换句话说,它有助于识别潜在风险,并为组织优化提供了清晰的视角。


最后,正如俗话说的,“一张图胜过千言万语。” C4 模型通过标准化的方式捕捉和分享上下文信息,极大地促进了跨团队和跨领域的沟通,使得讨论更加流畅和高效。


InfoQ: 根据你的观察,在项目中使用 ADR 最显著的好处是什么,你如何确保这些记录随着时间的推移仍然相关和有价值?


Tahar: ADR 通过在文档中详细记录决策背景,减少了模糊性和误解。它还有助于揭示在书面表达过程中可能存在的思考上的漏洞或偏见。


考虑到我们有 23 个团队,可能产生大量 ADR,所以我们希望避免不必要的信息过载。因此,C4 仓库仅记录 C1 和 C2 级别的变更,而 C3 和 C4 级别的决策则应整合到相关的代码库中。这种策略限制了 ADR 的数量,集中关注最关键的决策,有助于理解背景和产品演变背后的深层次原因。


原文链接

https://www.infoq.com/news/2024/07/decathlon-architecture-process/

2024-08-13 08:0011697

评论

发布
暂无评论
发现更多内容

自动发送企业微信通知,让我来教你真的超简单!

Jianmu

自动化 CI/CD 企业微信 通知

全面支持JS/eTS应用开发,DevEco Studio 3.0 Beta4新版本发布

HarmonyOS开发者

HarmonyOS

对安全和效率的一点思考(39/100)

hackstoic

安全

华为云GaussDB两大数据库通过中国信通院多项评测

华为云开发者联盟

数据库 后端 华为云

第十八届IET交直流输电国际会议(ACDC 2022)为交直流前沿学术技术探讨搭建重要桥梁

E科讯

java零基础入门-封装

喵手

Java 7月月更

数据仓库与大数据挖掘技术调度平台- TASKCTL

敏捷调度TASKCTL

数据仓库 国产开源 TASKCTL 大数据仓库 DevOps工具

InfoQ专访 | 联邦学习将会带来数据价值挖掘的下一个爆发点

Jessica@数牍

联邦学习

NFT藏宝计划系统开发模式分析

开发微hkkf5566

对OpenHarmony中LiteOS的内核分析——超时原理和应用

OpenHarmony开发者

OpenHarmony

从工程师到技术leader的思维升级

阿里技术

技术成长

干货|语义网、Web3.0、Web3、元宇宙这些概念还傻傻分不清楚?(上)

Orillusion

开源 WebGL 元宇宙 Metaverse webgpu

体验SRCNN和FSRCNN两种图像超分网络应用

华为云开发者联盟

人工智能 图像 图像超分

Raccoon Network浣熊网络系统开发模式分析

开发微hkkf5566

Windows 下安装 js运行时 Bun 教程

OpenHacker

js ts

用它!用它!轻松实现线上线下门店一体化运营!

CRMEB

LeaRun快速开发平台:企业供应链管理系统解决方案

力软低代码开发平台

SeekTiger即将上线STI聚变Mining功能,获取OKA通证

股市老人

一、What's API

忠厚

API API Explorer平台 api 网关

搭上数字化列车,带你看看智能运维的新景象

云智慧AIOps社区

运维 运维自动化 数字化运维 智能运维 运维管理

厚积而薄发,CRMEB Pro 商城系统每一步都很扎实!

CRMEB

关于 SAPGUI 事物码在 Fiori Launchpad 中嵌入运行的技术细节

汪子熙

web开发 SAP Fiori ui5 7月月更

Minio 可观测最佳实践

观测云

【C 语言】进阶指针 Five

謓泽

7月月更

图像搜索的分析和理解

Geek_e369a5

图像搜索 图像搜索是什么 图像搜索的分析理解 图像搜索就在身边

[Windows环境] 批量获取某目录下的所有文件名

Empty

LeetCode-121. 买卖股票的最佳时机(java)

bug菌

Leet Code 7月月更

BAT 面试 Java 岗经验汇总:面试重点 + 精选面试 120 题 +6 条面试经验!

程序知音

Java 程序员 后端 java面试 八股文

操作符这块,你可得把握住

芒果酱

7月月更

什么是无代码?无代码应用开发的12大好处!

优秀

无代码

从迪卡侬的架构流程看如何管理大规模软件架构_架构_InfoQ精选文章