如何用Serverless搭建Mock Server?

騰訊雲加社群 發表於 2022-01-24
Serverless

引言

(一)什麼是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連結:https://github.com/dreamhead/...

(一)準備工作

首先去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檔案,如下圖。

如何用Serverless搭建Mock Server?

(二)部署Mock Server

開啟雲函式的控制檯,新建一個雲函式。如下圖。

  • 選擇自定義建立
  • 選擇Web函式
  • 執行環境選擇Java8
  • 在函式程式碼那裡上傳剛才打包好的zip檔案

如何用Serverless搭建Mock Server?

最後,點選完成即可。

然後,你到函式管理介面就可以看到訪問路徑了。如下圖,向URL傳送HTTP請求就能獲得你在JSON檔案中定義的response。

如何用Serverless搭建Mock Server?

(三)一鍵部署

上面的方式是不是已經很快捷了。但是還有更快的,沒錯!mock server已經上架到雲函式的官方模版中了。如下圖,在模版中搜尋mock就可以看到,一鍵就可以部署一個Mock server了。

如何用Serverless搭建Mock Server?

注意:模版部署的mock server自帶一個預設的response json檔案,大家可以通過下載已部署的程式碼包,替換裡面的json檔案成自己的,然後重新部署。具體步驟可以參考模版原始碼中的readme。

二、用Serverless搭建Mock Server的優勢

用Serverless搭建Mock Server具有下面幾個優勢:

(一)快速搭建

所有開發團隊都希望只花極少的時間就能快速搭建一個Mock Server。因此使用Serverless不用關注和維護伺服器,所以可以快速搭建執行一個mock server。

(二)極低成本

由於Mock server只用於測試,如果我們購買伺服器來搭建,會增加不少金錢成本和維護成本。

而Serverless按量收費和免運維的特點,則可以既節約了金錢成本,又節約了維護成本。

通常我們呼叫Mock Server的次數都很少,而云函式是按呼叫次數收費的,每個月有10萬次免費呼叫次數。所以使用雲函式則可以免費薅羊毛。

(三)無需運維

我們不需要像管理伺服器那樣需要去配置埠、防火牆等。只需要上傳mock server就結束了。

三、結語

Serverless還可以做很多類似的事情,因為它的高效能、自動伸縮、按量計費等特性,讓它成為了很多解決方案中的價效比首選。

雲函式官網:https://cloud.tencent.com/pro...
事件匯流排官網:https://cloud.tencent.com/pro...