作者简介
Kevin Hoffman通过现代化和以多种不同语言构建云原生服务的方式帮助企业将其应用程序引入云端。他10岁时开始编程,从那时起便已经沉迷于构建软件,并花了很多时间学习语言、框架和模式。他已经构建了从遥控摄影无人机、仿生性安全系统、超低延迟金融应用程序到移动应用程序等一系列软件,并且在构建需要与Pivotal Cloud Foundry配合使用的自定义组件时爱上了Go语言。
Dan Nemeth目前在Pivotal担任咨询解决方案架构师,负责支持Pivotal Cloud Foundry。他从1995年开始从事专业编码,使用ANSI C编写了用于本地ISP的CGI脚本。他职业生涯的大部分时间都是作为独立顾问为金融、制药等各个行业提供解决方案,其间不断使用当时流行的各种语言和框架。Dan最近接受了Go作为自己的"归宿",其间不断热情地将它用于所有的项目。
译者简介
宋净超,TalkingData技术运营团队工程师。拥有多年的Hadoop大数据平台运维管理经验,熟悉Hadoop技术、Docker生态系统以及PaaS平台,主导了 TalkingData的Yarn on Docker项目改造和微服务落地,关注开源软件及Docker、Kubernetes的前沿发展,关注Kubernetes和TensorFlow的实践。多次在全球架构师峰会、QCon 、CNUTCon、云栖大会等技术会议上作为讲师进行技术分享,博客地址:http://rootsongjc.github.io/。
1 云之道 1
云之道的优点 2
-- 遵循简单 2
-- 测试优先,测试一切 3
-- 尽早发布,频繁发布 5
-- 自动化一切 6
-- 建立服务生态系统 7
为什么使用Go 8
-- 简单 8
-- 开源 8
-- 易于自动化和IDE自由化 8
本章小结 9
2 开始 11
正确的工具 11
配置Git 12
-- 安装Homebrew 12
-- 安装Git客户端 13
-- 安装Mercurial和Bazaar 13
-- 创建GitHub账户 14
创建Go环境 14
-- 配置Go工作区 14
检查环境 15
本章小结 16
3 Go入门 17
建立Hello cloud 18
使用基本函数 19
使用结构体 22
介绍Go接口 25
向结构体添加方法 25
-- Go中的接口动态类型检查 26
使用第三方包 28
创建自有包 30
-- 导出函数和数据 31
-- 创建包 31
本章小结 34
4 持续交付 35
Docker介绍 36
-- 为什么要使用Docker 36
-- 安装Docker 36
-- 运行Docker镜像 38
与Wercker的持续集成 39
-- 持续集成的最佳实践 39
-- 为什么使用Wercker 40
-- 创建Wercker应用程序 41
-- 安装Wercker CLI 42
-- 创建Wercker配置文件 43
-- 使用Wercker进行构建 48
-- 部署到Docker Hub 50
读者练习:创建完整的开发管道 51
-- 高级挑战:集成第三方库 53
本章小结 53
5 在Go中构建微服务 55
设计API First的服务 55
-- 设计match API 56
-- 创建API Blueprint 56
-- 通过Apiary测试和发布文档 58
架设微服务 59
构建Test First的服务 62
-- 创建第一个失败测试 63
-- 测试Location Header 66
-- 壮丽的蒙太奇:迭代测试 67
在云端部署和运行 70
-- 创建PWS账户 70
-- 配置PCF开发环境 70
-- 提交到Cloud Foundry 71
本章小结 72
6 运用后端服务 75
设计服务系统 75
测试优先构建依赖服务 77
-- 构建fulfillment服务 78
-- 构建catalog服务 81
在服务之间共享结构化数据 87
-- 客户端引用服务端包 88
-- 客户端复制服务端结构 88
-- 客户端与服务端引用共享包 89
使用服务捆绑来外部化地址与元数据 90
服务发现 93
-- 动态服务发现 94
-- Netflix的服务发现系统Eureka 94
读者练习 97
-- 进阶操作 97
本章小结 98
7 构建数据服务 99
构建MongoDB存储库 100
-- 为什么选择MongoDB 100
-- 更新存储库模型 100
-- 通过Go来操作MongoDB 101
-- 以Test-First方式编写MongoDB存储库 102
集成测试一个Mongo-Backed服务 107
-- 集成临时MongoDB数据库 108
-- 编写一个集成测试 110
在云中运行 115
-- 后端服务的配置 115
本章小结 117
8 事件溯源和CQRS 119
现实源自事件 120
-- 幂等 121
-- 隔离 121
-- 可测试 122
-- 可再现,可恢复 123
-- 大数据 123
拥抱最终一致性 123
CQRS简介 124
事件溯源案例 126
-- 天气监测 126
-- 互联网汽车 127
-- 社交媒体消息处理 127
代码示例:管理无人机舰队 128
构建命令处理程序服务 129
-- RabbitMQ介绍 129
-- 构建命令处理器服务 133
构建事件处理器 135
-- 对事件处理器进行集成测试 140
构建查询处理程序服务 140
本章小结 141
9 使用Go构建Web应用程序 143
处理静态文件和asset 143
支持JavaScript客户端 145
使用服务端模板 148
处理表单 150
使用cookie和会话状态 151
-- 写入cookie 152
-- 读取cookie 153
使用Wercker构建和部署 153
本章小结 155
10 云安全 157
保护Web应用程序 157
-- 应用程序安全性选项 158
-- 设置Auth0账户 159
-- 构建一个OAuth安全的Web应用程序 160
-- 运行安全的Web应用程序 164
保护微服务 166
-- 客户端凭据模式概述 166
-- 使用客户端凭据保护微服务 168
-- 关于SSL的注意事项 169
隐私和数据安全 170
-- 黑客不能得到你没有的 170
读者练习 172
本章小结 173
11 使用WebSockets 175
WebSockets解析 175
-- WebSockets如何工作 176
-- WebSockets与服务器发送事件对比 177
-- 设计WebSockets服务器
177
WebSockets的云原生适应性 178
使用消息服务创建WebSockets应用 180
-- 关于JavaScript框架 183
-- 运行WebSockets示例 183
本章小结 184
12 使用React构建Web视图 185
JavaScript的形势
186
为什么选择React 186
-- 虚拟DOM 187
-- 组件组合 187
-- 响应式数据流 188
-- 集中焦点 188
-- 使用的便利性 189
React应用程序剖析 189
-- package.json文件 189
-- Webpack.config.js文件 191
-- .babelrc文件 191
-- 理解JSX和Webpack 191
-- React组件 192
构建简单的React应用程序 192
-- 不赞成的做法 199
测试React应用程序 200
进一步阅读 200
-- React网站 200
-- React书籍 201
-- 其他资料
201
本章小结
201
13 使用Flux构建可扩展的UI 203
Flux介绍 203
-- dispatcher 204
-- store 204
-- view 205
-- action 205
-- source 205
-- Flux的复杂性 205
创建Flux应用程序 206
本章小结 215
14 创建完整应用World of FluxCraft 217
World of FluxCraft介绍 218
架构概览 219
-- 独立扩展、版本控制和部署 221
-- 数据库不是集成层 221
-- 单向不可变数据流 221
Flux GUI 222
-- Go UI宿主服务 223
-- 玩家移动时序图 224
命令处理 225
事件处理 226
维持现实服务的状态 227
地图管理 227
自动验收测试 228
本章小结 230
15 结论 231
我们学到了什么 231
-- Go不是小众语言 231
-- 微服务应该有多“微” 232
-- 持续交付和部署 232
-- 测试一切 232
-- 尽早发布,频繁发布 232
-- 事件溯源、CQRS和更多首字母缩略词 233
下一步 233
附录A 云应用的故障排查 235
· · · · · · (
收起)
评分
☆☆☆☆☆
是不怎么样啊
评分
☆☆☆☆☆
更多是视野的一种扩展。
评分
☆☆☆☆☆
名字高大上,内容却超级入门的书.蜻蜓点水说了一堆技术,算是完整的技术栈吧,可惜好多在2019都已经过时了.除了TDD,CQRS,基本没有什么营养..
评分
☆☆☆☆☆
更多是视野的一种扩展。
评分
☆☆☆☆☆
名字高大上,内容却超级入门的书.蜻蜓点水说了一堆技术,算是完整的技术栈吧,可惜好多在2019都已经过时了.除了TDD,CQRS,基本没有什么营养..
评分
☆☆☆☆☆
KevinHoffmanand Dan Nemeth start with a primer on Go, a programming language that's rapidly gaining traction due to its elegant simplicity, performance, and exceptional suitability for cloud development. Next, they describe the modern cloud-native applicati...
评分
☆☆☆☆☆
KevinHoffmanand Dan Nemeth start with a primer on Go, a programming language that's rapidly gaining traction due to its elegant simplicity, performance, and exceptional suitability for cloud development. Next, they describe the modern cloud-native applicati...
评分
☆☆☆☆☆
KevinHoffmanand Dan Nemeth start with a primer on Go, a programming language that's rapidly gaining traction due to its elegant simplicity, performance, and exceptional suitability for cloud development. Next, they describe the modern cloud-native applicati...
评分
☆☆☆☆☆
KevinHoffmanand Dan Nemeth start with a primer on Go, a programming language that's rapidly gaining traction due to its elegant simplicity, performance, and exceptional suitability for cloud development. Next, they describe the modern cloud-native applicati...
评分
☆☆☆☆☆
KevinHoffmanand Dan Nemeth start with a primer on Go, a programming language that's rapidly gaining traction due to its elegant simplicity, performance, and exceptional suitability for cloud development. Next, they describe the modern cloud-native applicati...