首页>参考读物>计算机科学与技术>综合

云原生落地:企业级DevOps实践
作者 : 应阔浩 李建宇 付天时 赵耀 著
出版日期 : 2022-08-05
ISBN : 978-7-111-71045-5
定价 : 109.00元
扩展资源下载
扩展信息
语种 : 简体中文
页数 : 400
开本 : 16
原书名 :
原出版社:
属性分类: 店面
包含CD : 无CD
绝版 : 未绝版
图书简介

内容简介
这是一本指导企业如何向云原生架构转型的实战性著作。
经过2年多的改造,自如的技术架构成功实现向云原生架构转型,大幅度提高了服务稳定性和开发效率,同时降低了运维成本,因此自如的云原生实践也成为行业公认的标杆。
自如的核心技术团队在本书中对他们的云原生实践的完整过程进行了深度复盘,详细阐述了云原生架构下Kubernetes的组件选型、企业级PaaS平台开发、CI/CD的Z佳实践、服务网格的平滑落地,并结合实际的案例把云原生实践过程中的思考、得失融入其中,助力企业更优雅地实现云原生架构的落地。
通过阅读本书,你将获得以下知识:
?透彻理解云原生的发展历程与意义;
?了解云原生实践应重点关注哪些方向;
?Kubernetes管理后台、关键组件选型以及定制化开发;
?如何研发自定义的企业级Paas平台;
?如何设计持续集成的环境与分支选型;
?如何打造一个一流的CI/CD平台;
?如何选择流水线工具;
?如何设计企业级的持续部署平台;
?如何为工程师打造NPS高的配套工具;
?如何去通过服务网格解决通用的熔断、限流问题;
?如何运营和推广云原生平台,让它100%落地。

图书特色

自如官方出品,自如董事长兼CEO推荐
自如云原生落地实践是行业公认标杆,自如技术团队深度复盘全过程
企业云原生落地标准参考,涵盖DevOps、Kubernetes、持续集成、
持续部署、服务网格的选型思考与原理分析,提供大量应用案例

图书前言

