|
迁移到微服务与DevOps,改变软件开发效能!
一如既往,技术行业正处于巨大的转变之中,物联网、软件定义网络以及软件即服务(SaaS)仅为其中几例。由于这些创新,对能够改进应用开发和部署过程的平台和架构的需求很大。各种规模的公司现在都需要能够简化应用更新过程的框架和架构,以便让最新版本更频繁地推向市场而不会给开发和部署团队增加过多负担。
像许多类似的转变仍在早期,这个领域的许多技术和框架来了又走。然而,屹立不倒的赢家仍在持续不断地改善整个世界的软件,让软件的开发者——我们——能够 比以往更敏捷地创建新应用和更新现有应用。在我看来,微服务和容器就是赢家,这两个热门话题都具有持久性。与单体方法这种最常用的开发与部署应用的方式相经,微服务简化了这些流程,特别是那些需要多个团队而且代码持续增加的大型项目,在这种情况下,即便是代码中的小改动也可能造成严重的延期。微服务通过将敏捷性和伸缩性整合到应用开发和部署中来处理当今的大型代码,所有这些都在一个已证明的范型中。
通过系统性地构建案例来阐述为什么CTO或工程团队的主管应该(或不应该)迁移到微服务的书却不多。市场上有明显的空白。作者对这个主题掌握得越多,越忍不住想:“为什么我不能成为填补这个空白的人呢?”很快,作者开始为自己的书集思方益。于是就有这本:《微服务与容器》。
物联网(IoT)、软件定义网络(SDN)和软件即服务(SaaS)等创新改变了科技行业的游戏规则,当前对能够提升应用开发和部署过程的平台和架构的需求急速增长。
本书作者长期担任系统架构和工程团队的领导者,他在本书中分析了两个最热的新技术趋势——微服务和容器。正如作者所展示的,微服务和Docker容器能够为应用开发和部署带来前所未有的敏捷性和伸缩性,特别是在速度是关键而小错误可能带来灾难性后果的复杂的大型项目中。
为了便于读者学习如何利用微服务和Docker 来驱动模块化架构设计、按需扩展、应用性能和可靠性、上市时间、代码复用以及DevOps 效能的指数级提升,作者不但提供了从单体架构迁移的详细指导和完整路线图,而且提供了一个带领读者了解企业级SOA 系统迁移的深入的案例研究。
本书对软件架构师/开发者、希望继续坚持使用旧方法的系统专业人员以及尝试最大化这些技术的业务价值的管理者,都是很宝贵的参考资料。
理解微服务如何能够让使用者将应用组织到易于管理、更新和扩展的独立组件中。 决定微服务和容器是否值得投入并管理与它们相关的组织学习曲线。 应用微服务之间进程间通信的最佳实践。 以有序的方式迁移单体系统。 理解Docker 容器,了解Docker的安装和Docker接口。 网络、编排和有效地管理Docker容器。 使用Docker最大化基于微服务的应用的扩展性。 通过深入、动手的案例研究来应用所学。
目录:
第一部分 微服务 免费
第1章 微服务概览 免费第2章 转换到微服务第3章 进程间通信第4章 微服务的迁移与实现
第二部分 容器
第5章 Docker容器第6章 Docker安装第7章 Docker接口第8章 容器连网第9章 容器编排第10章 容器管理
第三部分 项目实战—学以致用
第11章 案例研究:单体Helpdesk应用第12章 案例研究:迁移到微服务第13章 案例研究:容器化Helpdesk应用结语
附录A Helpdesk应用流
附录B 安装Solr搜索引擎
第一部分 微服务
第1章 微服务概览 3
1.1 什么是微服务 3
1.2 模块化架构 7
1.3 微服务的其他优点 8
1.4 微服务的缺点 9
第2章 转换到微服务 11
2.1 疲劳与属性 11
2.2 组织的学习曲线 12
2.3 微服务的商业案例 14
2.4 成本构成 15
第3章 进程间通信 19
3.1 交互的类型 19
3.2 准备编写Web服务 20
3.3 微服务的维护 21
3.4 发现服务 21
3.4.1 API网关 22
3.4.2 服务注册中心 23
3.5 融会贯通 23
第4章 微服务的迁移与实现 27
4.1 转换的必要性 27
4.2 使用微服务创建新应用 29
4.2.1 组织的准备情况 29
4.2.2 基于服务的方式 30
4.2.3 进程间(服务与服务)通信 30
4.2.4 技术选型 31
4.2.5 实现 31
4.2.6 部署 32
4.2.7 运维 32
4.3 将单体应用迁移到微服务 33
4.3.1 微服务准则 34
4.3.2 重新架构服务 36
4.4 混合方式 37
第二部分 容器
第5章 Docker容器 41
5.1 虚拟机 41
5.2 容器 44
5.3 Docker架构和组件 45
5.4 Docker的力量:一个简单示例 48
第6章 Docker安装 51
6.1 在Mac OS X上安装Docker 51
6.2 在Windows上安装Docker 56
6.3 在Ubuntu Linux上安装Docker 57
第7章 Docker接口 61
7.1 关键Docker命令 61
7.1.1 docker search 61
7.1.2 docker pull 63
7.1.3 docker images 64
7.1.4 docker rmi 65
7.1.5 docker run 65
7.1.6 docker ps 67
7.1.7 docker logs 68
7.1.8 docker restart 72
7.1.9 docker attach 73
7.1.10 docker rm 73
7.1.11 docker inspect 75
7.1.12 docker exec 76
7.1.13 docker rename 77
7.1.14 docker cp 78
7.1.15 docker pause/unpause 79
7.1.16 docker create 80
7.1.17 docker commit 81
7.1.18 docker diff 81
7.2 Dockerfile 82
7.3 Docker Compose 86
第8章 容器连网 89
8.1 关键Linux概念 89
8.2 互联 90
8.3 默认选项 93
8.3.1 none 94
8.3.2 host 94
8.3.3 bridge 96
8.4 自定义网络 99
8.4.1 自定义网桥网络驱动 100
8.4.2 重叠网络驱动 102
8.4.3 非重叠网络驱动和Macvlan 103
第9章 容器编排 105
9.1 Kubernetes 105
9.1.1 kubectl 106
9.1.2 主节点 106
9.1.3 工作节点 108
9.1.4 示例:Kubernetes集群 109
9.2 Apache Mesos和Marathon 110
9.2.1 Mesos主节点 111
9.2.2 代理 111
9.2.3 框架 112
9.2.4 示例:Marathon框架 112
9.3 Docker Swarm 113
9.3.1 节点 113
9.3.2 服务 113
9.3.3 任务 114
9.3.4 示例:Swarm集群 114
9.4 服务发现 116
9.5 服务注册中心 119
第10章 容器管理 121
10.1 监控 121
10.2 日志记录 122
10.3 指标收集 125
10.3.1 docker stats 125
10.3.2 API 126
10.3.3 cAdvisor 126
10.4 集群范围的监控工具 127
10.4.1 Heapster 127
10.4.2 Prometheus 127
第三部分 项目实战——学以致用
第11章 案例研究:单体Helpdesk应用 145
11.1 Helpdesk应用概览 145
11.2 应用架构 146
11.2.1 身份验证、拦截器和授权 147
11.2.2 账户管理 148
11.2.3 工单 151
11.2.4 产品目录 153
11.2.5 预约 156
11.2.6 留言板 158
11.2.7 搜索 160
11.3 构建应用程序 161
11.3.1 搭建Eclipse 161
11.3.2 构建应用 162
11.3.3 部署与配置 166
11.4 新需求和bug修复 168
第12章 案例研究:迁移到微服务 171
12.1 准备迁移 171
12.1.1 采用微服务准则 172
12.1.2 转换小结 173
12.1.3 对架构的影响 174
12.2 转换到微服务 174
12.2.1 产品目录 175
12.2.2 工单 177
12.2.3 搜索 178
12.3 应用构建和部署 179
12.3.1 代码设置 179
12.3.2 构建微服务 179
12.3.3 部署与配置 180
12.4 新需求与bug修复 183
第13章 案例研究:容器化Helpdesk应用 185
13.1 容器化微服务 185
13.1.1 列出依赖项 185
13.1.2 构建二进制文件和WAR文件 186
13.1.3 创建Docker镜像 186
13.1.4 构建Docker镜像 189
13.1.5 在AWS上搭建DC/OS集群 190
13.2 部署产品目录微服务 195
13.2.1 向Marathon提交一个任务 195
13.2.2 检查与扩展服务 198
13.2.3 访问微服务 200
13.3 更新单体应用 201
结语 203
附录A Helpdesk应用流 207
附录B 安装Solr搜索引擎 217
声明:以上内容来源于网络,如有侵权请联系我们(123@shiyan.com)删除! |
|