全球运维技术大会

王福 小米研发效能演进之路

1. ⼩小⽶米研发效能演进之路路 王福 ⼩小⽶米通⽤用架构与⼯工具团队-架构师
2. 关于 关于我 ⼩小⽶米⼈人⼯工智能与云平台 云技术-通⽤用架构与⼯工具团队 负责分布式链路路追踪、研发效能平台 讨论联系 公众号:(微信搜索)⼩小⽶米云技术
3. • 背景介绍 • 开源⼯工具采⽤用 • 商业采购经验 • ⾃自研研发效能平台
4. • 背景介绍 • 开源⼯工具采⽤用 • 商业采购经验 • ⾃自研研发效能平台
5. 背景介绍 业务模块 硬件IOT:⼿手机、⽣生态链、⼩小爱智能⾳音响 新零售:⼩小⽶米⽹网、有品 互联⽹网:⼴广告、⾦金金融、MiCloud 技术栈 通⽤用技术栈:Java 部分电商业务:Golang AI业务:C&C++
6. 背景介绍 • ⼩小⽶米研发效能领域的三个阶段 开源⼯工具使⽤用 商业采购 ⾃自研研发效能 平台
7. • 背景介绍 • 开源⼯工具采⽤用 • 商业采购经验 • ⾃自研研发效能平台
8. 开源⼯工具采⽤用 • 代码质量量⼯工具 标题⽂文本 • Phabricator • Faceboo正k出⽂文品级,别⼩小⽶1米早期员⼯工引⼊入 • 更更⼈人性化正的⽂代文级码别Di2ff功能 正⽂文级别 3 • 代码检查集正成⽂文:级S别on4ar、JsLint等 正⽂文级别 5
9. 开源⼯工具采⽤用 • 代码质量量⼯标工具题⽂文本 • SonarQube • 开源代码正质⽂文量级量管别理理1平台 • ⽀支持Java正、⽂C文级\C别++2、C#等语⾔言 正⽂文级别 3 • SonarLint正\M⽂v文n级+别Jac4oco+Jenkins 正⽂文级别 5
10. 开源⼯工具采⽤用 • ⼆二进制存储标与题管理理⽂文本 • Nexus • 优秀的M正正av⽂⽂e文文级n级仓别别库12管理理器器 • 强⼤大的仓正库⽂管文级理理别与搜3 索功能 正⽂文级别 4 正⽂文级别 5
11. 开源⼯工具采⽤用 • 持续集成持标续题交付⽂引文擎本 • Jenkins • 扫描、发正正布⽂⽂文类文级级需别别求12 • 监控、测正试⽂类文级需别求3 正⽂文级别 4 正⽂文级别 5
12. 开源⼯工具采⽤用 • 持续集成持标续题交付⽂引文擎本 • Jenkins on K8s • 资源:物正正理⽂理⽂文机文级级做别别Sl1a2ve资源利利⽤用率低 • 隔离:基正于⽂D文o级c别ker3提供更更好的隔离性 正⽂文级别 4 正⽂文级别 5 Jenkins Master On Node 本地磁盘 Slave In Pod Slave In Pod Slave In Pod Slave In Pod Master On K8s GlusterFS Slave In Pod …… K8s 集群
13. • 背景介绍 • 开源⼯工具采⽤用 • 商业采购经验 • ⾃自研研发效能平台
14. 商业采购经验 基于开源的⽅方案遇到困难 性能瓶颈 业务需求⽇日益多元化但团队规模有限 扩展更更多的能⼒力力 更更多元化的代码质量量检查 审计需求 ⼆二进制、镜像等安全扫描
15. 分类 ⾃自研 采购 商业采购经验 收益 平台功能产出 技术积累 ⻛风险 ⼈人员变动 技术攻关失败 产品可⽤用性差 更更快价值交付与落地 更更快获取业界⼀一流经验 数据泄露露 供应商不不可控因素⽆无法提供服务等
16. 商业采购经验 • 经验总结 • 货⽐比三家,⼀一定要多试⽤用⽐比较 • 售后服务与咨询很重要 • 采购可整合性更更好的产品 • 尽量量离线部署以防⽌止数据泄露露 代码质量量扫描 ⼆二进制安全扫描 ⼯工 具 Gitlab Phabricator Jenkins On K8s 层 ⼆二进制& 产出物 存储 部署 服务 安全/法律律合规扫描 ⼆二进制 法务审计 扫描
17. • 背景介绍 • 开源⼯工具采⽤用 • 商业采购经验 • ⾃自研研发效能平台
18. ⾃自研研发效能平台 理理清组织结构、 项⽬目结构 降低接⼊入成本 标准化打通各个系统 整合⼯工具,赋能研发 符合某特征的必须审计 的项⽬目有哪些? 没⼈人能清楚 N个平台M个场景J个团 队,经常做重复接⼊入、 遇到同样的问题 如何打通部署?如何集 成诸如压测等其他系统 ⾃自研的⽬目标,是标准化整合各⼯工具,⽽而⾮非⾃自研每⼀一个独⽴立⼯工具
19. ⾃自研研发效能平台 平 运维平台 台 层 能 ⼒力力 团队注册 层 ⼀一键接⼊入 ⼩小⽶米私有云 平台服务⼊入⼝口 ⼩小⽶米⽣生态云 检测扫描⼯工具集成 发布部署 标准化⼯工具接⼊入 计划中 数据层 数据智能应⽤用 ⼯工 具 Gitlab Phabricator Jenkins On K8s 层 代码质量量扫描 安全/法律律合规扫描 ⼆二进制& 产出物存 储 ⼆二进制安全扫描 ⼆二进制 法务审计 扫描 部署服务 研发效能数据仓库
20. ⾃自研研发效能平台 • 核⼼心实现:Jenkins⽆无状态优化 标题⽂文本 • Job数据⽆无状态化 • Job的参数配置、Jenkinsfile等均由平台管理理 • 每次build时正依⽂次文级选集别群1、新建或更更新Job、执⾏行行 正⽂文级别 2 • 执⾏行行结果通过正插⽂件文级同别步导3⼊入ES • 集群信息⽆无状态正化⽂文级别 4 正⽂文级别 5 ElasticSearch Job执⾏行行记录、⽇日志 Job In Pod Job In Pod Job In Pod Job In Pod Job In Pod Job In Pod Master On K8s Master On K8s Master On K8s Warm-sidecar Warm-sidecar Warm-sidecar Zookeeper MySQL Job元数据、集群元数据
21. ⾃自研研发效能平台 标题⽂文本 正⽂文级别 1 正⽂文级别 2 正⽂文级别 3 正⽂文级别 4 正⽂文级别 5
22. 谢谢 欢迎关注 公众号:(微信搜索)⼩小⽶米云技术
23. 附录 • 核⼼心业务模型抽象 标题⽂文本 • Pipeline={Stage1,Stage2…} • Stage=[input] {Action1,Action2…}[output] 正⽂文级别 1 • Action正=c⽂m文级d+别pa2rams • input:C正od⽂文e级\*.别jar3 正⽂文级别 4 • output: 正*.j⽂a文r\级镜别像\5扫描数据
24. 附录 • 核⼼心业务模型抽象 • Pipeline模板:通⽤用Pipeline的抽象 标题⽂文本 • 管理理若⼲干Stage模板及先后顺序 • ⼀一个模板对应⼀一类场景:如mvn类代码质量量扫描 • 平台运营提供公司级Pipekine模板 • 业务经理理\架构师正制⽂定文团级队别级模1板 • Stage模板:最细粒度正执⽂⾏文行行级单元别 2 正⽂文级别 3 • ⼀一个Stage对应⼀一正个平⽂台文级或⼀别一组操4作(如git pull) • Stage中的动态数据正抽⽂象文为级动别态参5数 • 提供pre/after condition judge or hook
25. • 核⼼心实现:架构图 标题⽂文本 正⽂文级别 1 正⽂文级别 2 正⽂文级别 3 正⽂文级别 4 正⽂文级别 5 附录
26. 附录 业务基础 贴业务 做标准 推⼴广落地 出数据 拜真佛

相关幻灯片