蚂蚁集团配置即代码的规模化实践之路

如果无法正常显示,请先停止浏览器的去广告插件。
分享至:
1. 演讲人:何子波
2. 目录 01 浅谈配置管理 02 配置即代码 03 蚂蚁落地实践 04 总结与展望
3.
4. 浅谈配置管理
5. 分布式配置中心 传统的配置管理 ✓ Kubernetes YAML Strikes
6. ➢ 配置格式五花八门,YAML、配置领域专用语 言(DSL)、通用编程语言(GPL) ➢ 各种配置工具层出不穷,热闹非凡,Helm、 Kustomize 仍然最流行
7. 配置即代码
8. Prodspec and Annealing Borg接入三件套:BCL/borgcfg/WebConsole
9. ➢纯开源技术栈,工程化水位低 平台研发 平台SRE 业务研发 业务SRE ➢无规划化流程,缺少技术风险防控 ➢低协同性,大量文件拷贝 开发集群 测试集群 生产集群 ➢运维平台功能透明度不足,大量黑盒代码逻辑 ➢运维平台高度定制化灵活性不足,无法满足应用个性化运维需求 ➢资源瓶颈,无法复用和发挥 SRE 沉淀的运维经验
10. 陷阱 1:没有把配置作为一种编程语言 如果你不是为之专门设计一种语言,那么最终用到的“语 言”就不太可能是一种好语言。尽管配置语言描述的是数 据而不是行为,但它们仍然具有编程语言的其他特征。 陷阱 2:设计特殊的语言功能 特殊的语言比正式设计的等效语言更复杂,并且通常具 有低效的表达能力。与其祈祷配置系统不会复杂到需要 一定的编程结构,不如在初始阶段就考虑到这些需求。 陷阱 3:使用现有的通用脚本语言 e.g. Python 使用通用脚本语言的实现方式往往是重量级的,并且/或 则需要使用侵入式沙盒来确保密闭性。由于通用语言可 以访问本地系统,处于安全考虑,可能还是需要沙盒。
11. Polyrepo(多仓库) Monorepo(单体仓库) 优势 优势 ➢ 配置跟着业务代码仓库走,开发者不需要感 ➢ 易于规范代码,中心化流水线更容易把控代码质量和风 知额外的配置仓库,认知成本低 格,同时依赖管理与升级更加简单 ➢ 代码量和复杂性可控,不用担心可扩展问题 ➢ 利与 SRE 进行批量配置变更与重构,且易于代码重用 ➢ 利于权限控制,权限分配粒度可以做非常细 ➢ 利于构建中心化的配置自动化层,便于上游即成 劣势 劣势 ➢ 难以建立统一的代码规范,平台团队缺少约 ➢ 开发者需要感知额外的配置仓库,有一定的学习成本 束力 ➢ 依赖管理与升级非常复杂,不利于 SRE 进 行批量的配置变更 ➢ 难以实现细粒度的权限控制,并且随着代码文件、数量 越来越多,复杂性会越来越高,可能存在可扩展性问题
12. Preview Coding Platform build Modules Developer choose Modules Validation Deploy Resource Live Diff Pre-Apply Apply Post-Apply
13. 高性能 ➢ LLVM 优化器 ➢ Native + WASM Target ➢ 代码索引、增量编译 稳定 ➢ 强不可变性 ➢ 静态类型系统 ➢ 面向约束 工程化 ➢ 多语言 SDK ➢ 内置函数+系统库 ➢ YAML/JSON 亲和 ➢ 包管理工具 ➢ Plugin
14. KCL HCL CUE 通过 KCL Schema 进行建模,通过语 言级别的工程和部分面向对象特性,可 以实现较高的模型抽象 通过 Terraform Go Provider Schema 定义,在用户界面不直接感知,此外 编写复杂的 object 和必选/可选字段 定义时用户界面较为繁琐 通过 Struct 进行建模,无继承等特性, 当模型定义之间无冲突时可以实现较高 的抽象。由于 CUE 在运行时进行约束 检查,在大规模建模场景可能存在性能 瓶颈 约束 能力 更丰富的 check 声明式约束语法,编写 更加容易,对于配置字段组合约束编写 更加简单(比 CUE 多了 if guard 组合 约束,all/any/map 等集合约束编写更 容易) 通过 Variable 的 condition 字段对动 态参数进行约束,Sentinel/Rego 等 策略语言完成,语言本身的完整能力 不能自闭环,且实现方式不统一 CUE 将类型和值合并到一个概念中, 通过各种语法简化了约束的编写,比如 不需要泛型和枚举,求和类型和空值合 并都是一回事 扩展性 KCL 可以自定义配置分块编写方式和多 种合并策略,KCL 同时支持幂等和非幂 等的合并策略,可以满足复杂的多租户、 多环境配置场景需求 Terraform HCL 通过分文件进行 Override, 模式比较固定,能力受限 支持语言内部配置合并,CUE 的配置 合并是完全幂等的,对于满足复杂的多 租户、多环境配置场景的覆盖需求可能 无法满足 复杂的结构定义、循环、条件约束场景 编写复杂的对象定义和必选/可选字段 定义时用户界面较为繁琐 对于复杂的循环、条件约束场景编写复 杂,对于需要进行配置精确修改的编写 场景较为繁琐 建模 能力 语言化 编写简单 编写能力
15. ➢ 面向开发者的平台界面,屏蔽底层 复杂性,降低开发者认知 ➢ 覆盖应用全生命周期,一份配置即 可完整描述应用
16. Konfig 配置大库 Konfig models schema AppConfiguration ➢ Workload 工作负载 Component ➢ Accessories 配件 ➢ Topology 部署拓扑 ➢ … …… docs … base.k base 1 2 可信原生 1 中间件 2 paas 3 … … rbac.k … prod cloud mesh dev … … project.yaml pilot main.k galley rbac.k … topology.k stack.yaml Git ➢ 单一大库收拢蚂蚁所有应用交付配置 ➢ 主干开发,分支发布 ➢ 环境维度权限控制、对维度 CI 配套
17. ➢ Kusion Module 是对底层基础设施服务、发布运 维等平台能力的封装抽象,定义遵循单一职责原 (应用研发) Kusion Module 上传、注册 则,而非抽象整个云服务 (SRE、平台研发) OCI 制品仓库 ➢ Kusion Module 由两部分组成:面向应用开发者 拉取 的基于 KCL 的 Schema 定义,以及基于通用编程 Go 插件 GRPC 调用 语言的 Generator 程序,负责实现对应的配置渲 染、生成逻辑 应用配置 (AppConfiguration) ➢ Kusion Module 的分发依赖 OCI 制品仓库, Kusion Engine 访问 OCI 中心拉取对应的 Kusion Module 制品,并以 Go 插件形式调用 环境维度基线 Kusion 引擎 生成 统一 Spec (SSOT)
18. Kusion 引擎 Operations Init Preview Apply Destory … Operation Engine Dep Analysis DAG Res Health Check State 3-Way Merge/Diff RW Runtimes Apply K8s Resources Kubernetes Runtime Get Delete Watch TF Resources X Resources Terraform Runtime Third Party Runtime 配套工具能力支持 Engine: 提供终端命令依赖的资源管理、DAG 编排、三路对比等核心功能 Filesystem Database Interfaces Kusion: 面向开发者的云原生接入工具,提供 OSS Runtimes: 抽象统一的基础设施接入层,可 扩展方式实现异构基础设施一致交互 State: 真实世界资源在引擎中的映射,Kusion 管理基础架构的必要数据 Kubernetes Clusters Clouds On Perm Infra
19. 蚂蚁落地实践
20. ➢ 风险左移 ➢ 变更预览 ➢ 单一事实来源 研发 应用 代码变更 评审 业务代码仓库 业务代码 CI 阶段 代码扫描 编译构建 配置自动化服务层 SRE 配置 代码变更 Konfig 大库 影响面 分析 拉取 推送 镜像中心 Provider/M odule 库 大库 CI 阶段 评审 ➢ 交付即运维 ➢ 技术风险水位 测试 拉取 CD 阶段 代码合并 变更预览 变更管控 配置飘逸检查 可视化 Kusion 引擎 生效 配置生效 Watch
21. 申请应用 编译构建 研 发 态 应用研发 镜像仓库 修改配置 拉取稳定版本 拉取镜像 应用配置 入驻大库 配置生效 部署验证 验收不通过 拉取 交付物 私有云 OCI 仓库 构建 交付包 配置管理 交付包 分发 交 付 态 配置驱动 生效 质量验收 结束 部 署 态 验收通过 应用封版
22. 100+ 3000+ Kusion Modules 业务应用 1500+ 470000+ 1200+/天 200M+ 蚂蚁开发者 Konfig 大库提交 CI 流水线 KCL Code
23. 总结与展望
24. 透过现象看本质,不同产品、工具解决问题的思路 本质是一样的,都面临根本性挑战
25. 挑战一:灵活性与简单性之间的矛盾 挑战二:配置代码独家驱动导致的不对称
26. 如果你计划实施平台工程战略,请务必确保你的 平台支持动态配置管理
27. Developer Control Plane Kusion Developer Portal Copilot Backstage Plugin Version Control Systems IDE (KCL Tools) Kusion Models Resources CI/CD Integration & Delivery Monitoring & Logging Stability & Security & Identity Custom Portal Kusion K8s Operator Observability Kusion Platform Orchestrator Kusion Explorer Search, Diagnosis, Insight, Intelligence Secrets Trust Tunnel Identity 50+ Kusion Providers
28. • Website • https://kusionstack.io/ • Github • https://github.com/KusionStack • https://github.com/kcl-lang • Slack • https://kusionstack.slack.com • Twitter • @KusionStack
29.
30. THANKS 大模型正在重新定义软件 Large Language Model Is Redefining The Software

inicio - Wiki
Copyright © 2011-2025 iteam. Current version is 2.139.0. UTC+08:00, 2025-01-10 04:39
浙ICP备14020137号-1 $mapa de visitantes$