《Cloud Native Go》筆記(五)在Go中構建微服務

Cloud Native Go:構建基於Go和React的雲原生Web應用與微服務。Kevin Hoffman, Dan Nemeth著,TalkingData:宋凈超,吳迎松,徐蓓,馬超 譯,電子工業出版社,2017年。

筆記中有些內容直接引用原書。

=======================================================

黃金法則:你可以在不更改任何其他代碼的前提下更改服務並重新部署嗎?——Sam Newman, Building Microservices 作者

我們構建的每個服務都應該是微服務。我們會採用API First方式,在編寫代碼之前首先設計服務的RESTful介面。

本章將介紹以下幾個方面:

1. API First開發準則和實踐

2. 創建微服務框架

3. 向服務添加測試,并迭代地添加代碼,使通過測試

4. 向雲端部署和運行微服務

創建API First的服務

Markdown是編寫文檔和其他文件的首選工具。它是一個簡單的純文本格式,不需要使用IDE或其他臃腫的編輯工具,同時可以轉換成PDF、網頁等無數的格式。我們通常習慣在微服務中使用Markdown文檔。這樣能夠允許其他開發人員快速獲得所有服務的REST資源、URI模式和請求/響應有效載荷的列表。

有一種Markdown的特殊使用格式可以專門用於記錄RESTful API:API Blueprint.

大家可在網站apiblueprint.org/上查看相關資料。本章的GitHub倉庫(https://github.com/cloudnativego/gogo-service) 可以看到一個名為apiary.apib的文件。此文件包含Markdown格式的內容,表示GoGo服務支持的RESTful介面的文檔和規範。

通過Apiary測試和發布文檔

Apiary是一個網站,它能實現以交互方式設計RESTful API。Apiary可以生成返回JSON有效數據的模擬伺服器,這樣節省了必須自己搭建模擬伺服器的時間,並同時允許保持API First方式,直到通過制定API的草稿階段。除提供模擬器外,還可以在編寫伺服器代碼之前使用生成的多種編程語言的客戶端代碼進一步協助團隊驗證API。

架設微服務

例子代碼引入了第三方庫Negroni和Gorilla Mux。Negroni用於在Go內置的net/http包上構建路有介面,Gorilla Mux作為路由庫。

構建Test First的服務

正常情況下,我們應該會花費95%的時間編寫測試,花費5%的時間編寫代碼。

在雲端部署和運行

本書選擇Cloud Foundary的PCF Dev和Pivotal Web Services (PWS)作為部署對象。

創建PWS帳戶

配置PCF開發環境

提交到Cloud Foundary


推薦閱讀:

微服務落地第三課-Spring Cloud Config Client搭建
「演講復盤」技術沙龍(滬江網4月) - 我所遇見的微服務演進這十年
《微服務設計》閱讀筆記(九)安全
過去365天,40篇不能錯過的工具類技術乾貨文章集錦

TAG:微服務架構 | Go編程 | CloudNativeGo書籍 |