華爲雲官網負責人明哥:咱們是如何作到門面不倒,8個月挑戰業界翹楚?

本文分享自華爲雲社區《華爲雲官網負責人明哥:咱們是如何作到門面不倒,8個月挑戰業界翹楚?》,原文做者:華爲雲社區精選 。
image.pnghtml

4月的一個週五傍晚,剛剛結束一場語音會議的明哥,拿起桌上的咖啡,一口灌了下去。同時,翻了翻攤在右手邊的筆記本,思考即將拋給他的一些問題。前端

在華爲已經工做第15個年頭的他,目前是華爲雲官網研發團隊的技術負責人,看護着華爲雲對外的「門面」。程序員

做爲技術管理者,明哥有個小習慣,「天天給本身留一些靜默時間,在這段時間內,儘可能不處理郵件、工做信息,可以作一些代碼開發、review、技術研究的工做。」web

他還習慣把事務性的工做都安排在前半周,後半周能有相對完整的時間,和團隊的架構師、設計師系統討論比較大的技術方案。算法

在鑽研技術這塊,明哥喜歡往下走,去看它的底層運行機制,它的源碼。他也是 「一萬個小時定律」的擁躉者,始終堅信積累足夠的時間和精力,必定能在技術上有所建樹,舉一反三。編程

因此,他能和團隊僅用半年多的時間,完成一次幾乎不可能的挑戰。
segmentfault

再難,官網「門面」不能倒

在華爲南京研究所露天長梯的二層平臺上,一直豎着一塊海報板:二戰中被打得像篩子同樣、渾身彈孔累累的伊爾2飛機,依然堅持飛行,終於安全返回。後端

兩年前的下午,明哥雙手環胸站在辦公室的落地窗前,牢牢盯着這塊海報,思緒卻停在十分鐘前接到的任務上:他的團隊須要在有限的時間內,完成官網內容生產平臺的所有自研重構,且達到業界領先的水平。安全

這是一次走出技術溫馨圈的挑戰,放棄他們很是熟悉的技術架構,一切從頭開始,比如明明有一條高速公路通往終點,可是你不能走,你得本身新建一條。前端框架

這期間,華爲雲官網團隊既要保證平常業務的正常運轉,循序漸進解決各類業務需求,又要抽調出足夠的人手搭建新的內容平臺,時間緊、人手少、任務重。

在不斷的技術研討,重寫代碼,驗證測試後,項目的最小可用版本完成了showcase,彼時你們都頗有成就感,也以爲終於能緩一緩了。然而一個更緊急的任務再次拋向他們:爲了快速催熟產品,接下來的大促期間將直接使用自研系統。

此時離大促還有兩個月,開發團隊除了要分出一部分兵力生產頁面(爲了確保用戶體驗,頁面要全新設計),還要補齊高併發、高可用、安全可信等產品化所必須的能力。一般,這樣的能力通常至少須要3到6個月,才能打磨完善的差很少。

明哥和團隊只有背水一戰,那段時間裏,任務板上寫滿了被拆分的工做細節,新的方案不斷覆蓋舊的版本,會議室裏坐陣的技術專家走了一波,又新來一波……你們拒絕妥協,一門心思埋頭往前衝。
image.png

好比,爲了保證生產出來的頁面在任何狀況下都不能丟,設計團隊翻閱了大量資料,與安全、可用性、性能專家屢次討論和原型驗證,而後選擇了最‘冗餘’的方案,最終成功應對屢次突發狀況,經受住了大促的考驗。

歷時8個月,從項目啓動到第一個基於自研的內容生產頁面誕生,官網團隊交出了一份漂亮的成績單。

「挑戰很是大,但咱們成功了。」

與此同時,他們還「順帶」開發了一個PQP頁面質量平臺,負責自動檢查頁面上線前的內容質量,包括頁面的40四、敏感字詞、中英文單詞的拼寫、圖標的設計元素是否符合規範等等。

從接手華爲雲官網開始,質量就是懸在明哥頭上的達摩克利斯之劍。用他的話說,「質量這個東西,不出問題的時候你們不會以爲多重要,但凡發生問題,就會成爲衆矢之的,所謂善戰之將無赫赫之功。」

如何保證頁面質量穩定,這一點每每是很多前端技術人員忽視的。「咱們找諮詢公司,合做夥伴問了一圈,你們都沒有這樣的工具,更多的是靠流程保證,好比發現問題通知oncall,再逐層找到負責人。雖然管理手段可以運行下去,但效率過低了。」

因此,將這種「人拉肩扛」的問題處理方式,轉化爲工具能力,作成平臺去賦能,再貫穿到整個頁面的發佈流程,是一件成就感與挑戰並存的事情。

當前,PQP平臺已在華爲內部「開源」,包括華爲官網在內的80多個網站都已經接入,用於看護網站的內容質量。

談及質量,不只是頁面內容的質量,還有官網穩定性的質量。試想,12306的每一次崩潰,後面是多少用戶的吐槽罵聲。

