新書推薦:
《
人才基因(凝聚30年人才培育经验与智慧)
》
售價:HK$
103.4
《
深度学习详解
》
售價:HK$
114.8
《
李白传(20世纪文史学家李长之经典传记)
》
售價:HK$
45.8
《
津轻:日本无赖派文学代表太宰治自传性随笔集
》
售價:HK$
66.7
《
河流之齿
》
售價:HK$
59.8
《
新经济史革命:计量学派与新制度学派
》
售價:HK$
89.7
《
盗墓笔记之秦岭神树4
》
售價:HK$
57.3
《
战胜人格障碍
》
售價:HK$
66.7
|
編輯推薦: |
系统讲解DevOps涉及的各方面基础知识的图书。获奖图书《软件构架实践》作者林·巴斯的最新作品。
|
內容簡介: |
随着云服务、虚拟机、微服务的发展和普及,现在的软件开发任务对程序员的要求越来越高,除了会写代码,懂业务规则,程序员还必须清楚自己的代码是如何部署到云端或虚拟机上的,以及如何借助微服务缩短发布周期,提高部署效率。换句话说,现在的程序员必须掌握一定的DevOps知识。本书是全面系统地讲解了现代软件开发涉及的部署与运维基础知识(包括虚拟化、云、容器、平台安全、微服务、系统配置、布署流水线、灾难恢复等)、流程、常用工具,帮助读者快速胜任软件开发工作。
|
關於作者: |
林·巴斯,澳大利亚国家信息通信技术研究院(NICTA)的高级主任研究员。在此之前,他在卡内基·梅隆大学软件工程研究所(SEI)工作了二十五年。著有获奖图书《软件构架实践》。
|
目錄:
|
译序 III
前言 VII
部分 概述 1
第1章 虚拟化 4
1.1共享与隔离 5
1.2 虚拟机 9
1.3 虚拟机镜像 13
1.4 容器 15
1.5 总结 18
1.6 练习 18
1.7 讨论 19
第2章 网络 20
2.1 简介 20
2.2 IP地址 23
2.2.1 分配IP地址 24
2.2.2 消息传递 27
2.2.3 互联网协议 28
2.3 DNS 32
2.3.1 主机名结构 33
2.3.2 存活时间 34
2.3.3 使用DNS来处理过载和故障问题 35
2.4 端口 36
2.5 TCP 38
2.6 IP子网 40
2.6.1 搭建结构化网络 41
2.6.2 隧道 44
2.7 虚拟机和容器网络 45
2.8 总结 48
2.9 练习 49
2.10 讨论 49
第3章 云 51
3.1 结构 52
3.2 云故障 58
3.3 扩展服务容量及可用性 60
3.3.1 负载均衡器是如何工作的 61
3.3.2 检测和管理服务实例故障 63
3.3.3 状态管理 66
3.4 分布式协同 70
3.4.1 分布式系统中的时间协同 70
3.4.2 通过网络实现时间同步 71
3.4.3 数据 72
3.5 弹性伸缩 76
3.6 总结 80
3.7 练习 81
3.8 讨论 81
第4章 容器管理 83
4.1 容器和虚拟机 84
4.2 容器的可移植性 86
4.3 容器镜像仓库 86
4.4 容器集群 87
4.4.1 集群编排 90
4.4.2 容器伸缩 91
4.5 无服务器架构 92
4.6 容器技术的发展 94
4.7 总结 95
4.8 练习 96
4.9 讨论 96
第5章 基础设施的安全性 97
5.1 安全工作的分类 98
5.2 防护:密码学 99
5.3 防护:密钥交换 103
5.4 防护:认证 105
5.5 防护:公钥基础设施和证书 108
5.6 防护:传输层安全性 109
5.7 防护:安全的Shell 112
5.8 防护:安全文件传输 114
5.9 检测:入侵检测 115
5.10 总结 117
5.11 练习 117
5.12 讨论 118
第二部分介绍 119
第6章 微服务 122
6.1 微服务架构的定义 124
6.2 微服务和团队 126
6.3 微服务质量 127
6.3.1 可用性 128
6.3.2 版本兼容性 130
6.3.3 可维护性 132
6.3.4 性能 133
6.3.5 可重用性 135
6.3.6 可伸缩性 137
6.3.7 安全性 138
6.4 服务等级目标 140
6.5 微服务环境 141
6.5.1 微服务发现 142
6.5.2 在分布式系统中发出请求 143
6.5.3 结构化请求和响应数据 147
6.5.4 服务网格 150
6.5.5 微服务和容器 153
6.5.6 为部署而设计 154
6.5.7 预防故障 155
6.6 总结 156
6.7 练习 157
6.8 讨论 158
第7章 管理系统配置 158
7.1 版本控制 160
7.2 配置管理工具 163
7.3 配置参数 167
7.4 管理机密 169
7.5 总结 171
7.6 练习 172
7.7 讨论 172
第8章 部署流水线 172
8.1 部署流水线概览 174
8.2 环境 176
8.2.1 环境的要求 177
8.2.2 环境的生命周期 180
8.2.3 环境生命周期管理的权衡 182
8.2.4 不同类型的部署流水线和环境 183
8.3 开发环境 184
8.3.1 构建 184
8.3.2 测试 185
8.3.3 制品 186
8.3.4 发布 186
8.3.5 销毁 186
8.4 集成环境 187
8.4.1 构建 188
8.4.2 测试 188
8.4.3 制品 189
8.4.4 发布 190
8.4.5 销毁 190
8.5 预发环境 190
8.5.1 构建 191
8.5.2 测试 191
8.5.3 部署到生产环境 195
8.5.4 销毁 196
8.6 部署策略 196
8.6.1 全量部署策略 198
8.6.2 灰度发布 204
8.6.3 回滚 205
8.7 总结 206
8.8 练习 207
8.9 讨论 208
第9章 发布以后 209
9.1 谁开发,谁运维 210
9.2 日志 211
指标 216
9.3 隔离/定位问题 219
9.4 生产环境测试 220
9.5 给安全漏洞打补丁 222
9.6 总结 223
9.7 练习 224
9.8 讨论 224
第10章 灾难恢复 225
10.1 灾难恢复计划 226
10.1.1 RPO和RTO 227
10.1.2 应用优先级 228
10.1.3 数据中心 229
10.2 2~4级应用程序的数据管理策略 233
10.3 1级应用程序数据管理 235
10.4 大数据 237
10.5 备份数据中心的软件 237
10.5.1 2~4级应用程序 238
10.5.2 1级应用程序 239
10.5.3 其他数据和软件 239
10.6 故障转移 240
10.6.1 手动故障转移 240
10.6.2 自动化故障转移 241
10.6.3 测试故障转移过程 242
10.7 总结 243
10.8 练习 244
10.9 讨论 244
第11章 安全开发 245
11.1 识别并保护重要数据和资源 246
11.2 管理访问服务的凭据 250
11.3 管理个人凭据 254
11.4 软件供应链和软件保障 256
11.5 缺陷和漏洞 258
11.6 安全漏洞的发现和打补丁修复 261
11.7 总结 263
11.8 练习 264
11.9 讨论 264
第12章 写在后 265
12.1 部署和运维的重要性 265
12.2 衡量DevOps的有效性 267
12.3 站点可靠性工程 269
12.4 移动和IoT设备 271
12.5 颠覆性技术 272
|
內容試閱:
|
近年来,IT行业的发展极大地扩展了软件工程师的职责范围,也对从业人员提出了更高的技能要求。目前广泛应用的云计算就是发展趋势之一。软件工程师除了要熟悉硬件和操作系统的虚拟化、理解网络是如何工作的外,还要处理可扩展性和负载均衡的问题。 云计算极大地缩短了软件的发布周期。每个季度发布一次已经满足不了业务的需求,按月、按周、按天,甚至按小时发布已越来越普遍。越来越短的发布周期是由多种技术支撑的,包括微服务、流水线、容器的使用等。当然,云计算也依赖架构设计和对工具的合理使用。 如今的软件工程师不仅要负责系统的创建、部署和运行,他们还要理解云架构下的运维概念,包括业务连续性和故障处理。他们必须懂得处理日志、监控、警报等问题。 软件工程师通常在工作中学习这些新知识。他们需要阅读海量的博客、教程、文档,耗费大量的精力。有些企业会为新员工提供这方面的培训,但是培训内容往往是企业自己使用的工具和流程,这些工具和流程大多不具有通用性。 本书的目标读者是软件工程师(以及潜在的软件工程师)、计算机科学专业和软件工程专业的本科生及研究生,内容覆盖上述现代软件工程师的工作职责和技能。 本书也适合相关教师使用。全书各章都会讲解理论知识并提供配套的实践练习,同时还设置了议题供课堂分组讨论,以便学生更好地理解章节内容。本书模块化的编排方式也适合读者挑选自己感兴趣的章节阅读。 本书的编写目的是为现代软件工程师提供编程语言和三层体系架构之外的工作技能。全书覆盖六大主题:云和虚拟化、分布式系统和网络、微服务架构、部署、安全、运维(包含业务连续性和监控)。读者读完本书后不一定能成为这些领域的专家,但是至少能对这些领域有足够的理解,足以为日后的高效工作打下基础。
|
|