騰訊雲副Quattroporte劉穎將騰訊雲定義為微信的一個助手,騰訊雲面向微信生態開發者輸出的技術解決方案包括“小程式·雲開發”、小程式音視訊直播、小遊戲聯機對戰引擎等,騰訊雲與企業微信的合作也會在未來幾個月內公佈。
今日,騰訊雲和微信小程式團隊今日在北京組織了一個 “小程式·雲開發”技術峰會,向微信小程式開發者闡釋了“小程式·雲開發”這種全新的serverless開發模式。
騰訊雲副Quattroporte劉穎介紹道,作為微信團隊和騰訊雲聯手打造的小程式基礎能力,“小程式·雲開發”整合了騰訊雲的基礎能力和小程式開放能力,以及超過150個開放介面,能夠讓開發者在開發小程式時從繁冗的開發配置工作中解放出來,僅需關注業務程式碼邏輯的編寫。和傳統開發模式相比,“小程式·雲開發”效能提升42%,打造小程式產品的步驟縮減至3步。
在基礎能力之外,“小程式·雲開發”還正在進一步封裝騰訊雲、微信平臺的其他能力,提供擴充套件能力,包括AI、音視訊、微信支付和訂閱訊息。微信小程式開放業務負責人認為,“小程式·雲開發”不只是後端服務,更是包括小程式、公眾號、微信支付在內的微信生態開發的解決方案。
以微信支付為例,原本涉及資金安全、開發複雜度較高的支付能力,經過封裝後開發效率將大大提升。上線不久的小程式的“訂閱訊息”能力,通過雲開發的整合,也只需要簡單的幾個雲函式就能實現這個功能。
目前已經有超過23萬註冊賬戶,50多萬開發者在基於“小程式·雲開發”快速開發小程式。騰訊雲對外公佈的“小程式·雲開發”的先行者和優秀實踐者包括白鷺引擎、千墨科技、騰訊新聞、即速應用、微盟、唯品會、貓眼、香格里拉、微信讀書和微信支付。
以微信讀書小程式為例,其通過雲開發實現敏捷開發,優化組織分工,提升開發效率。微信讀書小程式負責人姚海波指出,通過“小程式·雲開發“,前端程式碼和服務端程式碼共存在一個專案中,同樣的技術棧、同樣的IDE環境,可以除錯開發更高效。同時,雲函式支援動態擴容,可以完美支援瞬間增長的運營類業務,為業務的快速增長提供了保證。
微信讀書小程式負責人姚海波在騰訊雲與微信小程式團隊聯合舉辦的“小程式·雲開發”技術峰會上詳細分享了雲開發如何讓微信讀書小程式實現敏捷開發的。以下是姚海波的分享內容。
01 | 10個月釋出349次版本做前端之後內心比較焦慮,大家看剛才的頭像再看看現在的我就知道了。做前端苦,要學的東西很多,似乎永遠都學不完,框架層出不窮。希望參加完今天的分享之後對前端開發有所幫助。不過我們引入雲開發後,焦慮的確再減少。
說起微信讀書在座應該很多人用過或者聽說過這個應用,我非常高興,一畢業就加入到微信讀書這個優秀的團隊,而今年也是微信讀書的第5週年了。在今年之前我一直是負責微信讀書IOS客戶端的開發,從今年開始我們決定發力小程式,所以微信讀書小程式從上線到現在也是僅僅經歷了10個月而已,在這10個月之內我們做了非常非常多的事情,也取得了不錯的成績,使用者過千萬,日均PV過千萬。
從迭代速度上面來看,我們根據昨天的統計,我算了一下10個月以來,我們釋出了349次版本。6月份的時候是最頻繁的一個月,對比小程式、H5、APP來說,H5迭代了18個版本,小程式迭代了65個版本。APP要4個開發同學同時開發8天才能釋出功能,H5稍微快一點,2個開發同學用6天的時間可以發,而小程式我們用了1.5個人,花了5天的時間。按照這個數字來算一下開發效率,假定APP是100,我們認為H5開發效率是267,小程式開發效率是427,基本上小程式效率是APP的4倍,是H5的1.6倍。
我們如何做到如此敏捷開發的,雖然都是跨平臺,但是跟H5相差都挺大的,我總結有三方面原因,第一是自動化,第二是完善的監控與告警,最重要的是我們從去年9月份開始了解到雲開發,從大概今年3月份嘗試引入雲開發,這讓做前端開發的工程師非常受用,終於不用想那麼多,搞那麼多的事情了。
我們是怎麼做自動化的?我們知道小程式開發流程至少有五步,第一步要做程式碼開發、第二步要編譯、第三步要上傳、然後體驗和測試、最終是釋出。這五個階段中開發這一步是必不可少的,沒辦法自動化,當然我們最終目標最好是能做到完全的自動化,例如產品輸入一個需求,立馬業務程式碼就自動生成、自動上線,這是我們最期望的。如果真做到這一步,那老闆可能會對我們說小程式三個人是不是太多了,工作不夠飽和吧,要不明天你就不用來了。
我們能做到什麼樣的自動化呢?編譯、上傳、測試這三步其實是大有可為的,而且是週期最長的三步。
像我們做了一套完整的持續整合系統,相當於把自動化過程全部整合起來,把倉庫拿到程式碼提交之後就會跑程式碼檢測,再去功能單元測試,功能自動化測試,再給這個小程式打一個版本號,通過用微信開發工具的自動上傳,最後生成一個二維碼交給產品體驗。這個流程已經做到了完整的自動化。當然小程式本身有一個登入30天就過期的週期問題,所以我們還會做一個自動續期的功能,會彈一個二維碼,掃一下就可以了。還有一個群機器人,如果出現流程中斷,我們通過這個機器人來完成。
還有實時監控和與告警,所有開發都會知道這個東西很重要,但是從我們開發的經驗來看,最終能做得好還能夠堅持下去的並不多。所以從一開始我們要規劃得特別嚴格,首先就要有一個很好看的圖表,意味著這個東西能不能堅持下去,能不能讓所有的人及時發現問題。所以我截圖了,來看一下第一個是小程式版本的覆蓋情況。第二是我們監控了雲盤數的效能監控的圖表,第三和第四個是小程式的核心功能監控,比如說閱讀器、首頁渲染監控等等。我們儘可能視覺化,不是單純一條線,讓所有人更清晰地看到這個過程才會讓它堅持下去,一直朝著正確方向走。
第三個是雲開發,雲開發我們用的最多的是其中三個部分:雲函式、雲端儲存、雲資料庫。其中雲函式是最多的,雲函式在我理解它就是在雲端執行的程式碼,而且天然有微信的私有協議,在安全性方面不用考慮。而且它通過L5和HTTP的協議打通了騰訊內網,相當於我們呼叫雲函式,雲函式呼叫微信讀書的後臺,這種情況下一直走的是內網。雲端儲存也就是我們可以當做CDN來用,雲資料庫就是在雲端的資料庫。(注:“小程式·雲開發”的Serverless架構包含兩塊:Faas(函式即服務)和BaaS(後端即服務)。FaaS提供的是按需執行的計算能力,而BaaS提供的則是包括物件儲存、資料庫應用、快取服務等開通即用的後端能力。)
02 | 為什麼要用雲開發為什麼要用雲開發呢?是因為我們在小程式開發的那一段時間裡確實是比較痛苦,一個是我們剛剛轉行做小程式開發經驗不足,也有一些原因是歷史包袱太重,特別是Node框架特別老,上線特別慢,特別煩瑣,最重要的還有一個原因是人力不足,這是比較客觀也比較難解決的一個問題。我們就去調研有什麼辦法解決這些問題呢?
剛好那時候發現了雲開發這種方式,首先它上手成本特別低,基本上是沒有什麼成本,第二是它跟小程式結合得非常完美,直接在小程式ID裡面開發就可以了。第三我們感受到了雲開發團隊確實服務特別到位,我們接入後反饋了很多個性化的問題,他們解決問題特別快,響應非常及時。還有一個非常重要的問題是服務特別穩,這也是我們後面堅定不移選擇雲開發的原因。作為一個業務,最需要的是發展,發展最根本的保障是要服務更穩才行,我們之前辛辛苦苦確實做了一些爆款出來,為什麼沒能夠真正爆起來,曾經有個原因就是因為我們H5的伺服器突然崩了,我們在微信裡面傳播預估的量和最後實際得到的量偶爾不太相符,出現我們以為這個活動可能是一百萬,但是最終發出來突然變成五百萬,一千萬。但是,小程式不存在這樣的問題,因為有云開發。
最後一個是價效比,我們是走內部結算,我們自己評估過,確實走雲開發會比我們自己建Node伺服器便宜很多。
雲開發在微信服務裡面有哪些運營場景?其實開啟微信讀書小程式,我們所看到的大部分功能其實都已經轉向了雲開發,我這裡介紹幾個我們認為比較典型的。一個是使用者最喜歡的微信讀書組隊活動,每週六開獎的活動,第二是翻一翻活動,這也是我們曾經做的一個爆款,因為受限於服務的問題沒能發展下去,但是小程式又把它遷移過來了。還有是讀書小隊、一答到底的小遊戲,會呼叫資料到後臺,讀書小隊和一答到底是獨立的結合了雲函式和雲端儲存、雲資料庫,基本上不需要後端後臺。雲函式+雲資料庫的模式更適用於單純獨立的業務,像讀書小隊和答題遊戲這種,後續我們會逐漸地加入原有的自建NODE的模式,用雲函式和雲開發來承載。
如何使用雲開發,具體到技術細節的呼叫情況,大家看一下小程式這裡指的是C端,Server是後臺,相當於是從後臺到前端的服務。這個是業務發展資料的報表,每天都會有一個這樣的報表出來,可以直接去查。
以讀書小隊為例,以前我們要做這樣的業務,會有一個前端的同學,一個後端的同學,NODE服務的同學,運維的同學,運維和後臺要做哪些事情?就像這裡說的負載均衡、安全、容量等等特別多的事情,一個純前端的同學是cover不住的,現在有了雲開發之後我們需要關注的僅僅是前端的業務程式碼和雲開發的部分就可以了,至於後面安全性的資料容量的問題,負載均衡的問題都可以交給更專業的團隊。
雲開發對我們產生了什麼樣的影響呢?
第一個是上線更快了。像剛剛介紹的一樣,上線在IDE裡面上傳就可以了,以前我們上線提單、歸度、測試,可能一個單上一個小時就過去了,一天能上幾個單。
第二是雲開發的方便性。剛才也說到,因為整合在一個IDE裡面,小程式有一個專案,Node有一個專案,後臺有一個專案,三個專案三個同學一起進行,還要溝通成本,我們現在完全在一個IDE裡面做完所有的事情就可以了。服務更穩這個也是有切身體會的,自從用了雲開發之後,所有的運營活動不管是突然增還是突然跌,再也沒出現過宕機的情況。
合理的分工這也是我最後面介紹的,雲開發改變的不僅僅是對業務的改變,對於我們開發同學也在潛移默化地發生著變化。以前有一個前端,有一個Node,還有一個運維的同學,現在前端的、後臺的和後面資料的,全部都是一個同學,也就是我們說一個業務或者一個需求就只要一個同學就可以完成了。相對於以前兩個同學開發一個需求,現在一個同學開發一個需求,自然迭代更快。同時作為開發本身,以前我關注的僅僅是前端方面的,作為前端同學也可能很困惑,我作為一個高階工程師,但是我做的事情永遠都只是集中在最前端,每天在調介面,改樣式,我的發展空間在哪裡,我怎麼向上晉升,這是一個很現實的問題,自從用了雲開發之後更廣了,可以考慮資料分析、服務,可以考慮服務的資源利用率,可以發展的空間更大了。