第1章 云时代客户需求的及时响应 1
1.1 客户需求与竞争对手产品分析驱动的行动框架 1
1.1.1 云应用客户需求的收集分析决策 1
1.1.2 云应用竞争对手产品分析与敏捷应对 4
1.2 实施应用决策——预算规划下的云资源投入 7
1.2.1 预算规划下的云资源投入计算和优化 7
1.2.2 快速迭代与优化客户反馈和市场反应 10
1.3 小结 11
第2章 产品项目生命周期的开始——Redmine 13
2.1 从创建开始——Redmine入门 13
2.1.1 首次体验Redmine 13
2.1.2 使用Redmine定义产品项目 15
2.1.3 众人的合力——Redmine角色定义与产品预期沟通 16
2.2 产品管理——进度与反馈 18
2.2.1 TodoList应用项目总览 18
2.2.2 Redmine问题跟踪 20
2.2.3 Redmine活动管理 21
2.3 深入阶段——Redmine日历与进度表 23
2.3.1 Redmine日历记录与管理 23
2.3.2 使用甘特图实施进度把控 25
2.3.3 综合使用日历与进度把控的讨论区管理 26
2.4 基于需求的扩展——使用Redmine高级管理功能 28
2.4.1 组功能和任务指派 28
2.4.2 项目权限和角色管理 31
2.5 小结 32
第3章 管理代码——从分布式版本控制系统Git出发 33
3.1 版本控制系统构建与管理——Git 33
3.1.1 Git如何工作 33
3.1.2 Git操作场景 37
3.1.3 Git协作开发的经典模式 53
3.2 管理分享代码宝库——GitHub 62
3.2.1 GitHub基本简介 63
3.2.2 GitHub其他功能 69
3.2.3 快速找到你感兴趣的项目 77
3.3 企业的内部代码仓库管理——GitLab 79
3.3.1 GitLab基本简介 80
3.3.2 搭建GitLab服务 82
3.4 小结 84
第4章 让需求和质量持续得到满足——快速交付中的Jenkins 85
4.1 精良的工作流设计——Jenkins定制 85
4.1.1 简单的开始——安装和使用容器化的Jenkins 85
4.1.2 选择合适的工具——Jenkins插件的搜索和使用 91
4.1.3 Jenkins崭新的用户体验——BlueOcean 93
4.2 跟踪问题——Gerrit 102
4.2.1 Gerrit简介和使用 103
4.2.2 Gerrit与Jenkins集成 113
4.3 更健全的Jenkins系统及维护实践 119
4.3.1 Jenkins分布式节点的构建 119
4.3.2 Jenkins用户管理 124
4.3.3 Jenkins安全配置 125
4.3.4 管理及监控Jenkins 131
4.4 小结 136
第5章 迭代——持续集成的自动化测试 137
5.1 自动化测试与Jenkins 137
5.1.1 代码片段能工作吗——单元测试 139
5.1.2 发现局部的问题——集成测试 139
5.1.3 持续交付——端到端测试 139
5.2 全面的考虑——规划Jenkins测试 139
5.2.1 规划回归测试 139
5.2.2 规划端到端测试 140
5.2.3 用户可以使用吗——定义功能测试 140
5.2.4 可以做到足够好——定义性能测试 141
5.2.5 预防可能出现的安全问题——定义安全性测试 141
5.3 用户可以使用吗——定义功能测试 141
5.3.1 面向图形用户界面的测试 142
5.3.2 面向系统互联接口(RESTAPI)的功能测试 170
5.4 可以做到足够好——定义性能测试 185
5.4.1 预先准备——Web性能KPI定义 185
5.4.2 LOCUST的安装和配置 186
5.4.3 LOCUST测试代码 186
5.4.4 运行LOCUST进行性能测试 187
5.4.5 LOCUST测试在云端 191
5.5 预防可能出现的安全问题——定义安全性测试 192
5.5.1 如何安装Metasploit 193
5.5.2 如何使用Metasploit 193
5.5.3 基于Metasploit的自动化测试 197
5.5.4 Metasploit在云端 200
5.6 小结 201
第6章 尽快让客户看到改进和得到反馈——端到端的交付部署Kubernetes和Ansible 202
6.1 规划云原生端到端的域部署——流程域的划分 202
6.2 实现部署——使用Ansible配置管理 203
6.2.1 Ansible的安装和使用 204
6.2.2 测试区域/预生产区域/生产区域的Ansible配置 216
6.2.3 跨域部署——Ansible如何应对跳转机 217
6.3 构建容器式交付部署环境——使用Kubernetes集群 222
6.3.1 即插即用——容器运行环境 222
6.3.2 部署和管理容器集群——Kubemetes集群构建 224
6.3.3 注入应用——在交付部署环境中使用容器工具 233
6.4 让一切动起来——持续集成交付部署 245
6.4.1 整体流程的自动化 245
6.4.2 Redmine流程信息自动化查询与更新 247
6.4.3 Jenkins+Redmine集成 250
6.4.4 Jenkins+Ansible集成 250
6.5 小结 250
第7章 对一切了如指掌——应用性能监测 251
7.1 应用性能管理概述 251
7.1.1 应用性能管理过程 251
7.1.2 产品生命周期中的应用性能管理 252
7.2 深入应用性能监测 253
7.2.1 根据性能数据类型探索性能监测 253
7.2.2 覆盖端到端的性能监测维度 254
7.2.3 服务器性能数据监测分类 255
7.3 使用InfluxDB管理应用性能数据 260
7.3.1 时间序列数据库的结构和原理介绍 260
7.3.2 InfluxDB数据库管理 261
7.3.3 应用性能数据表操作 268
7.4 小结 277
第8章 新的开始——拥抱机器学习与人工智能的明天 279
8.1 人工智能的新课题——AIOps 279
8.1.1 AIOps的诞生 279
8.1.2 AIOps的现状 282
8.2 AIOps的应用场景和典型案例 283
8.3 AIOps的未来展望 289
附录A 公有云提供商的相关服务列表 290
附录A-1 使用阿里云实现敏捷运维管理的相关服务 290
附录A-2 使用亚马逊云实现敏捷运维管理的相关服务 291
附录A-3 使用Azure实现敏捷运维管理的相关服务 292
附录A-4 使用Google云实现敏捷运维管理的相关服务 293
附录B 云服务测评指标体系(CMI) 295