写点什么

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

作者: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:0011222

评论

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

低代码崛起:让程序员饭碗不保?人工智能或成“帮凶”

加入高科技仿生人

人工智能 低代码 数智化

使用containerd从0搭建k8s(kubernetes)集群

tiandizhiguai

k8s

如何修复 Mac 上的“未找到匹配的密钥交换方法”

背包客

macos SSH Mac 软件 mac电脑 macOS 13 Ventura

​“前端已死”甚嚣尘上,全栈工程师卷到起飞

引迈信息

前端 低代码 全栈 JNPF

KW 喜报 | KaiwuDB 斩获 2023 数博会“优秀科技成果”奖

KaiwuDB

KaiwuDB 离散制造业解决方案 2023数博会

助力金融业数字化转型,原点安全将出席“2023 中国金融业数字化转型发展大会”

原点安全

数据安全 金融行业 uDSP 消费者个人信息保护

蚂蚁集团变更管控平台 AlterShield 正式开源

TRaaS

GitHub 开源 蚂蚁集团 蚂蚁技术风险TRaaS

翻车了,被读者找出 BUG

捉虫大师

Go 性能优化

如何在 Jupyter Notebook 用一行代码启动 Milvus?

Zilliz

Jupyter Notebook 非结构化数据 Colab AIGC 向量数据库

万字长文解析,领域驱动设计(DDD)落地设计

codebee

大模型热潮来袭,AI基础软件深度赋能金融行业数智化升级

九章云极DataCanvas

Postman Runner 中的参数自增技巧

Liam

Java Postman API 接口开发 接口工具

瓴羊Quick BI:可视化大屏让数据呈现更直观

夜雨微澜

Java获取本机IP

Geek_7ubdnf

执行器-Query 执行详解

KaiwuDB

KaiwuDB Query执行

传统软件如何SaaS化改造,10个问答带你掌握最优解

华为云开发者联盟

开发 华为云 华为云开发者联盟 企业号 6 月 PK 榜

开源共建下一代智能终端操作系统根社区 OpenHarmony携手伙伴聚力前行

科技汇

把钢铁侠战衣交给Z世代,没想到联想商用PC可以这么炫酷!

脑极体

联想 PC

飞桨AI4S污染物扩散快速预测模型,亮相全国数据驱动计算力学研讨会

飞桨PaddlePaddle

飞桨 #人工智能

Last Week in Milvus

Zilliz

非结构化数据 Milvus Zilliz 向量数据库 zillizcloud

揭秘阿里云 Flink 智能诊断利器——Flink Job Advisor

Apache Flink

大数据 flink 实时计算

出海如何从0到1?融云《社交泛娱乐出海作战地图》实战经验揭秘

融云 RongCloud

互联网 社交 融云 泛娱乐 出海

瓴羊Quick BI:轻松实现数据可视化大屏

对不起该用户已成仙‖

AI在线问题回答输出

xushuanglu

AI

扬帆启航丨九科信息亮相2023全球数字经济大会(GDEC)新加坡分会场

九科Ninetech

QCon高分演讲:火山引擎容器技术在边缘计算场景下的应用实践与探索

火山引擎边缘云

边缘计算 容器技术 实践 火山引擎边缘云

社交app源码技术屏幕的两大实用功能

山东布谷科技

App 软件开发 社交娱乐 源码实现

“大模型+小模型”新纪元开启,AI基础软件定义AI未来

九章云极DataCanvas

KW 新闻 | KaiwuDB 发布智慧矿山解决方案

KaiwuDB

智慧矿山 KaiwuDB 世界智能大会

KW 新闻 | KaiwuDB 受邀亮相 IOTE 2023 第十九届国际物联网展

KaiwuDB

工业物联网 KaiwuDB IOTE

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