爲了維護華爲雲官網的穩定性,他們也針對高可用作了多層保障,好比多副本的容災備份,數據多活等等,在全球4個地區的6個機房都安置了華爲雲官網的服務器,而且採購了4家不一樣的CDN廠商規避可能出現的任何主客觀風險。構建多個逃生通道,一鍵完成流量的快速切換。就像剝洋蔥同樣,剝開一層裏面依然保證無缺完好。

「華爲雲官網是咱們的門面,控制檯、後臺服務或許能夠掛,但官網就像上甘嶺的那面旗幟,哪怕是個光桿司令,我也不能倒,必定要豎在那裏。」

雲原生藏在業務裏

門面不能倒,爲了這個目標,華爲雲官網的架構以及生產發佈流程也在不斷優化完善中。

之前端框架爲例,React性能強大且靈活,Angular有豐富的組件,Vue簡潔易構建,選起來很有些亂花漸欲迷人眼。

明哥也曾陷入選擇何種技術框架的糾結中,團隊通過一番討論,選擇了一個折中的方式——他們和web能力中心定下原則:基礎能力團隊維護一套主流技術框架和組件庫,各業務團隊有本身的選擇權,能夠直接使用,也能夠根據須要選擇其餘技術棧,但核心是聽從統一的設計規範,達到即便不一樣技術棧生產的頁面也能讓用戶無感知差別的效果。 正所謂好馬配好鞍,讓開發人員根據各自看護的業務特性找到最匹配的框架。

但問題隨之而來,如何將這些新、老技術棧,以及不一樣技術框架生產的頁面放在一塊兒呈現給用戶?

華爲雲引入了微前端框架,讓各個小團隊,不一樣的技術棧都能共生。 微前端的目的是低耦合,它把各模塊之間的影響降到最低,各模塊能按需使用不一樣的技術棧,從而下降技術棧切換的成本,確保產品平滑過渡,避免一刀切帶來的質量風險。

同時,全部的服務都部署在容器裏的,一切皆代碼。諸如應用程序、中間件、底層操做系統都被打包成標準的包,無論在什麼環境,何時部署,模塊都是同樣的,不會出現由於系統、中間件版本、配置不一致引起的研發環境和生產環境狀態不一樣的狀況。這也是持續交付、快速迭代的基礎。

從人拉肩抗的低效率開發,到現在標準的頁面發佈流程,華爲雲官網的架構也進入到一個新的階段:後臺採用微服務架構,前端採用微前端架構,頁面上線遵照標準的DevOps流程,化繁爲簡,充分利用技術的特性,破除實際業務的瓶頸。

舉個例子,之前的網站開發無論是頁面功能,仍是頁面內容的變化,都繞不開發人員,網頁上任何一個細微的變化都得去修改html代碼或者CSS腳本。這種狀況下,隨便修改一個字,開發需求排下來,小半個月過去了。

爲了讓你們都能獲得「解脫」,因此有了頁面生產平臺,可讓業務人員自助完成頁面修改;有了可視化搭建,拖拽組件便可完成所見即所得的網頁製做;有了系統的內容質量檢測平臺,可以保證頁面的安全上線。經過IT化,讓全部上線動做都高效可控,打通官網內容DevOps的最後一環。
image.png

這也是明哥對於雲原生的理解,「雲原生自己並不能算一套架構,它更像是一個定義,一套方法論。 打開來看,雲原生無非這幾個關鍵元素:微服務、DevOps、持續交付、容器化。」

目前,DevOps方面,華爲雲有一套統一的發佈流水線平臺,全部服務均經過這個平臺發佈到生產環境;持續交付方面,華爲雲官網有65%左右的特性是經過按特性獨立發佈的,每週都會有幾百個特性發布到生產環境上。

讓子彈再飛一下子

康威定律裏曾提到,組織的架構決定了總體的技術架構。因爲華爲雲的前端和後端組織相對分離,雙方各司其職,技術溝通中不免會產生一些小的摩擦。不過,當前端技術浪潮洶涌而來之時,它也在試圖用技術去彌合人爲緣由形成的各類溝通問題。

以Node.js爲例,通俗點說它是運行在服務端的JavaScript,可讓懂JS的前端人員寫出簡單的後端服務,完成一些接口的拼裝。「經過Node.js,若是一個程序員針對一個簡單的需求,從前端到後端都由他本身來實現,因爲省去溝通成本以及同步版本發佈的動做,效率能提高30%。」

明哥表示,這就是咱們常說的「大前端」、「全棧開發者」。而全棧能力就是消解一些組織團隊互相配合產生的損耗,減小損耗,天然能夠給開發效率、模式帶來質的提高。

談到開發效率的提高,時下大火的Serverless正在掀起一場雲計算領域的革命,這場風暴也波及到了前端,對於此,明哥顯得謹慎不少。

Serverless勾勒了一個不須要搭建環境、部署中間件,沒有特定使用場景、業務類型,只需部署代碼的世界。這是技術人員的「烏托邦」,但明哥認爲當前的Serverless技術有必定的侷限性。開發團隊不可能只使用一種技術或者組件,而很多技術或者框架,是須要在中間件、操做系統層面進行分析調優工做,Serverless目前沒有達到這個靈活性和適配性。

