轻松搭建基于Serverless的Go应用(Gin、Beego 举例)
首先介紹下在本文出現的幾個比較重要的概念:
函數計算(Function Compute): 函數計算是一個事件驅動的服務,通過函數計算,用戶無需管理服務器等運行情況,只需編寫代碼并上傳。函數計算準備計算資源,并以彈性伸縮的方式運行用戶代碼,而用戶只需根據實際代碼運行所消耗的資源進行付費。函數計算更多信息?參考。
 Fun: Fun 是一個用于支持 Serverless 應用部署的工具,能幫助您便捷地管理函數計算、API 網關、日志服務等資源。它通過一個資源配置文件(template.yml),協助您進行開發、構建、部署操作。Fun 的更多文檔?參考。
備注: 本文介紹的技巧需要 Fun 版本大于等于 3.6.4。
轉存失敗重新上傳取消
效果預覽
本文涉及到的兩個應用示例部署后的鏈接,點擊預覽效果:
環境準備
首先按照 Fun 的安裝文檔里介紹的方法將 Fun 安裝到本機。
PS: 本文介紹的方法,不需要安裝 Docker,僅僅安裝 Fun 即可,最簡單的方式就是直接下載可執行的二進制文件。
安裝完成后,可以執行 fun --version 檢查 Fun 是否安裝成功。
示例一:遷移 gin 示例到函數計算
首先我們按照官方示例的步驟,安裝 gin(需要 golang 版本在 1.11+ 以上):
go get -u github.com/gin-gonic/gin創建一個 example.go,內容填寫如下:
package mainimport "github.com/gin-gonic/gin"func main() {r := gin.Default()r.GET("/ping", func(c *gin.Context) {c.JSON(200, gin.H{"message": "pong",})})r.Run() // listen and serve on 0.0.0.0:8080 (for windows "localhost:8080") }使用下面的命令啟動應用:
go run example.go然后訪問?localhost:8080/ping,可以看到返回結果如下:
最后直接使用 fun deploy 即可部署。
fun deploy我們這里詳細介紹下第一次部署流程:
部署完成后,可以看到會自動生成一個可以測試訪問的臨時域名?14118335-1911504709953557.test.functioncompute.com,通過這個臨時域名,可以用于開發、測試時預覽應用。
使用該臨時域名,訪問應用的 API 接口?14118335-1911504709953557.test.functioncompute.com/ping?測試,效果如下:
備注:臨時域名僅僅用作演示以及開發,是有時效的,如果用作生產,請綁定已經備案的域名。
示例二:遷移 beego 示例到函數計算
首先我們按照官方示例的步驟,搭建 beego 應用:
go get github.com/astaxie/beego創建一個 hello.go,內容填寫如下:
package mainimport "github.com/astaxie/beego"func main(){beego.Run() }使用下面的命令啟動應用:
go run hello.go然后訪問?localhost:8080,可以看到返回結果。
最后部署,直接使用 fun deploy 經歷類似示例一的流程后,就可以通過 Fun 返回的臨時域名預覽應用了。
示例三:遷移 gin 搭建的博客應用到函數計算
示例三我們選擇一個稍微復雜一些的應用,我們按照官方幫助文檔的步驟,搭建一個基于 gin 的 blog 應用:
1. 克隆項目到本地(直接下載 zip 包也可以):
git clone https://github.com/tanhe123/mdblog.git2. 修改配置文件
在?config?目錄下,有一個配置文件?config.example.toml,將其復制一份,并修改名稱為?config.toml,然后修改里面的幾個配置:
- 將 port = 8091 修改為 port = 9000,表示應用啟動時,啟動在 9000 端口。
 - 將 debug = true 修改為 debug = false,表示使用生產版本
 - 將 dir = "logs" 修改為 dir = "/tmp",表示日志寫到 /tmp 目錄(不掛載 NAS 的情況下,函數計算只有該目錄是可以寫的)
 
3. 編譯并運行應用
go build # 會生成一個 mdblog 的二進制可執行程序 ./mdblog # 直接運行該可執行程序如果遇到網絡問題,可以使用?https://goproxy.cn/?加速。
訪問?http://localhost:9000?預覽效果
4. 部署
最后,本地測試沒問題后,我們需要發布到函數計算上,雖然這個示例比起上面兩個代碼層面要復雜很多,但部署流程是一樣的,直接執行?fun deploy?然后一路回車即可。
本示例生成的臨時域名為:https://14118335-1911504709953557.test.functioncompute.com
打開可以看到如下效果:
打開具體的一篇博客,效果如下:
總結
我們通過三個示例介紹了如何部署一個 go 應用到函數計算上,從這三個例子我們可以發現,遷移一個 go 應用到函數計算是非常容易的,主要精力還是放在了如何在本地配置并啟動應用,然后部署只需要簡單的通過?fun deploy?命令即可。部署完成后,即可享受到函數計算帶來的彈性伸縮、按量付費、免運維等特性。
更多參考
“阿里巴巴云原生關注微服務、Serverless、容器、Service Mesh 等技術領域、聚焦云原生流行技術趨勢、云原生大規模的落地實踐,做最懂云原生開發者的技術圈。”
原文鏈接
 本文為云棲社區原創內容,未經允許不得轉載。
總結
以上是生活随笔為你收集整理的轻松搭建基于Serverless的Go应用(Gin、Beego 举例)的全部內容,希望文章能夠幫你解決所遇到的問題。
                            
                        - 上一篇: SaaS模式云数据仓库:持续保护云上数据
 - 下一篇: 对话阿里云总裁张建锋:解密阿里云再生长的