Cloud Native Go : 構建基於 Go 和 React 的雲原生 Web 應用與微服務 Cloud Native Go:构建基于Go和React的云原生Web应用与微服务

Kevin Hoffman;Dan Nemeth

立即出貨 (庫存 < 3)

買這商品的人也買了...

商品描述

本書旨在向開發人員展示如何構建適用於大流量、高並發場景下的雲原生Web應用。本書從搭建開發測試環境開始,逐步介紹使用Go語言構建微服務的方法,通過引入CI/CD流程和Wercker、Docker等工具將應用推送到雲中。結合微服務構建中的後端服務、數據服務、事件溯源和CQRS模式、基於React和Flux的UI設計等,本書最後構建了一個基於Web的RPG游戲World of FluxCraft,可以作為使用Go構建雲原生Web應用的參考,適合於雲計算與Go語言編程從業者們閱讀。

海報:

作者簡介

作者簡介
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、雲棲大會等技術會議上作為講師進行技術分享。

目錄大綱

第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