華爲雲官網團隊也嘗試過應用Serverless提升開發效率,好比把一些後臺執行不敏感、可用性要求較低的服務部署上去,再經過定時器觸發,也能達到必定效果。可是隻要涉及到全場景,尤爲是多部件的解決方案,就不會考慮首選Serverless服務。

「可能我比較謹慎,有先進或者新的技術,習慣性觀察一陣子,讓子彈再飛一會, 技術成熟穩定後再跟上,那個時候也不晚。」

明哥在技術棧選擇這條路上也走過很多彎路,他認爲,前端團隊選擇技術棧必定要結合實際業務需求,再去觀察技術棧的生態是否是持續演進中,人云亦云、好高騖遠不可取,若是沒有合適的,寧願自研也好過妥協。

衝破技術標籤,視野決定高度

回望前端技術的迭代,能夠說是瞬息萬變,新的框架、組件庫層出不窮,新的編程語言一波波襲來……

涉獵不一樣技術棧的明哥一直在思索,技術的目的是什麼?在建設華爲雲官網的過程當中,他彷佛找到了答案。

以JAVA爲首的後端技術棧,在幾十年的迭代中,不管是技術語言,仍是框架都趨於穩定。相較之下,前端還朝着技術成熟曲線的峯頂狂奔中,將來也會逐漸從百花齊放過渡到一兩個成熟穩定框架一統江山,一步步補全整個生態的階段。

目前一些主流框架本質上也是大同小異,選擇一個領域或者技術棧深耕,愈往下探,愈會發現其中的一致性規律。

大浪淘沙中,明哥認爲比較有潛力和探索空間的三個技術方向是沉浸式、智能化以及低碼化。

首先是沉浸式的效果,所見即所得的前端正在追求更豐富的展示和互動形式。好比工業製造領域的仿真模擬,能夠對孿生的數字模型進行各類測試驗證。一樣,在前端領域,也能把產品可視化地呈如今網站上,讓用戶直觀地感知解決方案的運做模式。

說到這裏,他在空氣中比劃了一下,「你想象把後臺看不見摸不着的一些組網解決方案搬到前臺,方案中的流程、數據流動都是能夠看獲得的,很神奇, 但也很是考驗後端數據和前端渲染能力的結合,不過咱們正在努力。」

第二個是智能化,一方面華爲雲官網團隊會在搜索和推薦中進一步優化智能算法和策略,達到精準的千人千面智能化推薦,提高用戶的註冊轉化率;另外一方面,團隊會在內容的智能生產方面,包括文章、圖片、廣告等,作出更多的探索,協助運營人員、業務人員生產出更高質量的內容。
image.png

第三個方向是低碼化,如今多數業務人員能夠自主生產簡單的頁面,涉及一些複雜頁面纔有開發人員介入。之後,不管是面向運營人員,仍是最終用戶,愈來愈多的頁面、接口、流程都會經過低碼化或者無碼化的方式實現。

前端新技術的出現,最終目的仍是爲了可以響應業務,快速地解決生產、運營的需求,這也是全部技術都在探索的方向。

到了這個階段,大前端的範疇也在擴充,明哥也更習慣站在架構師的角度去看面前呈現的這些網頁,觀察它們背後的一系列邏輯。「但凡涉及到用戶可感知的內容,其實都是大前端要關注的,對於前端人員來講,前端不只是一個技術,它更像是一個目的。」

最開始,前端這個概念在業界比較模糊,前端人員都自嘲「切圖仔」,也沒有如今流行的三大框架,混沌初開,你們都摸着石頭過河。

這個時代已經一去不復還,現在的前端人員,技術是基礎,在此之上的思惟和視野則決定了技術的高度。

「好比你們經常在論壇上爲哪一個編程語言最好而爭得面紅耳赤。其實,囿於一個技術的優劣,就是在給本身貼標籤。就像有的前端人員會糾結技術路線,認爲寫頁面看不到發展空間,這是把本身困在‘前端’的標籤裏。」

「若是你的定位是一個簡單的開發,一項技能足矣。但想要成長,得學會跳出那個圈子,換種思路,好比以提升用戶體驗爲目標,能夠學的技術就不僅是某一個框架或語言。在此過程當中,將自身的技術能力和定位從開發人員向架構師,乃至CTO的標準去提高。」

心中有教堂,月亮和六便士,均可以擁有。

福利時間到:

歡迎你們到原文(https://bbs.huaweicloud.com/b...

福利一: 看完華爲雲官網的業務實踐,以及明哥對前端技術的思考,若是你也有業務或者技術上的疑惑,在評論區留言,明哥將空降評論區,現場答疑解惑。

福利二: 分享本文到朋友圈,截圖私信【華爲雲社區精選】,小編將按點贊數選擇前3位贈送前端大禮包,內含首次公開的華爲雲官網內部資料,以及明哥推薦書籍《領域驅動設計》一套。

點擊關注,第一時間瞭解華爲雲新鮮技術~