刘长城 云上DevOps工具链架构实现

文字内容
1. 云化DevOps工具链架构 华为云DevCloud高级架构师 刘长城
4. 目录 1. 华为研发模式演进 2. DevOps实践 3. DevOps工具生态 4. 云上DevOps工具链 5. 云上DevOps工具链架构实现
5. 软件形态正在发生变革 大数据 云 IoT 微服务 移动 研发场景 AI 软件生产力变革 编程语言 软件架构 研发工具 研发模式 交付形式
6. 测试自动化工厂 • 环境标准化 • 用例标准化 • 用例执行平台 • 任务调度平台 持续交付 • 持续交付流水线 • 开发测试拉通 • 交付可视化看板 CD 自动化 1987 2000 IPD WaterFall Manual Testing 文档 2010 2013 CI 持续集成 • 单元测试 • 构建 • 静态检查 • 开发测试 • 覆盖率 • 部署 华为研发模式进化 DevOps • • • • • • • • 服务化 CloudNative Docker Deploy k8s 监控告警 自动化运维 发布反馈 Now
7. 软件研发模式的进化 DevOps 不同的产品形态会选择不同的交付模式
8. 目录 1. 华为研发模式演进 2. DevOps实践 3. DevOps工具生态 4. 云上DevOps工具链 5. 云上DevOps工具链架构实现
9. DevOps关键实践 • DevOps实践的关键: 团队协作 + 特性设计 + 自动化能力 + 架构 + 基础设施 团队协作 全功能产品团队 精益开发 特性看板 构建、部署、 验证自动化 领域特性团队 灰度发布 金丝雀发布 自动化持续 监控 流水线 架构 环境 服务化/微服务架构: 基础设施即代码: 特性发布闭环
10. DevOps CALMS模型 文化 (C) 自动化 (A) 精益 (L) 度量 (M) 分享 (S)
11. DevOps CALMS全景图 DevOps Dev 计划 编码 构建 验证 发布 文化 Ops 分享 部署 运维/ 运营 持续集成 持续交付 自动化 监控 快速 迭代 度量 监控 指标 分析 精益
12. 目录 1. 华为研发模式演进 2. DevOps实践 3. DevOps工具生态 4. 云上DevOps工具链 5. 云上DevOps工具链架构实现
13. DevOps工具生态 • DevOps工具生态庞杂,碎片化问题严重
14. 基于Jenkins的持续交付工具链 • 业界流行的CD集成方式 Code & Commit Build & Config Scan & Test Release Deploy
15. 单点的工具没有解决的问题 • 稳定性,100%可用 • 升级中断业务 • 任务随时能构建 • 高并发、性能 • 并发受限于执行资源 • 使用复杂度 • 工具集成复杂 • 数据100%安全 • 任务数据安全
16. 目录 1. 华为研发模式演进 2. DevOps实践 3. DevOps工具生态 4. 云上DevOps工具链 5. 云上DevOps工具链架构实现
17. 云上DevOps工具链核心述求 数据安全 随时可用 执行效率高 稳定 多租户数据安全隔离 云化存储数据不丢 云化服务随时可用 资源利用率高 云化资源弹性调度 并发能力高 高可用 自动备份 使用成本低 业务集成度高 配置简化 模板化
18. DevOps工具链全景图 DevOps工具链:从需求下发、到代码提交与编译,测试与验证到部署与运维,打通软件交付的完整路径, 提供软件研发端到端支持 Scrum看板 镜像仓 软件仓服务 配置服务 images or war 推送需求状态 各类环境 构建 slave 需求下发 ECS deploy 应用代码 测试代码 部署脚本 IDE 环境定义 构建服务 流水线 test RDS CCE 应用性能管理APM 开发环境 部署服务 ECS RDS CCE 验证环境(A/B/G) commit ECS 配置库服务 验证服务 运营数据 智能分析 DIS CDM CCE 应用运维管理AOM 压测环境 数据上报和采集 运营数 据可视 RDS Kafka ECS RDS CCE 生产环境 日志、监控、告警 数据湖
19. 云上DevOps工具链实现理念 云上DevOps工具链平台,将研发工具集合为一体,面向开发者提供研发工具服务,让软件开发简单高效 Web开发 移动应用开发 IoT开发 微服务开发 AI开发 鲲鹏开发 云上开发 DevOps/持续交付 多场景 全集成 高性能 高安全 全云化 高智能 体验与乐趣 全生命周期 • 一切研发活动都在云上 • 开发、测试、运维跨地域协同 • 端到端工具服务,全生命周期覆盖 • 告别传统黑白屏 • 弹性伸缩、并发加速 • 快速交付、快速反馈 • 融入企业级敏捷和精益 • 动画卡片 • 社交化协作 • 开发、类生产、生产环境一致 • 服务之间数据层拉通,双向追溯 • 触屏
20. 目录 1. 华为研发模式演进 2. DevOps实践 3. DevOps工具生态 4. 云上DevOps工具链 5. 云上DevOps工具链架构实现
21. 敏捷项目管理:AnyWhere & AnyTime 丢需求 延期 抓瞎 专业 敏捷管理:迭代计划和时间线,及时准确掌控项目进展 透明 思维导图规划:产品全景规划,便捷需求拆分和路标计划 可控 兼顾标准与轻量:提供标准Scrum和轻量看板两种模板 可跟踪 连接数据、人、经验 管理者仪表盘:自定制统计报表,掌握企业和项目宏观进展 重复犯错 项目文档管理 :超大容量文档托管,知识资产有效传承 Wiki协作 :团队知识在线分享,及时沉淀项目经验 阻塞 继承 固化到工具 随时随地 移动App:随时查看和处理,不阻塞等待 顺畅
22. 研发协同(HiChat):构建开发者专属的沟通协作新体验 业务信息 机器人 运维 hubot 运营 事件 测试 产品 查询 触发 消息 Incoming bot 开发 业务服务 设计 Outgoing bot 业务信息 开发场景 业务融入协作,深挖开发场景沟 通协作 机器人辅助 按需订阅机器人服务,7*24小时 关注业务变化 趣味活泼 信息及时分享,激发组织活力 便捷接入 支持web、客户端多种方式接入 业务 信息
23. 代码托管:安全高效,远程协作 安全 • • • • • 支持IP白名单设置,确保接入安全 支持访问日志,方便审计 支持加密存储,防范代码泄露 支持Git-Crypt,扩展加密存储能力 安全防护墙,阻止用户上传敏感信息 协作 可视化 • 支持Git-Flow工作流 • 增强型Code Review:权限控制,Code Owners,评分机制,协作提醒,问题闭环 • 自动关联流水线,确保提交质量 • 独创Coding in Web,方便在线编辑代码 • • • • • 代码语言类型统计 代码增长趋势图 小组贡献量排名 提交活跃度分布 提交质量统计 21
24. 高可用的git托管服务架构 Front-end Load Balancers 集群职责分离 API、web、Git流量分开,隔离相互影响 Web 443 pages workhorse gitaly nfs mounts 443 nginx rails haproxy API Git 443 nginx workhorse gitaly nfs mounts 22 haproxy Sidekiq 443 sshd nginx gitlab -shell workhorse haproxy nginx gitaly rails gitaly Sidekiq rails nfs mounts nfs mounts EFS(高速弹性文件存储) 22 rails
25. CloudIDE:按需配置的开发环境,全云化的开发体验 按需获取的开发环境 计算和存储资源可选 多种原生技术栈支持 项目代码自动导入 全面实用的开发体验 支持40+语言 云端构建、运行和调试 页面配置后端环境 开放的解决方案平台 多开发场景支持 开放集成华为云 企业租户权限管控
26. 高可用的CloudIDE架构 控制面和业务面分开,最小化客户权限,构建安全、易用、高性能的IDE 控制面VPC CCE Workspace VPC CCE nginx Load Balancer nginx Load Balancer service cloudIDE Portal POD Workspace server RDS POD Container (machine) cloudIDE Server SWR service EVS Container (machine) SFS 24
27. 流水线:打造快速、可靠、可重复的流水线 架构 设计 代码 编写 需求 分析 本地 构建 用户 场景 提交 代码 分层分级 代码 下载 运营 反馈 云端 构建 监控 运维 静态 检查 灰度 发布 α 测试 变更 申请 β 测试 发布 决策 分层分级流水线,可通过子流水线stage-job实现多级灵活串并行调度 γ 测试 Dog food 快速调度 渐进质量 纳管研发过程中编译构建、代码检 查、部署等多种自动化任务 设置自动化质量门禁,人工卡 点,等待时间等控制任务
28. 统一CI/CD流水线工具链架构 流水线 DevUI 编码 团队空间 构建 检查 构建 服务 部署 服务 测试 发布 部署 检查 服务 测试 服务 分析 … 流水线 服务 统一权限 任务中心 trigger 插件平台 调度平台 统一编 排执行 模板 报告 统一任 务调度 资源 调度 CCI 日志 镜像 管理 CCE EVS EFS 构建 Agent 流水线 Agent 测试 Agent 部署 Agent 检查 Agent 构建 Agent 流水线 Agent 检查 测试 部署 Rest 检查 Agent 构建依赖服务 构建 pipeline 部署 Agent 数据分析 平台 环境管理 vpc vpc 测试 Agent 状态 • 服务化编译、检查、测试和部署发布 • 统一任务管理、任务执行,任务编排,确保DevOps任 务稳定、高可用的执行 • 统一执行资源的分配、调度和监控,提升资源利用率, 确保任务随时有资源可执行 • 扩展插件化 • 任务数据按租户隔离,确保数据安全 协 议 通 道 检查依赖服务 检查依赖服务 发布部署依赖服务
29. 标准化任务描述 CDDL (Continious Deliver Domain Language),用来定义持续交付流水线中各过程及过程间依赖关系的流程描 述语言。 • 简易性:支持json和ymal,更易于理解,描述更简洁。 • 可扩展性:描述性语言的特点方便用户随意扩展自己特殊的业务过程,便于用户定制,CDDL语言不仅仅被局限于持续交付流程,只要扩 展相应的流程节点,即可被应用于各种业务流程场景。 • 平台无关性:CDDL语言的解释器,执行器与语言本身没有强耦合,只要遵从一些基本的约束,流程可以在任何平台上运行。 • 灵活性:CDDL的设计,参考了UML中的状态机模型,流水线设计比简单的串并行拥有更多的灵活控制 CDDL流水线数据格式要素 CDDL 脚本模式 图形模式 列表模式 CDDL解析 CDDL 执行引擎 Jenkins 2.0 下载 编译 其它 静态 检查 ….. 部署 测试 发布
30. 依赖包仓库服务(镜像服务) 主流语言开发组件镜像 常用开发工具镜像 支持6种主流开发语言 的开源组件镜像适合 各类开发者的开发场 景使用 提供30种常用开发者 工具镜像,配套各种 开发场景的需要 maven、npm、python、 docker、php 、nuget、 rubygems nginx、apache、jdk、 git、jenkins、mysql、 ctan、zabbix、…… 热门开源操作系统镜像 提供22种热门开源操 作系统的镜像供开发 者按需选用并提供快 捷下载方式 CDN加速,配置一键便捷生成 更快 centos、ubuntu、epel、 archlinux、debian、 Opensuse、fedora、…… 注册用户享受CDN专属加速 镜像通过香港代理出口及时同步 提供交流论坛,团队迅速响应问题 一站式镜像站,适配各类开发场景 国内开发者 国外开源组件 更全 国外开源组件下载慢 提供近60种常用开发镜像,免费使用 镜像覆盖开发组件、工具、操作系统 使用问题可在论坛中迅速获得帮助 国内镜像站内容不全面 慢 异地协作难以保证多地下载速度 官方社区合作,组件来源更可信 开发对各包管理工具配置不了解 国内唯一的maven central镜像库 开源组件来源有安全风险 国内镜像站不能保证长期维护和稳定 …………………… 安全 6种官方认证操作系统镜像 所有镜像来自官方社区并保持一致
31. 鲲鹏生态的DevOps工具链 建设鲲鹏产业联盟与开发者生态,提供研发最佳实践、行业标准规范及开发者社区。提供鲲鹏研发技术栈,覆盖芯片、服务器、OS、 驱动、云服务、加速库及中间件。基于华为公有云DevCloud服务,提供E2E的鲲鹏DevOps工具链,及线上线下开放实验室。 鲲鹏产业联盟和开发者生态 技 术 生 态 行 业 生 态 鲲鹏研发技术栈 DevOps 工具链 研发 生态 行业标 准规范 DevCloud新增鲲鹏研发工具服务 DevCloud鲲鹏DevOps工 具链 加速库、中间件 IaaS&PaaS云服务 研发 最佳实践 云上DevOps工具链、服务、及开放实验室 工 具 能 力 FusionSphere云平台 欧拉OS与驱动 开放社区 与服务 编码 代码分析 编译构建 测试 Linux IDE &Cloud IDE 鲲鹏代码扫描 鲲鹏优化编译器 鲲鹏性能分析调优 泰山高性能 DevMachine 鲲鹏代码辅助移植 鲲鹏并行构建 鲲鹏功能测试&性 能测试 ARM化Git代码库 鲲鹏代码安全检查 鲲鹏兼容性测试 鲲鹏开源三方代码中心库 鲲鹏开源二进制中心仓库 鲲鹏代码检查规则库 鲲鹏线上、线下开放实验室 鲲鹏工具Marketplace 鲲鹏&X86混合环境 泰山服务器 鲲鹏芯片 环 境 产品 工具