课程大纲
第一天上午 | DevOps概念与组成 | DevOps理论、文化、收益、反模式 |
DevOps团队组织、架构演变模式 | ||
正确与错误的DevOps思维,及场景分析 | ||
DevOps中敏捷与精益的作用(快速视频呈现) | ||
DevOps对企业带来的好处 | ||
DevOps与不同的运营方法论的组合 | ||
敏捷与DevOps转型推动 | 敏捷与DevOps中,不可忽视文化 | |
团队化规模化思考,痛点分析 | ||
敏捷团队转型到DevOps体系 | ||
传统团队转型到DevOps体系 | ||
DevOps组织结构的自我演进 | ||
DevOps中流程的正确性保证 | ||
传统模式转变中的双态模式:稳态+敏态 | ||
第一天下午 | DevOps转型路线设计 | 根据业务特征与技术堆栈,进行目标选型 |
文化认知与反馈,团队选择与构建 | ||
组织过程的自我优化与演进,小范围投资 | ||
流程的正确性保证 | ||
双峰挑战下的质量与监管落地 | ||
安全的要求与融合 | ||
DevOps转型中的风险与痛点 | ||
文化 | 传统模式转型到DevOps,需要注意什么 | |
敏捷模式转型到DevOps,需要注意什么 | ||
高层、中层、基层,如何构建DevOps的文化 | ||
DevOps转型中,最大的挑战和困难 | ||
DevOps转型中,最重要的是什么 | ||
成功案例分析:某银行文化组织转型 | ||
失败案例分析:某互联网金融公司,转型失败分析 | ||
构建的整体技术平台方向 | 整体构建详细思路,项目管控、需求、工程三合一 | |
开发转型落地点 | ||
持续测试、分层测试、测试建模的切入 | ||
运维的挑战与转型实施 | ||
整体沟通链条的构建 | ||
KPI/OKR的持续考核与持续反馈 | ||
需要哪些团队的何种投入 | ||
第二天上午 | 应用、需求和开发设计 | 应用生命周期与服务生命周期 |
项目章程及可视化控制, 需求分析的快速变更自适应 | ||
基础设施支持,云和虚拟化 | ||
开发架构设计,SOA、微服务等模式的引入 | ||
组件和依赖 | ||
架构考虑运营时的要求 | ||
持续集成、快速研发与Pipeline | 持续集成、持续交付与持续部署 | |
持续集成平台 | ||
单分支开发策略 | ||
规律性增量发布策略 | ||
特性开关技术、服务降级与抽象分支 | ||
产出管理 | ||
Pipeline建设相关实践 | ||
测试分析 | 质量目标的变化 | |
当前挑战与趋势,大型系统持续交付难点 | ||
各阶段KPI定义 | ||
各阶段测试策略 | ||
第二天下午 | 持续测试 | DevOps中,测试策略改变与测试前置 |
持续测试在DevOps全局链中的作用,构建持续反馈 | ||
分级测试及对应测试域的介绍 | ||
复杂场景与简单场景的持续测试举例 | ||
自动化测试的作用,与不同场景下的应用 | ||
移动端测试自动化,及App专项测试 | ||
持续交付与持续部署 | Canary发布策略 | |
Blue-Green发布方法 | ||
灰度发布、抹黑启动 | ||
标准化一切 | ||
组件与依赖管理实践 | ||
建立数据沙盒 | ||
自动化数据库变更管理 | ||
同源版本管理实践 | ||
运维 | 服务级别协议 | |
应用管理与资源管理 | ||
数据管理 | ||
基础设施维护 | ||
持续交付的架构角度 | ||
配置管理与版本管理 | ||
业务连续性维护的相关运维措施,业务终止 | ||
伸缩与发布策略 | ||
运维PaaS平台化实现 | ||
第三天上午 | DevOps下的质量需求设定 | 讨论:互联网与传统企业的敏捷需求,质量需求 |
讨论:复杂业务与简单业务,前期分析是的区别 | ||
一生二,二生三,三生万物:测试为万物 | ||
构建业务需求的Backlog | ||
构建基于开发测试规则出发的完整Backlog | ||
需求与后续测试点匹配的模型设定 | ||
DevOps下的测试 | 讨论:结对编程为何没有流行开? | |
解释TDD测试驱动开发内涵 | ||
解释ATDD与BDD的测试开发 | ||
对比测试驱动开发与单元测试 | ||
讨论:如何减少TDD与unit test工作量? | ||
探索性测试提升黑盒测试效率 | ||
持续集成构建的冒烟测试 | ||
讨论:哪里测试中最消耗时间环节 | ||
测试数据构造与复用 | ||
第三天下午 | 分级测试 | 分级测试的原因 |
分级测试的必备伴侣: CI持续集成 | ||
分级测试的必备规则与约定 | ||
开发与测试的密切配合 | ||
测试的重点投入 | ||
测试建模(复杂业务的测试快速构建与维护) | 测试建模原理 | |
有限状态机:降低用例维护性代价 | ||
去用例化的建模 | ||
与需求构建的一一对应 | ||
DevOps发展与工具集合 | DevOps的发展历史-三次变革 | |
第一次变更-持续集成-Hudson到Jenkins | ||
第二次变革-容器化 Docker | ||
第三次变革-K8S | ||
DevOps工具图谱 | ||
如何选择不同的DevOps工具 | ||
工具选择案例 | 案例一:XX银行的选择 | |
案例二:XX通信行业的选择 | ||
案例三:XX物流行业的选择 | ||
案例四:XX证券的选择 | ||
案例五:XX航空的选择 | ||
如何规避工具选择的风险 | ||
第四天下午 | 持续集成Jenkins | Jenkins基本功能介绍 |
Jenkins的安装、配置 | ||
Jenkins的基本使用命令 | ||
Jenkins进阶介绍 | ||
Jenkins插件功能介绍 | ||
动手实践 | ||
其他持续工具简要介绍—Bamboo、GoCD、Hudson | ||
GitLab CI的持续集成能力 | ||
风险与痛点 | ||
构建 | Maven的使用 | |
Gradle的使用 | ||
Conan、GCC、Cmake的使用 | ||
与Jenkins的集成 | ||
容器Docker的使用 | Docker与虚拟机的区别 | |
Docker的架构 | ||
Docker的安装、配置 | ||
Docker的基本使用命令 | ||
Docker的进阶 | ||
Docker之间的通讯与目录共享 | ||
Docker的适应性场景 | ||
动手实践 | ||
Docker Hub的功能介绍 | ||
代码管理工具 | SVN、Git介绍 | |
Git的安装与配置 | ||
GitLab安装与配置 | ||
Git 的基本操作与命令 | ||
Git的高级进阶 | ||
GitFlow、分支管理、主干管理、特性开关功能介绍 | ||
动手实践 | ||
其他介绍:GitHub、CC、bitbucket | ||
风险与痛点 | ||
测试相关工具介绍 | 代码扫描工具介绍 | |
Sonar的基本使用 | ||
Sonar的集成 | ||
Sonar的规则自定义 | ||
单元测试工具Junit的使用与集成 | ||
API自动化测试工具的使用与集成 | ||
微服务自动化测试工具的使用与集成 | ||
GUI自动化测试工具的使用与集成 | ||
K8S的介绍 | Kubernetes容器编排概述 | |
Kubernetes架构概述-Pods、标签/选择器、复制控制器、服务、API | ||
创建Kubernetes pods和volumes | ||
使用Kubernetes命名空间来管理不同的环境 | ||
发现并连接到容器 | ||
发现其他的服务,发布自己的服务 |