为什么要写这本书
数年前读吴军老师的《浪潮之巅》,书中写到100多年来,总有一些公司很幸运地、有意识或无意识地站在技术革命的浪尖之上。在这十几年间,它们代表着科技的浪潮,直到下一波浪潮的来临。随着时代的发展,用户的需求在不断改变,技术也在不断地推陈出新。
10年前,云计算的概念被炒得火热,犹记得当时偶遇多年不见的高中同学,问及近期的工作,他说在读研,搞云计算方向,当时我感觉他一定是被导师“忽悠”了—“云计算”太虚无缥缈了,一如今天的“元宇宙”。
质疑阻挡不了技术前进的脚步,新技术对于一些企业来说,往往从最开始的“看不见”,到后来“看不起”,再到“看不懂”,最后终于“跟不上”了。经过10年的演进,无论国外还是国内,云计算的概念已经耳熟能详,上云已经成为许多中小互联网公司的首选。
在“云”这种基础设施平台“摸爬滚打”的10年中, 技术架构也在进行着不断的突破。最开始接触Spring Cloud是在2015年,看Spring官网推出了一套组件,网关、负载均衡、熔断器、定时任务,一套框架全部搞定。这大概就是《增长黑客》中提到“啊哈时刻”。后来公司开始提供多种通用的组件包,Spring Cloud在公司内部逐渐流行。
后来机缘巧合下做一个印度项目,阿里系的技术栈一时间都打了水漂,全都没法用,阿里云在印度也没有节点。为了支持业务,只能闭门造轮子,从开源的ELK取代EagleEye开始入手,重新搭建了一套监控报警体系。为了便于ELK集群的反复快捷构建,不得不去熟悉Dockerf?ile、Compose等新技术。
对于云、以Spring Cloud为代表的微服务、Docker来说,有的工程师可能接触得较晚,而CI/CD对于每一个工程师来说都是一入行便形影不离的体系。犹记得2011年京东的早期发布流程,10个步骤可能有5个步骤都是线下进行的,每次发布都会排队到凌晨,我们今天说的“敏捷”“持续”,在当时看来简直就是神话。直至后来体验了阿里的Aone,我才感受到原来应用发布还可以如此“丝滑”。
对于云原生的实践,完全是来自架构师对新技术的尝试,如同网游中出了新的角色,总想去充值抽卡一样。2018年的自如技术故障连连,发布的问题、环境的问题尤为凸显,因此保障中心最先动手的就是容器化和CI/CD。云当然是第一选择,我们发现当时很多云厂商的云原生配套基本也是在试点阶段,同时Kubernetes已经是众星捧月般的存在了,因此当时的形势造就了自研云原生的落地。
后来的几年间,各大互联网技术会议都少不了云原生相关话题的讨论。自如作为同类型的中型互联网企业,在落地云原生的过程中,有很多共性的问题,于是,我也想把落地过程中的思考、选择、实施路径、走的弯路等一一呈现给大家,期待能够为更多热爱云原生、拥抱新技术的团队提供一些值得借鉴的经验。
读者对象
技术无边界,本书对于广大工程师群体皆适用,尤其适合以下读者阅读。
架构师群体
SRE(Site Reliability Engineer,站点可靠性工程师)或应用运维工程师
想了解容器化转型的运维工程师
想进行开发提效的基础架构工程师
想进行服务网格实践的工程师
DevOps团队
技术负责人、运维负责人、CTO
本书特色
与其他讲解云原生的图书不同,本书会缩减关于云原生理论部分的篇幅,侧重讲解实践。比如:运维侧后台系统如何选择,容器化迁移如何分阶段实施,Kubernetes中的网络模型、存储模型、日志模型如何建设,基于client-go如何做业务功能开发,等等。同时,在开发侧,会给大家呈现建设CI/CD的元数据如何定义,分支模型、环境模型如何统一标准,如何降低研发人员的使用门槛,配套的工具有哪些等内容。
如何阅读本书
本书分为4个部分。
第一部分“云原生基础”(第1~4章) 第1~3章简单介绍了云原生的发展历史、自如技术的发展历程和选择云原生落地的背景。第4章对Docker的核心概念做了简要回顾,没有接触过容器的读者可以阅读此部分,对容器的核心概念做一个宏观了解。
第二部分“云原生落地”(第5~9章) 第5章对Kubernetes的核心概念做了介绍,第6、7章讲解了Kubernetes管理后台以及核心组件如何选择。第8、9章面向企业级的定制开发,对必备的client-go核心组件做了深入剖析。
第三部分“云原生发布平台”(第10~14章) 第10、11章重点对环境、分支等概念做了统一,为后续的CI/CD落地奠定基础。第12、13章分别从持续集成和持续部署两个方面具体介绍云原生架构下的具体实现,比如镜像如何管理、集成工具如何选择、流水线怎么构建、资源如何管理、发布策略如何定义等。第14章介绍一些常用的工具,为整个CI/CD工具锦上添花。
第四部分“云原生迭代”(第15~17章) 第15章侧重讲解平台的推广与运营,第16章对服务网格的落地做了重点展现,比如接入Istio的方法、数据面的配置、限流熔断的实现等内容。第17章是对整本书的总结,重点介绍了在云原生实践过程中的得与失,并提供一些鲜活的案例供读者参考。
勘误和支持
由于作者的水平有限,加之编写时间仓促,书中难免会出现错误或者表述不准确的地方,恳请读者批评指正。
致谢
感谢所有致力于云原生实践的同行,本书的很多实践案例和思路都源于他们的杰出成果。
感谢机械工业出版社华章分社的编辑老师杨福川和韩蕊,他们在这一年多的时间里始终支持我们的写作,鼓励、帮助和引导我们顺利完成书稿写作。
最后感谢在背后支持我们的家人,感谢他们的无声支持!

