新書推薦:
《
骨科康复学(第2版)
》
售價:NT$
1140.0
《
笔记启蒙 : 英国皇家学会与科学革命
》
售價:NT$
390.0
《
汉语副词研究论集(第六辑)
》
售價:NT$
490.0
《
镶嵌之美:古希腊罗马的马赛克艺术
》
售價:NT$
1390.0
《
后希腊化哲学:从斯多亚学派到奥利金的发展研究
》
售價:NT$
349.0
《
别纠结啦:不被情绪牵着走的通透生活指南(“当代一休”小池龙之介治愈新作!附赠精美书签!)
》
售價:NT$
295.0
《
第二人生:找到重新定义人生的智慧
》
售價:NT$
440.0
《
唐朝三百年
》
售價:NT$
490.0
|
內容簡介: |
本书从软件架构师视角讲解了引入DevOps实践所需要掌握的技术能力,涵盖了运维、部署流水线、监控、安全与审计以及质量关注。通过3个经典案例研究,讲解了在不同场景下应用DevOps实践的方法。这对于想应用DevOps实践的组织具有切实的指导意义。
|
目錄:
|
目录
译者序
前言
第一部分 背景
第1章 DevOps是什么 2
1.1 概述 2
1.1.1 定义DevOps 2
1.1.2 DevOps实践 3
1.1.3 持续部署的例子:IMVU 5
1.2 为什么是DevOps 5
1.2.1 发布过程 5
1.2.2 配合不佳的原因 7
1.2.3 运维人员能力有限 7
1.3 DevOps视角 8
1.3.1 自动化 8
1.3.2 开发团队的职责 9
1.4 DevOps与敏捷 9
1.5 团队结构 10
1.5.1 团队规模 10
1.5.2 团队角色 10
1.6 协作 13
1.6.1 协作的形式 13
1.6.2 团队协作 14
1.6.3 跨团队协作 14
1.7 障碍 15
1.7.1 文化及组织类型 15
1.7.2 部门类型 16
1.7.3 筒仓思维方式(Silo Mentality) 17
1.7.4 工具支持 17
1.7.5 人员问题 17
1.8 小结 18
1.9 更多阅读材料 18
第2章 云即平台 20
2.1 概述 20
2.2 云的特性 21
2.2.1 虚拟化 22
2.2.2 IP和域名系统管理 23
2.2.3 平台即服务 25
2.2.4 分布式环境 25
2.3 独特的云特性对DevOps的影响 30
2.3.1 环境 30
2.3.2 轻松创建虚拟机 31
2.3.3 数据考量 31
2.4 小结 32
2.5 更多阅读材料 33
第3章 运维 34
3.1 概述 34
3.2 运维服务 34
3.2.1 供给硬件 34
3.2.2 供给软件 35
3.2.3 IT功能 36
3.2.4 服务级别协议 36
3.2.5 容量规划 36
3.2.6 业务连续性和安全 37
3.2.7 服务策略 38
3.2.8 服务设计 39
3.2.9 服务移交 39
3.2.10 服务运维 40
3.2.11 服务运维概念 40
3.3 服务运维功能 41
3.4 持续服务改进 42
3.5 运维和DevOps 43
3.6 小结 44
3.7 更多阅读材料 44
第二部分 部署流水线
第4章 整体架构 48
4.1 DevOps实践是否需要架构调整 48
4.2 架构结构总览 49
4.2.1 协作模式 50
4.2.2 资源管理 51
4.2.3 架构元素之间的映射 52
4.3 微服务架构的质量 52
4.3.1 可靠性 53
4.3.2 可修改性 54
4.4 团队的亚马逊规则 55
4.5 现有系统的微服务方案 56
4.6 小结 56
4.7 更多阅读材料 57
第5章 构建与测试 58
5.1 概述 58
5.2 在部署流水线中移动系统 59
5.2.1 可追溯性 59
5.2.2 环境 60
5.3 横切关注点 61
5.4 开发及提交前测试 63
5.4.1 版本控制与分支 63
5.4.2 功能开关 65
5.4.3 配置参数 66
5.4.4 在开发和提交前测试中的测试 67
5.5 构建与集成测试 67
5.5.1 构建脚本 67
5.5.2 打包 68
5.5.3 持续集成与构建状态 69
5.5.4 集成测试 70
5.6 用户验收测试预发布性能测试 70
5.7 生产环境 71
5.7.1 早期发布测试 71
5.7.2 错误检测 72
5.7.3 现场测试 72
5.8 事件 73
5.9 小结 73
5.10 更多阅读材料 74
第6章 部署 75
6.1 概述 75
6.2 部署管理的策略 76
6.2.1 蓝绿部署 76
6.2.2 滚动升级 77
6.3 逻辑一致性 78
6.3.1 相同服务的多个版本同时存在 78
6.3.2 兼容数据库中保存的数据 81
6.4 打包 82
6.5 多环境部署 84
6.6 部分部署 86
6.6.1 金丝雀测试 86
6.6.2 AB测试 87
6.7 回滚 87
6.8 工具 89
6.9 小结 90
6.10 更多阅读材料 90
第三部分 横切关注点
第7章 监控 94
7.1 概述 94
7.2 监控什么 95
7.2.1 故障检测 96
7.2.2 性能下降检测 96
7.2.3 容量规划 97
7.2.4 用户交互 98
7.2.5 入侵检测 99
7.3 如何监控 99
7.3.1 基于代理的监控和无代理的监控 101
7.3.2 监控运维活动 102
7.3.3 收集和存储 102
7.4 什么时候变更监控配置 103
7.5 解释监控数据 103
7.5.1 日志 104
7.5.2 绘图和展示 105
7.5.3 警报和警告 105
7.5.4 诊断和反应 106
7.5.5 监控DevOps过程 106
7.6 挑战 107
7.6.1 挑战1:持续变更下的监控 107
7.6.2 挑战2:自下向上与自上向下和在云中的监控 108
7.6.3 挑战3:监控微服务架构 109
7.6.4 挑战4:处理大容量的分布式(日志)数据 109
7.7 工具 109
7.8 从监控数据中诊断出异常——Platformer.com的案例 110
7.8.1 背景 111
7.8.2 数据收集 112
7.8.3 检测异常 112
7.8.4 思考 113
7.9 小结 113
7.10 更多阅读材料 114
第8章 安全与安全审计 115
8.1 安全是什么 115
8.2 威胁 117
8.3 需要保护的资源 118
8.4 安全角色和活动 120
8.5 身份管理 122
8.5.1 认证 123
8.5.2 授权 125
8.6 访问控制 126
8.6.1 阻止访问 127
8.6.2 谁负责预防控制 129
8.7 检测、审计和拒绝服务 129
8.8 开发 130
8.9 审计者 130
8.10 应用设计考虑 131
8.11 部署流水线设计考虑 132
8.12 小结 133
8.13 更多阅读材料 134
第9章 其他非功能需求 135
9.1 概述 135
9.
|
內容試閱:
|
前言多年以来,我们一直在探索研究运维中的问题。自然而然地,我们也一直在追踪DevOps运动。它正在沿着Gartner成熟度曲线向上发展。这种现象有着坚实的业务原因。我们能够找到从信息技术经理视角对DevOps的探讨(例如小说《凤凰项目:一个IT运维的传奇故事》),也能找到从项目经理视角对DevOps的探讨(例如《持续交付:发布可靠软件的系统方法》)。而且,关于文化变革和文化变革对于打破组织单元之间障碍的意义,也有大量的资料。
然而,令我们感到失望的是,鲜有从软件架构师角度对DevOps探讨的资料。把运维人员视为首要干系人并且聆听他们的需求当然是非常重要的。使用工具来支持运维和项目管理也是非常重要的。然而,我们强烈感觉到,DevOps并不仅仅是关于干系人管理和工具使用的。
事实上,正是因为目前缺少这方面的资料,所以我们才决定撰写本书,把这些缺失的内容填充起来。DevOps与设计、过程、工具化和组织结构之间的相互作用令人着迷。我们试图回答两个主要问题:作为软件架构师,我需要做出什么样的技术决策才能够实现DevOps目标?DevOps领域的其他参与者会对我产生什么样的影响?以上这些问题的答案是,实现DevOps目标可能包含着对你的系统架构和角色以及责任做出重大变更,在把系统部署到生产环境以及在生产环境中支持这些系统时,需要以上角色及责任。
正如软件架构师必须理解他们所设计与构建的系统的业务情境和目标一样,理解DevOps也要理解组织和业务情境,同时也要理解技术和运维情境。我们探索了所有这些内容。
本书的主要读者是那些曾经被问过或者将被问到“这个项目或者组织是否应该采用DevOps实践”这个问题的执业软件架构师。甚至他们不是被追问这个问题,而是他们有可能被告知是否应该采用DevOps实践。与所有书一样,我们期望还有其他类型的读者。那些有兴趣学习更多关于软件架构实践的学生应该可以在本书中找到一些感兴趣的资料。那些想探索研究DevOps课题的研究人员可以在本书中找到重要的背景资料。然而,我们的主要读者还是那些执业软件架构师。
概述在本书的开始,我们讨论了DevOps的背景。在第一部分中,我们研究了DevOps的目标以及期望使用DevOps来解决的问题。我们会涉及组织和文化问题,也会涉及DevOps实践和敏捷方法学的关系。
在第2章中,我们研究了云。随着云即平台(Cloud as a Platform)的增长,DevOps实践也得到了发展。理论上,DevOps和云即平台是可分开的,但是事实上,虚拟化和云是推动DevOps实践的重要力量。
在介绍背景知识的最后一章(第3章)中,我们按照信息技术基础设施库(Information Technology Infrastructure Library,ITIL)的理论研究了运维。ITIL是对运维组的最重要功能进行组织的体系。不是所有的运维工作都包含在DevOps实践中,但是理解运维组的职责却会提供重要的上下文信息,特别是当需要理解角色和职责时。
第二部分描述了部署流水线(Deployment Pipeline)。在这一部分中,我们首先探索了微服务架构风格,这出现在第4章中。为了应用DevOps实践而以微服务风格进行系统架构并不是必需的,但是,却能用微服务架构风格来解决DevOps所需要解决的一些问题。
在第5章中,我们简略介绍了构建和测试过程以及工具链。理解这些内容很重要,但它们不是我们的焦点。我们介绍了把系统部署到生产环境所关联的各种不同环境以及在这些环境上执行的不同类型的测试。因为在DevOps中用到的很多工具也在构建和测试过程中被用到了,所以我们提供了理解这些工具和如何控制它们的上下文信息。
我们以讨论部署结束第二部分。DevOps的目标之一是加速部署。实现这个目标的一种技术是,使得每个开发团队可以在完成准备后独立地部署他们的代码。独立部署带来了很多一致性的问题。我们将讨论不同的部署模型;管理同时运行在生产环境中不同版本的系统;在发生错误时回滚;以及与实际把系统部署到生产环境中有关的其他主题。
第二部分提供了从功能视角观察部署实践的内容。然而,与其他任何系统一样,质量视角常常是控制系统设计和系统接受度的主要因素。在第三部分中,我们聚焦在横切关注点上。我们首先在第7章中讨论了监控和现场测试(live testing)。现代软件测试实践在将系统部署到生产环境中以后并没有结束。首先,系统被广泛地监控以检测问题;其次,在将系统部署到生产环境以后,测试正以各种形式继续进行。
另一个横切关注点是安全。我们在第8章中讨论了该内容。我们展示了环境中各种不同类型的安全控制,包括组织范围和特定系统范围的安全控制。我们讨论了与实现安全相关联的不同角色以及在安全审计案例中如何评估这些角色。
安全不是质量关注的全部。在第9章中,我们讨论了与DevOps实践有关的其他方面的质量。我们讨论的主题包括部署流水线的性能、可靠性和可修改性。
第三部分的最后,我们在第10章中讨论了业务关注。像DevOps这种涉及面广泛的实践,如果得不到来自管理层的支持,是无法被采用的。业务计划是寻求这种支持的一种典型方法。因此,我们描述了为引进DevOps所需要准备的
|
|