本文主要介紹企業微信應用開發,如何藉助雲託管高效、低成本方式進行部署上線,並比較雲託管與傳統開發方式的不同。
微信雲託管官網
https://cloud.weixin.qq.com/cloudrun
一、雲託管專案實踐總結
2019年企業微信3.0的上線,到今天為止,對於企業來說企業微信是個不可或缺的企業資訊化管理平臺,包括客戶關係、公司組織架構、企業管理、SCRM、OA日常辦公等等,最強大的是企業微信的開放平臺,提供了一系列的API介面供企業和服務商進行開發。
雖然有完善的開發文件,但是對於企業接入來說,門檻和成本還是挺高的,傳統接入方式,首先得需要購置一臺雲伺服器,引數要考慮頻寬,CPU 記憶體配置,還要考慮計費方式...... , 藉助於雲託管,這些變得簡單。
1、開箱即用
如官網所示,開箱即用,這是對於企業和開發者來說是一個極大福音,直接註冊開通即可,非常實用,具體體現在:官方提供的測試域名,部署一個服務上線,雲託管會自動生成一個域名,用此域名就可以在公網上訪問我們的服務,進行開發測試,做過後端開發同學應該很清楚,這大大方便後端的測試工作,沒有公網IP,沒有域名也可以進行測試訪問。
企業微信應用主頁填入雲託管生成的域名進行開發測試。
另外,後端開發語言支援的也很廣泛,有Java 、PHP、Node.js、 Python、 Go 主流後端開發語言基本都支援,本文例項用的就是Node.js 。
2、低成本
低成本體現兩個方面:一是開發側,開箱即用,降低開發門檻,節省時間和研發成本投入;另一個方面,微信雲託管採用按量計費方式,有多種流量包供選擇,企業可以結合自身情況來組合購買,很划算。
3、彈性擴縮
這是最值得一提的地方,彈性擴縮大大降低後端併發設計難度,如果服務有併發訪問的需求,後端併發效能是繞不開發話題,從伺服器配置到頻寬,再到技術架構,任何一個地方考慮不周都會成為系統的瓶頸,雲託管彈性擴縮從根本上可以解決此問題,服務例項可以橫向擴縮容,根據資源耗費情況自動的增加或減少例項,以此應對突發的訪問量。不必擔心併發能力不足,而導致系統當機,這方面上講,確實可以把更多精力投入到業務實現上。
二、案例專案介紹
本次專案是一個基於企業微信應用+一個web應用,包括前端和後端,前端技術棧是 react,後端是 nodejs ,專案目標是部署後端到雲託管上面,並進行釋出測試。
1、程式碼 Docker 封裝
主要是兩個配置檔案,一個是 Dockerfile,一個是 container.config.json ,其中,後者屬於基本配置,如設定擴縮容的觸發條件。
Dockerfile 主要指定映象、目錄,啟動引數和對外埠等:
container.config.json 配置擴容觸發條件
構建目錄 "buildDir": "",
最小例項數 "minNum": 0,
最大例項數 "maxNum": 50,
cpu 核數 "cpu": 0.25,
記憶體大小,單位:G "mem": 0.5,
擴縮容指標型別 "policyType": "cpu",
擴縮容指標閾值 "policyThreshold": 60,
環境變數 "envParams": {},
日誌採集路徑 "customLogs": "stdout",
啟動檢測延遲 "initialDelaySeconds": 2
最主要的幾個引數說明,cpu mem 代表一個階梯單位,擴縮一個單位增加或減少的量是多少,policyThreshold 代表觸發條件,當Cpu或記憶體使用率超過60%就啟動擴容,而且擴容的速度很快,可以實現秒級擴容,這個時延針到一般併發訪問來說足以夠用。
完成這兩個配置檔案,就完成了程式碼 Docker 封裝。
2、打包程式碼上傳雲託管
程式碼目錄下執行,用zip 命令將程式碼打包。
zip -r -q backend.zip -x ./node_modules/*
前往雲託管控制檯:
選本地上傳和壓縮包,配置好埠,點選【新建】開始建立新的版本。
在控制檯右側可檢視實時部署日誌,看到如上圖中的 Succesfully built .... 即代表部署成功。
接下來是釋出上線過程。
列表選擇生成的版本,釋出有兩種方式,一是全量,二是灰度,如果是小程式可以用灰度測試,增加白名單的方式,來灰度釋出,我這裡是web應用,目前還不支援企業微信的灰度,所以我是直接全量釋出,希望以後雲託管能支援企業微信灰度釋出,到此雲託管服務部署到釋出就完成。
3、其他方面
雲託管日誌和服務監控都很完善,很方便我們日常運維管理工作,檢視我們的服務執行情況。
日誌可以看到服務啟動情況,列印出我們的log資訊,(使用者log資訊是粉紅色)
監控裡可以檢視 服務的QPS 響應時間 呼叫量等,免去了自己搭建的麻煩。
4、專案其他經驗
實際開發當中,我們系統還應用到其他的服務,需要安裝一些業務需要的模組,比如非主流的資料庫等,所以把那一部分剝離和留在傳統伺服器上,雲託管雲訪問這些服務。另外我們還將一些小而微模組開發成雲函式 ,放到雲開發當中,實現了雲託管和雲函式互通,這樣可以使構架更靈活,藉助雲開發和雲託管各自的優勢。這些細節就不一一贅述,所有云開發和雲託管確實給開發帶來很多的便捷,利用好雲開發大大降低了研發的門檻和成本,企業和研發可以更多的關注業務實現。
變化後的架構,複雜度變小,不再需要過多考慮接入層(閘道器與負載 部署nginx),過去只有很強技術背景團隊才能做好的事,在今天就變得簡單多了,希望騰訊雲開發和雲託管團隊能帶給我們更多驚喜!
作者:宋延濤,雲開釋出道師。