应阔浩
2022年7月

上架指导

计算机/云原生

封底文字

DevOps Practices in Cloud Native
云原生架构落地过程中,如何从原有云端架构甚至自建机房架构中迁移至云原生,如何实现容器化,如何应对Kubernetes对网络模型、存储模型、日志模型带来的冲击变化等问题,是拥抱云原生的公司都会关注的。对于这些问题,本书给出了答案,非常值得同行借鉴。

—— 沈剑 《架构师之路》作者



快速学习业界最佳实践并在企业中快速落地以提升研发效率,是技术团队(研发团队中技术线)的基本功,相信自如团队的分享能帮助到大家。

—— 乔新亮 彩食鲜CTO


大多数云原生的书都以推广为目的,而自如团队的这本书却是他们全公司两年多技术实践的完整复盘。毫无保留地分享了云原生架构在自如落地的全过程,包括容器化、容器编排、持续交付、服务网格等落地细节和踩过的坑。这是一本真正的攻略!

—— 郭东白 瓜子二手车 CTO


本书不仅对云原生相关的概念和理论做了介绍,还重点分享了云原生在企业落地过程中的实践经验,包含非常多的实操干货,对于企业将云原生理念落地有很大的参考价值。

—— 吴廷鹏 转转CTO



自如技术团队历时两年完成云原生架构落地,积累了丰富的实践经验。本书作者将其间得失汇集成册,对业界很有借鉴意义。

—— 史海峰 公众号“IT民工闲话”维护者

作者简介

应阔浩 李建宇 付天时 赵耀 著:作者简介
应阔浩
自如技术平台负责人,负责自如网基础架构的研发与技术标准的管理。具备10年京东、阿里等一线互联网公司的架构开发与运维经验,是一位实战型的技术管理者。CCF TF工程师文化SIG主席、中商联智库顾问专家、华为云MVP。关注前沿科技,喜欢挑战现状,拥抱新技术并尝试落地到企业实战中,渴望通过技术助力业务增长。
李建宇
自如运维保障中心负责人,在Linux性能调优、虚拟化、微服务架构方面有较深的研究与实战经验。热衷于探索更好的架构方案,推动工程效能与稳定性提升。目前致力于带领团队在云原生领域持续实践,助力企业数字化转型。
付天时
自如运维保障中心SRE负责人、架构师。负责自如网云原生落地、PaaS平台的开发、Service Mesh落地、中间件的治理和维护、自动化运维平台的开发、SLA的保障等工作。热衷于SLA、效能、成本的优化。认为一个合格的SRE需要具备扎实的技术功底,善于在实践中总结出方法论,具备组织与协调各技术部门并推进技术落地的能力。
赵耀
自如基础架构负责人,云平台架构师。有10 余年一线研发经验,擅长分布式系统架构设计。在自如负责持续交付平台、中间件平台以及监控告警体系的构建。对容器、云原生领域有浓厚兴趣,完整参与了自如的云原生落地从 0 到 60 分的过程。

图书目录

赞誉

