前言
什麼是Serverless
無服務器Serverless是一種雲原生開發模型,可使開發人員專注構建和運行應用,而無需管理服務器。
雲函數(Serverless Cloud Function,SCF)則是騰訊雲提供的無服務器執行環境,可以在無需購買和管理服務器的情況下運行代碼。
什麼是Mock Server
現在的業務系統很少有孤立存在的,它們或多或少需要使用或依賴其他服務,這給我們的聯調和測試造成了麻煩。
為了應對這種情況,我們常會搭建一個臨時的server,模擬那些服務,提供模擬數據進行聯調和測試。
這個臨時的server就是 mock server 。
因此mock server通常具有以下特點:
- 快速搭建、無需寫代碼
- 能模擬任何數據
- 低成本
- 簡單配置
也正是這些特點,均符合serverless的特點,因此我們使用serverless來做這件事情再合適不過了。
接下來我們就用騰訊雲的雲函數為例,來講解一下如何快速搭建Mock Server。
如何用雲函數快速搭建Mock Server
目前市面上有很多Mock server工具,開源的不開源的都有。
這裏就用Moco作為例子來教大家快速部署一個Mock Server。
Moco是一個開源框架,這是它的Github鏈接。
準備工作
首先去Moco的github頁面下載準備好的jar文件。
其次需要自己準備一個定義response的JSON文件,如下。裏面的內容需要根據自己的業務去定義要返回的mock數據是什麼。
[
{
"response" :
{
"text" : "Hello, Moco"
}
}
]
最後在雲函數中運行需要一個啓動文件,文件名必須是scf_bootstrap,內容如下:
#!/bin/bash
/var/lang/java8/bin/java -jar moco-runner-1.2.0-standalone.jar http -p 9000 -c foo.json
其中端口號必須是9000,JSON配置文件名如果不是foo.json則需要改成自己的文件名。
然後把這個三個文件打包成一個zip文件,如下圖。
部署Mock Server
打開雲函數的控制枱,新建一個雲函數。如下圖。
- 選擇從頭開始
- 選擇Web函數
- 運行環境選擇Java8
- 在函數代碼那裏上傳剛才打包好的zip文件
最後,點擊完成即可。
然後,你到函數管理界面就可以看到訪問路徑了。如下圖。
向URL發送HTTP請求就能獲得你在JSON文件中定義的response。
一鍵部署
上面的方式是不是已經很快捷了。但是還有更快的,沒有錯!
Mock server已經上架到雲函數的官方模版中了。
如下圖,在模版中搜索mock就可以看到,一鍵就可以部署一個Mock server了。
用Serverless搭建Mock Server的優勢
用Serverless搭建Mock Server具有下面幾個優勢。
快速搭建
所有開發團隊都希望只花極少的時間就能快速搭建一個Mock Server。
因此使用Serverless不用關注和維護服務器,所以可以快速搭建運行一個mock server。
極低成本
由於Mock server只用於測試,如果我們購買服務器來搭建,會增加不少金錢成本和維護成本。
而Serverless按量收費和免運維的特點,則可以既節約了金錢成本,又節約了維護成本。
通常我們調用Mock Server的次數都很少,而云函數是按調用次數收費的,每個月有10萬次免費調用次數。所以使用雲函數則可以免費薅羊毛。
無需運維
我們不需要像管理服務器那樣需要去配置端口、防火牆等。
只需要上傳mock server就結束了。
最後
Serverless還可以做很多類似的事情,因為它的高性能、自動伸縮、按量計費等特性,讓它成為了很多解決方案中的性價比首選。
未來我會繼續探索serverless的更多實用的場景與大家分享。