《運維價值新主張:精細技術運營優化》要點:
本文介紹了運維價值新主張:精細技術運營優化,希望對您有用。如果有疑問,可以聯系我們。
作者簡介:
熊普江
騰訊 架構師
2016年度運維工匠 ,負責公司業務資源規劃與技術架構評審等工作.自1997年涉足互聯網,曾服務美國 Supreme、太平洋網絡、PPTV 等技術與互聯網公司,任網絡營運總監、運維總監等職務,2012年加入騰訊.逾17年互聯網從業背景,擁有豐富的大型網絡架構規劃與建設,海量用戶平臺規劃與營運技術支撐,超大規模業務資源規劃與技術架構管理優化等經驗.
除了保障業務系統穩定高效安全運行,運維還能做些什么來體現自己的價值?聽聽騰訊架構師——熊普江怎么說.
今天我給大家分享的主題是運維價值新主張.講這個話題之前先簡單介紹一下自己,其實大會的宣傳材料里已經有些介紹,我在運維有十多年歷程,經歷過從一個工程師開始做到運維總監.
我是2012年加入騰訊,目前在騰訊主要是在公司運營管理部,負責公司業務的技術架構評審,以及業務資源的規劃.大家可能對這個工作內容沒什么概念,其實業務資源的規劃,講通俗一點就是容量管理,這個咱們做運維的可能就都比較清楚了.
資源規劃或容量管理跟我今天的主題也是非常相關的,就是精細化技術運營,我們怎么樣通過技術的手段,精細化運營管理,突顯運維價值.
今天我將從這五個方面給大家做分享,特別值提一提的是,我會根據現在網絡變化,結合微信的案例,談談技術上怎么做精細化運營,來給公司,給業務帶來價值.
我們先對運維價值做些思考,什么才是運維價值.
傳統的觀點運維就是保障業務運行得穩定、高效、安全,但到今時今日,這個運維價值的觀點是不是足夠了呢?這張 PPT 的右邊,我放了張圖,是美國海軍陸戰隊的照片.
我們都知道,他們非常厲害,團隊的人不多,平時訓練非常注意細節,準備得非常充分,但一旦決實做一件事的話,非常高效的做出來,真正做到達到保護美國公民和領土的安全.
我希望咱們運維也有這樣的價值,成為公司的核心競爭力之一.這就是我們要思考的地方,做運維的價值到底在哪里?我認為價值包括兩個方面,一個是我能夠幫到用戶提供價值.用戶的價值在哪里?用戶用得爽,能夠滿足某項實際需求,給他節省時間,節省錢,這都是用戶價值.
同樣道理,對公司而言,還為公司帶來價值.那怎么給公司帶來價值,價值就包括能夠幫助業務發展,能夠改進我們的產品,從運維的方向幫助產品做到極致,這也是運維的價值.所以從這些方面出發,現階段我們應該去做更深入的思考,而不僅僅是只把系統運行穩定就行,這個已經遠遠不夠了.
現在是移動互聯網時代,大家用微信用得非常多就是一個實例.實際上手機基本上成我們的器官,可以幫我們溝通、感知、處理事情.相信大家有這樣的體會:可以不見家里人,不見朋友幾天都沒有問題,但是如果離開手機,幾個小時都會焦慮不安.這就是現在非常明顯的變化.
移動互聯網改變了我們的生活方式,在進入的移動互聯網時代客觀事實下,我們會有什么樣的挑戰?我們從幾個方面來看.作為運維,首先要關注的就是移動終端上的用戶體驗,我們不再僅僅考慮PC或者其他的業務服務的體驗,而應該把重點放在移動終端上.
移動終端有什么特點?比如WIFI的邊界是模糊的、開放的,會有安全問題,所以我也會講到它的安全方面.包括流量的開銷,怎么樣能夠為用戶省流量,在PC時代是不會有這個考慮的,或者說這不是我們考慮的主要因素.包括用戶的存儲容量管理,這都是需要考慮的方面.還有一個特別重要的就是耗電,在傳統的PC時代肯定是不會考慮這些方面的,所以這是我們新的挑戰.
我們要考慮的挑戰,第二就是網絡.網絡跟以往的PC時代的互聯網也有很大的不一樣.首先網絡具有“中國特色”的互聯互通問題,本身是PC時代就有這樣的問題,它非常復雜.原計劃2016年三大運營商互聯互通要做到6個多TB的,但是一年下來也只完成了800多GB,所以中國的網絡的互聯互通還是個很重要的問題.
其次,移動時代的網絡復雜性還在于手機跟基站之間,手機跟WIFI信號經常忽強忽弱.還有協議的轉換,移動的協議與互聯網TCP/IP的協議還是不一樣的,有轉換的過程.再還有終端是各種各樣的,除了知道有蘋果手機之外,在中國還有五花八門的手機,不僅是各個品牌的,還有各種型號,各種配置,都是比PC時代復雜非常多.
還有一個特別重要的地方,剛才講過,我們離不開手機,手機隨時跟在我們身邊,晚上睡在床上也可以用,甚至中間睡醒也要看一眼手機上的內容.這時候跟以往也不一樣,用戶是時時刻刻在線的.這個時候要考慮做好運維的話,挑戰是不一樣的.
在移動互聯網時代,由于使用方便,還帶來一個挑戰,就是傳播擴散非常實時.比較大的挑戰在于如果好與不好的事情是傳播得非常快,馬上全世界都知道,突發性也更加明顯.這對灰度的要求,對容災預案的要求就更高了.
我們看PPT上的一張圖,以往可能不會擴散這么明顯或者影響面這么大的事故,比如說亞馬遜云就是因為腳本里面少了一個字母導致亞馬遜宕機了四個小時;還有Gitlab也是因為敲錯一個命令刪除了整個數據庫.這個問題擴散得非常快,影響傳播得也非常快.
還有移動時候的突發更明顯,右邊是春節紅包的圖,可以看到在1月1號跨年的那一瞬間,峰值比平常數十倍的突發,這時候怎么應對這種峰值壓力?都是帶給我們的挑戰.
這里就引出怎么做好新形勢下運維服務的保障.在移動互聯網時代,一個特別要提醒大家注意的,就是要做到有損服務.特別是手機用戶非常廣,海量用戶情況下,我們要做到有損支撐.可以看到經常見的幾種業務請求的類型,有高峰型,比如說秒殺、雙十一活動,還有設備發生故障的事件型.
在移動互聯網時代下,每個時刻我們要充分做好預案.如果我們系統的容量一定要支撐這些峰值的話或者突發量的話,代價是非常高的,而且會導致我們疲于奔命.
所以要求我們做好各種預案、各種容災以及各種開關有損服務.大家都用微信,應該記得知道我們在2016年春節,有一個朋友圈紅包看照片,微信就做得非常好.
在上線前就已經做好了各種柔性開關,可以在任何時間上去,也可以在任何時間下掉,這就是開關的作用.所以如果做到有損的話,對業務的穩定性帶來非常大的幫助,這個穩定性也是業務的價值體現.
我剛才講到了在移動互聯網上面運維新的挑戰,接下來我們結合微信看一看,怎么做技術的精細化運營,體現出運維的新價值.業務資源規劃或者講容量管理,往往也是我們運維要做的管理.容量管理一般針對的是設備、服務器和帶寬以及專線這些資源.對于設備的精細化運營,將以微信的幾個例子來說明.
微信是一個非常海量的服務,在全球的微信注冊用戶是超過20億,月活數據現在是9億,每天收發消息量是超過5千億條.要支撐這么大體量的消息收發,肯定需要很多設備資源來支撐,我們怎么做能夠使得既保證業務發展又能體現我們的價值.
我先講幾個數字:在2014年我們通過技術精細化運營,單微信就節省了9千臺設備.9千臺服務器什么概念呢?單采購的現金流大概是超過1.7億.盡管可能我們很多業務不一定有這么大的體量或資源用量,但從數字上看,節省了1.7億現金流,相當于我們運營直接給公司創造了1.7億的利潤?這是非常有價值的.
具本到收發消息,表面是上我們發一條消息出來,推送出去,對方收到.但實際上并不是我們想象的那么簡單.仔細來看,技術上要實現怎么保持連接,發一條消息的流程涉及有,接入處理,帳號及狀況信息處理(如要驗證這個賬號是否有效,屬性,狀態,是否登錄,是否有權限發,是不是垃圾信息或者有害消息,對方是不是好友),獲得發送消息的序列號(它保證你這個消息是唯一的,不會丟消息的,這就是序列號的服務).
有了序列號之后,才會將消息組合發過去,存到對方的索引下面,存好之后;才會推送一個新消息或通知到對方手機上,有新消息到了.
也就是說發一條消息這么一個簡單的動作,也是要經過很多處理的.幾千億消息的體量,顯然它的資源使用是跟消息量直接相關.我發1千億條消息,假設用了2萬臺服務器,如果我要發5千億條消息,原則上直接要漲到10萬臺.這顯然不可接受,我們就要考慮發消息到底占用了哪些服務器資源.
首先我們能不能把提升操作系統單機網絡包處理能力,比如說多核并行的處理能力;我們能不能減少調用的層次,不用調用這么多.怎么減少?當然是有一些技巧的,比如說兩個人已經在會話狀態,是有些調用流程或步驟可以省略.我在這里列出的只是一部分,實際上調用關系是非常復雜的,在某些情況下還可以省掉調用層次.
還有就是收發消息很不均勻,落在每臺服務器上的處理量差異非常大,最開始我們發現不均勻的現象非常厲害.我們知道服務器擴容的時候都是按照峰值來擴容的.這會在擴容的時候,這種調用量的分配不均的導致很多資源用不起來.所以我們就會考慮優化,盡量使得所有調用請求平均分配到每臺服務器上,或者根據服務器的能力來均衡分配.
而且,有些請求是可以合并的,合并就減少了很多網絡調用也提升了性能.
還有一些模塊比如春晚很多人都發紅包,其他一些部分的功能模塊使用量就會相對比較少,這時候就可以在其他功能上布置發紅包模塊,這就是錯峰調用.
新服務區也是,新功能上線后跑多少業務量很難預先知道.甚至也許這個新功能業務壓根就發展不起來,或者這個功能并沒有預想的那么多人使用.如果我們申請了一堆機器的話,可能就產生浪費.所以我們針對新功能新業務,設立一個專區,這個專區專門用來上線新服務.
就是說這個新服務不會單獨部署,除非它的請求量或者調用量達到了一定程度,我們才給單獨拿出來.其實我們知道,新功能或者新產品,成功率還是非常低的.真正有發展比較好的再單獨部署,這就是新服務器的管理.
設備要做精細化運營,要求我們深入到業務里面去.我們來看一個微信里的收藏視頻功能.我們知道很多消息或者重要的東西是可以收藏的,最早這塊的產品設計,視頻收藏起來之后可在收藏里是有兩個操作:一個是直接播放,一個是下載.之所以這樣設計,是為了用戶可以收藏里直接播放,這也是合理的產品設計.
但我們發現,要達到直接播放,要投入很多的東西,因為我們發的消息都是加密的,如果我要單獨播放拿出來的話,要給它解密,放在一個地方,所以多了一份存儲出來.要知道收藏是永久保存的,跟消息不一樣,消息收完了就可以刪掉,這個收藏和朋友圈的內容都是永久保存,這個量會越來越大,經過短短三年發現這個存儲量已經到達7個P,這是巨大的量.
我們通過數據看,實際上從收藏里面直接播放的量,一天才幾萬的級別,而我們卻花了非常大的代價.給用戶一個看似很合理的功能,我們通過數據分析,發現這理很不合理.
我們反饋給產品,取消直接播放的功能,節省了大量的存儲設備資源.通過這個例子我們可以看到,產品設計也可能存在不合理的地方,我們要有數據來分析說明,有些地方是可以優化改進,用戶體驗、用戶價值都能夠得到提升.
我們再來看朋友圈精細化運營的例子.微信朋友圈相冊內容是永久保存的.朋友圈實際上有兩塊存儲:
一個是時間線,是咱們看好友動態內容的,時間線只保存最近好友所發的2千條狀態內容(如果要看超過兩千條只能去點某個用戶的個人相冊);
另一個是個人相冊,只存放自己發表的內容.個人相冊保存了用戶發第一個朋友圈消息以來的所有數據.
用戶發一條朋友圈實際上有兩個存儲動作,一是在自己的個人相冊中存儲一條朋友圈消息;另一個是在未屏蔽的好友的時間線里去插一條記錄,這樣用戶的好友就能看到這條朋友圈信息.顯然,時間線的存儲基本是因定的,不是隨時間推移而增加.但個人相冊則會累積增長,所以我們重點要分析個人相冊的存儲.
朋友圈的個人相冊中,每天有數十億的照片上傳,有過億的小視頻上傳,每天下載有幾百億次,顯然新增的存儲量是非常大的,由于要為用戶永久保存,都是剛性增長.如何精細化?
我們還是做數據的分析,這也是我后面會講到運維的未來重要的思考點.我們通過數據分析發現,人們訪問朋友圈,基本上70%的請求都是請求當天的數據.
而這70%的訪問請求量所對應的數據存儲量,只是占0.3%.還有一個數據,就是90%的訪問請求都會落在一個月里,即90%的朋友圈請求都是訪問一個月的數據,而這個數據也只占總數據量的6.5%.有了這個數據,我們就可以推動整個數據架構做改變.
同樣,針對帶寬資源,我們也可以進行精細化技術運營,還是以微信為例.我們先看下圖右邊的一組數據:2015年做微信的帶寬精細化運營,單月最高節省了3.5T的帶寬,這會節省多少成本呢?一個G可能最便宜的帶寬都要有一兩萬一個月,3.5T的話一個月就是幾千萬,前年我們是節省了8個億的成本.
2016年同樣做帶寬的精細化運營是節省了6個T的帶寬,給公司節省的成本是14億.也就是我們通過這些技術的精細化運營,可以推動業務進行架構升級,體驗改善,提升用戶價值.
帶寬的精細化技術運營是怎么做呢?一般我們會有幾個步驟,先把帶寬拆細,拆到每個最細的業務模塊上,會建一個跟帶寬相匹配的業務資源模型,而且應當以公式或函數來表述這個模型.
比如說朋友圈的富媒體–小視頻,它的帶寬模型主要影響因子是下載次數和平均大小,基本上就可以得出一個模型:峰值下載次數*平均大小.
有了帶寬資源的因子,我們就可以給出優化的建議.優化后還要再反過來分析數據,看我們所做的這個優化是不是合理,最后發現問題,再來解決.由于產品會升級,有些優化措施或手段會失效,因此,這個精細化運營需要一直持續不斷的做,包括今年也同樣在推動微信做帶寬的精細化運營.
像 PPT 右邊的對話框里的樣子,這就是公眾號推送過來一條消息.點進去就是一整篇文章的詳情.
分場景來看的話,公眾平臺的帶寬主要消耗在看會話框消息、看正文(文章詳情).包括我們會點文章里面的大圖,還會看一些歷史消息.文章里面的圖片又有幾種,有640,有300等規格的.
最早的時候,我們甚至發現這個產品,這上面的圖沒有640和300之說,全部是使用原圖.因為公眾平臺的文章大部分帶寬都是消耗在圖片上的,圖片有很多格式,主流的格式基本上就是 JEPG,WEBP,PNG,GIF.
數量上以 JEPG 為主,尺寸也不小,但是不是最好的圖片格式呢?而 WEBP 相比JPEG 小30%-40%,我們就有想法,是不是把 JEPG 盡量轉為 WEBP?我們還發現,GIF 只有 7% 的請求量,但是這占了60%以上的帶寬,顯然我們要重點優化這個 GIF,這就是我們通過精細化數據,可以做出一些優化.
GIF就是動圖,很多動圖我們可能都看過了,是不一定看的.正常情況下,GIF動圖需要全部請求拉下來并自動播放.因此,我們就想能否做成不自動播放,可以只拉第一幀,如果用戶想看動圖,再點一下就可以播放了.
所以我們就做試驗,發現用戶有點擊GIF欲望的比例只有8%,如果?GIF?做成這樣的話,可以節省85%的帶寬,這是一個巨大的優化點.
還有很多優化點,比如用戶自己做的GIF,采用了很多幀,有些是則不是必須的.還有顏色,比如說左邊的這張圖是128色,右邊是64色的,不是很復雜的需求的話,比如一些示意圖,并不需用很高的色彩像素.
另外,未來GIF還可以轉為HEVC,這個可以再節省了30%的圖片大小,所以要關注一些新技術的變化,包括谷歌最近也提出一個RAPID技術理論,可以通過AI預測把圖片復原,一個馬賽克圖片也可以復原出來,如果能夠做成這種,就可以很少的存儲和像素,同時保證精度很高的圖片.
我們再講微信的視頻的例子.C2C就是用戶對用戶的意思,微信里面的富媒體消息非常多,這些富媒體消息拉取占了帶寬的大頭.事實上微信里面80%的帶寬是來自于視頻圖片,我們要精細化的時候就要看重點看.
提高壓縮率,合理的質量系數這些優化方向與優化點都很好理解,就是我用新的格式可以壓縮率更高,質量又不變化.也可以調質量系數,把質量調低一點.
我這里主要講邊下邊播這個優化點.早期版本的微信,我們發一個視頻消息,需要等待這個視頻下載完成才能播放觀看;現在已經不是那樣,立即點開就馬上可以播放看了,這個就是視頻的”邊下邊播”.
早期我們收取視頻,往往可能要等幾秒或者十幾秒鐘,下完點開播放,發現是看過的,會馬上關閉掉,這實際上是浪費了很多帶寬,更重要的是,還浪費了用戶的時間.如果改成邊下邊播的話,體驗會提升很多,用戶一點就可以開始播了,而且不必下載不想看的部分,這是我們推動做的比較大的一個精細化優化點.
最后講一下“減少變種”這個技術精細化運營點.視頻的變種是很容易產生的,比如我們看到一個視頻想轉發出去或者保存下來,就可能發生變種.因為我們在上傳的時候可能會缺少一兩個象素,整個文件就變了,還有一些人會改視頻的描述,還有手機終端不一樣,壓縮的時候也有不一樣,所以會造成同一個視頻,有很多種變種,這里一個技術的價值就出來了:減少變種可以大幅減少存儲空間,提高 CDN 命中率.最終我們使用創新的技術手段讓變種減少.
傳統的方法判斷一個視頻是不是一樣,都用 MD5,MD5 的局限性太多.我們實現有一種自研的算法來判斷視頻是不是同樣的視頻,主要原理是會抽取一些關鍵的信息來判斷是不是唯一的.
最后我們歸納一個精細化運營的方法論.不管是設備也好,帶寬也好,要把它細分,細分到我們能細分的最小力度,把資源大頭拉出來,因為我們的精力有限,不可能看所有東西.我們只需抓住TOP5或者TOP3解決掉就可以了.所以我們要?抓大放小,最后就要設法建立這種模型,看技術架構是不是能夠優化,算法是不是能夠更優,甚至是有沒有新的技術可以應用.
除了技術手段,還有就是?產品運營策略?也是精細化運營要考慮的.比如以往版本微信里發的朋友圈是小視頻,是很小尺寸的.隨著手機終端硬件改進及網絡條件提升,我們還要進一步放開用戶體驗,比如小視頻尺寸調整為全屏了.全屏上看,用戶體驗改進了很多,但是像素多了,畫面大了,帶寬與存儲空間都有更大的壓力.
這時我們就從產品運營策略出發.以前我們朋友圈小視頻是直接自動播放.朋友圈有小視頻,看到就是自動播放的.自動播放當然有好處,它會增加用戶的活躍度,因為一看到就知道視頻好不好,甚至可能會參與評論或者轉發.
自動播放顯然會浪費我們的帶寬,特別是像素提升之后,變成大的視頻的話.后來,我們將產品策略修改為:用戶點擊才能播,所有東西都在變化,所以我們要不斷的升級.
結合我剛才講的,我們發現通過精細化技術運營是可以幫我們做出更大的價值,幫助公司提升產品的體驗,能夠帶來更多的成本節省,甚至說是創造收入.
精細化技術運營是運維價值的新主張,但我們也要思考,未來運維的價值還會在哪里?
運維也是可以成為企業的核心競爭力,我通過這種精細化的技術運營,能夠改善產品的體驗,能夠給用戶帶來價值,能夠降低我們的運營成本.今天想講的運營新主張就是讓運營成為公司的核心競爭力.
文章源自微信公眾號:高效運維