前言
第一部分 云原生基础
第1章 云原生概述 3
1.1 云原生的概念 3
1.1.1 初识云原生 3
1.1.2 官方的定义 6
1.2 云原生的特性 8
1.3 微服务 14
1.3.1 微服务与单体架构的区别 14
1.3.2 什么是微服务 14
1.3.3 微服务架构的优点 15
1.4 容器化 16
1.4.1 虚拟化与容器化的区别 16
1.4.2 容器化的核心原理 18
1.4.3 Docker的优点 20
1.5 编排 21
1.5.1 为什么要有编排 21
1.5.2 什么是编排 22
1.5.3 编排的优点 22
1.6 CI/CD 23
1.6.1 CI/CD诞生的背景 23
1.6.2 什么是CI/CD 23
1.6.3 CI/CD的优点 25
1.7 服务网格 26
1.7.1 服务网格诞生的背景 26
1.7.2 什么是服务网格 27
1.7.3 服务网格的优点 28
1.8 不可变基础设施和声明式API 28
1.8.1 什么是不可变基础设施 28
1.8.2 可变与不可变基础设施之间的差异 30
1.8.3 不可变基础设施的优点 30
1.9 本章小结 31
第2章 自如架构演进 32
2.1 技术架构的演进 32
2.1.1 架构的定义与分类 33
2.1.2 单体架构 34
2.1.3 分布式架构 35
2.1.4 微服务架构 36
2.1.5 中台架构 37
2.2 自如的技术发展史 39
2.2.1 业务背景介绍 39
2.2.2 自如的技术演进过程 40
2.2.3 当前技术架构 40
2.3 自如技术架构遇到的问题 41
2.3.1 稳定性问题 42
2.3.2 研发效率问题 43
2.3.3 流程体系问题 43
2.4 本章小结 45
第3章 开启云原生之路 46
3.1 制定云原生战略 46
3.1.1 行业趋势分析 46
3.1.2 战略方向分析 47
3.2 建设DevOps体系 50
3.2.1 DevOps体系的发展方向 50
3.2.2 开发能力差距分析 51
3.2.3 建设DevOps体系的路线图 54
3.3 从KVM迁移到Docker 55
3.3.1 现状分析 55
3.3.2 按环境迁移 57
3.3.3 按业务线迁移 58
3.4 本章小结 58
第4章 Docker的基础知识与核心原理 59
4.1 容器与Docker 59
4.1.1 虚拟化技术 60
4.1.2 容器技术 60
4.1.3 Docker架构 61
4.1.4 Docker安装与命令 62
4.1.5 Docker常用命令 63
4.2 镜像管理 64
4.2.1 什么是镜像 64
4.2.2 镜像仓库服务 64
4.2.3 镜像的创建与操作 65
4.2.4 Dockerf?ile 65
4.3 Docker网络管理 67
4.4 容器核心原理 68
4.4.1 Namespace资源隔离 68
4.4.2 Cgroups资源限制 69
4.4.3 联合文件系统 69
4.4.4 runC 70
4.5 本章小结 72
第二部分 云原生落地
第5章 Kubernetes基础知识 75
5.1 初识Kubernetes 75
5.1.1 Kubernetes架构 76
5.1.2 Kubernetes核心概念 76
5.1.3 Kubernetes设计理念 78
5.2 Kubernetes资源对象 79
5.2.1 Pod 79
5.2.2 集群资源管理 80
5.2.3 控制器 80
5.2.4 Service 81
5.3 Kubernetes网络体系 82
5.3.1 Kubernetes网络模型 83
5.3.2 Kubernetes网络的主要实现方案 83
5.3.3 Kubernetes网络中Pod的通信 84
5.4 存储体系 84
5.4.1 ETCD 84
5.4.2 Conf?igMap 86
5.4.3 Volume 86
5.4.4 Persistent Volume 86
5.4.5 Storage Class 87
5.5 命令工具 87
5.5.1 集群管理 88
5.5.2 集群维护 88
5.6 生产级高可用Kubernetes集群方案 89
5.6.1 Kubernetes部署方案 89
5.6.2 Kubernetes部署架构 90
5.6.3 Kubernetes多集群部署架构 92
5.7 本章小结 93
第6章 运维管理后台方案选型 94
6.1 Wayne 95
6.2 Rancher 96
6.3 常用公有云 97
6.3.1 阿里云 97
6.3.2 腾讯云 98
6.3.3 华为云 98
6.4 运维管理方案对比 99
6.5 本章小结 100
第7章 云原生基础组件选型 101
7.1 持久化存储方案 102
7.1.1 存储的选型 102
7.1.2 Ceph在Kubernetes中的使用 104
7.2 镜像管理 107
7.2.1 高可用镜像方案 108
7.2.2 镜像清理策略 111
7.3 Ingress实战 112
7.3.1 什么是Ingress-nginx 113
7.3.2 多集群多机房高可用负载均衡架构设计 115
7.4 日志采集和展示 117
7.4.1 云原生下日志采集的3种方式 117
7.4.2 日志采集设计思路 118
7.4.3 日志效果展示 120
7.4.4 注意事项和思考 122
7.5 监控告警 123
7.5.1 Prometheus Operator 123
7.5.2 告警系统的存储选型 125
7.6 网络方案 126
7.6.1 Flannel网络 127
7.6.2 Calico网络 129
7.6.3 直接路由 129
7.6.4 网络方案对比 130
7.6.5 直接路由方案落地实践 131
7.7 本章小结 133
第8章 Kubernetes开发实战 134
8.1 初识client-go 134
8.1.1 client-go客户端对象 135
8.1.2 KubeConf?ig集群配置 136
8.2 client-go核心组件Informer 137
8.2.1 Informer介绍 138
8.2.2 Informer的架构设计 138
8.2.3 面向用户的Informer资源 140
8.2.4 Ref?lector 142
8.2.5 DeltaFIFO 148
8.2.6 Indexer 152
8.2.7 WorkQueue 154
8.2.8 EventBroadcaster 156
8.2.9 大管家Controller 157
8.3 client-go实战开发 158
8.3.1 连接Kubernetes集群 158
8.3.2 对Kubernetes资源对象进行增删改查 162
8.3.3 并发控制 165
8.4 本章小结 166
第9章 使用client-go构建企业级PaaS平台 167
9.1 PaaS平台常用功能实战 167
9.1.1 申请应用的资源 167
9.1.2 应用活性检测策略 169
9.1.3 展示应用容器状态 170
9.1.4 离线故障应用容器 171
9.1.5 重启应用容器 172
9.2 PaaS平台进阶功能实战 172
9.2.1 容器Web终端 173
9.2.2 发布完成通知 180
9.3 PaaS平台企业级发布功能开发实战 182
9.3.1 灰度发布 182
9.3.2 云原生下金丝雀发布的实现原理 184
9.3.3 最佳实践 185
9.3.4 Kubernetes Operator预热基础概念 187
9.3.5 开发一个生产级金丝雀Operator 190
9.4 本章小结 212
第三部分 云原生发布平台
第10章 元数据管理 215
10.1 应用管理 216
10.2 环境管理 218
10.2.1 开发环境和临时环境 219
10.2.2 测试环境与稳定环境 220
10.2.3 日常环境 221
10.2.4 预发环境 222
10.2.5 生产环境和Beta环境 222
10.2.6 环境的后台实现 223
10.3 资源管理 224
10.4 配置管理 226
10.4.1 配置文件管理 226
10.4.2 配置中心 227
10.5 本章小结 228
第11章 分支管理 229
11.1 分支模型的选择 229
11.1.1 Gitf?low 229
11.1.2 主干开发模型 232
11.1.3 Aone Flow 233
11.2 实践Aone Flow的准备工作 236
11.2.1 分支命名规范 236
11.2.2 特性分支 236
11.2.3 与GitLab集成 238
11.3 Aone Flow的实践 240
11.3.1 创建第一个特性分支 240
11.3.2 解决单一代码库分支复用问题 240
11.3.3 创建发布分支 241
11.3.4 合并到发布分支 242
11.3.5 分支冲突与解决 243
11.3.6 分支上线 245
11.4 本章小结 245
第12章 持续集成 246
12.1 从源码到镜像 246
12.1.1 手动构建应用镜像 246
12.1.2 通过Maven插件生成Dockerf?ile 247
12.1.3 多阶段构建 247
12.1.4 标准化构建流程 249
12.1.5 构建声明式镜像 253
12.2 CI工具选型 255
12.2.1 Jenkins还是GitLab CI 255
12.2.2 GitLab Runner的安装与配置 256
12.2.3 应用.gitlab-ci.yml初始化 257
12.3 流水线 259
12.3.1 如何定义流水线 259
12.3.2 发布流水线 262
12.3.3 为什么不支持完全自定义编排 264
12.4 本章小结 265
第13章 持续部署 266
13.1 Kubernetes资源管理 266
13.1.1 Namespace与集群规划 267
13.1.2 集群拆分 268
13.1.3 Kubernetes资源管理 270
13.2 发布策略 278
13.2.1 填写部署单 278
13.2.2 金丝雀发布 279
13.2.3 分批发布 282
13.3 优雅发布 282
13.3.1 容器探针 282
13.3.2 摘除容器流量 283
13.4 回滚 286
13.5 本章小结 287
第14章 配套工具 288
14.1 研发工具集成 288
14.1.1 集成Arthas 288
14.1.2 Pinpoint链路追踪 289
14.1.3 Apollo配置中心集成 290
14.2 特性环境 291
14.2.1 环境治理 292
14.2.2 环境申请 293
14.2.3 流量隔离 293
14.3 数据驱动优化 304
14.3.1 找到黄金指标 305
14.3.2 仪表盘 306
14.4 本章小结 311
第四部分 云原生迭代
第15章 从试运行到100%覆盖 315
15.1 从0开始 315
15.1.1 内部试点 315
15.1.2 OS与Omega并存阶段 316
15.2 从1%到10% 317
15.2.1 外部宣导:寻找早期用户 317
15.2.2 横向运营:覆盖新增应用 317
15.2.3 纵向运营:覆盖某业务线 317
15.3 从10%到90% 317
15.3.1 OKR管理 318
15.3.2 迭代优化 318
15.4 从90%到100% 319
15.5 本章小结 320
第16章 基于Istio的Service Mesh 321
16.1 Service Mesh 321
16.1.1 微服务带来的挑战 321
16.1.2 微服务治理的3种方式 323
16.1.3 初步了解Istio 325
16.1.4 Istio提供的三大能力 327
16.2 开始接入Istio:精准拦截服务的流量 328
16.2.1 我只想治理HTTP的流量 329
16.2.2 Inbound和Outbound 329
16.2.3 设置流量的拦截策略 331
16.2.4 iptables策略的创建流程和源码分析 333
16.2.5 精准拦截HTTP流量 337
16.3 数据面的配置管理 338
16.3.1 Sidecar注入原理 338
16.3.2 管理Envoy代理日志 341
16.3.3 定义容器的启动顺序 343
16.3.4 注入iptables管理容器 346
16.4 HTTP的流量治理实践 350
16.4.1 Istio的数据面Envoy 350
16.4.2 限速 352
16.4.3 限流和熔断 358
16.4.4 平台效果展示 367
16.5 经验分享和总结 369
16.6 本章小结 370
第17章 云原生的得与失 371
17.1 云原生落地的收益 371
17.1.1 降本 371
17.1.2 增效 373
17.1.3 标准化 374
17.1.4 组织能力提升 375
17.2 经验和教训 375
17.2.1 成功经验 375
17.2.2 运维侧的教训 376
17.2.3 开发侧的教训 379
17.2.4 QA集锦 382
17.3 展望 384
17.3.1 资源调度 384
17.3.2 HPA 384
17.3.3 冷热部署 385
17.4 本章小结 386

教学资源推荐
作者: 教育部高等学校计算机类专业教学指导委员会 智能时代计算机专业系统能力培养研究组 编制
作者: 窦万峰
作者: [美] 罗伯特·H. 沙姆韦(Robert H. Shumway),戴维·S. 斯托弗(David S. Stoffer)著
作者: [德] 史蒂文·S. 斯基纳(Steven S.Skiena) 著
参考读物推荐