雲計算

我心中的雲時代原生開發環境

image.png

緣起,為了心中的“雲+端”

2015 年,一個偶然的機會,我從淘寶來到了阿里雲。

那個時候正是阿里雲全面商業化的前夕,我當時正在淘寶前端技術部,與 @圓心 @元彥一起,跟手淘客戶端的同學共同完成了前端代碼 “Write once, Run anywhere” 的 POC(概念驗證),前端 All in 無線的序幕即將拉開。

一天,@叔度找到我,跟我分享了他眼中的雲計算未來與現在的痛苦(其實就是想拉我過去幫他做控制檯 [手動狗頭])。我和叔度是在做性能對賭項目中結下的友誼,而且對於推崇顏值即正義的我來說,叔度也是近乎男神的存在,我願意繼續往下聽。後來我們一起再跟 @老石頭聊完後,我心裡有了一個大概的概念,雲計算正在開始改變中國,而基礎設施、阿里雲的用戶入口、控制檯,還停留在內部孵化的狀態,無論是從效率還是用戶體驗上來看,對阿里雲接下來的商業化都是個巨大的阻礙。

最終我決定加入阿里雲的思考是這樣的,雲計算如果是未來社會和商業的基礎設施,那未來的應用開發應該都會是基於 “雲 + 端” 的模式,服務在雲上,應用和交互在用戶側,這對前端行業來說,是一種開發模式的演進,對一個前端同學來說,是充滿了想象與挑戰的,我們需要開始去探索這個領域。現在眼前的機會不正是前端和雲結合的契機嗎?我跟 @圓心溝通後,很快得到了支持,並且給了我很多建議,我想,這大概就是英雄所見略同吧。

讓雲計算開箱即用

為了引導團隊的方向,也為了不被現實的困難壓力以及執行過程的瑣碎導致迷失,我帶領我團隊的同學共同確定了我們團隊的使命,讓雲計算開箱即用!

初心很簡單,讓用戶能高效地在雲計算的入口完成他們的任務。

隨著規劃的推進,我們逐漸收斂了阿里雲的控制檯技術體系,不僅成功支撐了阿里雲一方、二方產品在 7 大市場渠道的極速擴張,也逐漸統一了用戶體驗,這就是今天阿里雲的 OneConsole 控制檯中臺體系。OneConsole 的誕生初期,我們曾做了一個決策,所有控制檯的功能透出,只接受開放的 API,也就是說,我們官方做的控制檯,理論上,我們的客戶也是完全能基於同樣的 Open API 去實現的。也正是這個決策,我對 “讓雲計算開箱即用” 有了新的理解。

當我們自己用阿里雲的 Open API 做控制檯開發的時候,我們遇到的第一個問題就是,我們沒法快速弄清楚某個雲產品有哪些 API,每個 API 是什麼功能,輸入輸出是怎樣的;第二個問題是,我們沒法調試這些 API,因為我們使用的 Open API,都是真實線上服務的雲產品,每個參與開發的同學都需要有帳號,都需要購買。為了解決這些問題,我們孵化了 API Explorer,孵化了 API Mocks。

當我們的產品從十幾款擴張到兩百多款,曾經的幾個大產品也變成了幾條大產品線,大家又面臨一個問題,面向端的開發要聚合越來越多的雲產品原子 API 才能拼接出一個 UI 所需的數據,同學們迷失在了 Open API 的海洋,雖然後來我們又孵化了一個新的工具,邏輯編排去解決這個問題,但這也讓我再次思考。

什麼是雲計算的開箱即用?

要回答這個問題,先要對 "誰用" 保持一致的理解。之前剛做控制檯業務的時候,我會認為,這個 “誰”,是使用控制檯的用戶,但是自從我們開發控制檯要用雲產品的 Open API 之後,我發現,開發態的我們,才是這個 “誰”。可以將阿里雲控制檯理解為我們基於阿里雲的能力創造出來的一個 SaaS,在控制檯操作使用的用戶其實是這個 SaaS 的客戶,只不過,這個 SaaS 背後管理的也是阿里雲的資源而已。

我目前所理解的,雲計算的開箱即用,面對的應該是廣大的開發者。他們希望利用雲計算去更好地創造自己的技術價值、公司的商業價值、社會的普惠價值,而云計算正是可以幫助他們做的更好的載體。

說到雲計算應用的現狀,在撰寫此文的時刻,我一直有一個類比,就是計算機的 DIY 時代。

人類和其他物種的重要區別就是能夠製造並利用工具。計算機作為一種高科技的技術產品,極大地改變了人類的工作和生活方式,今天,它以不同的形態滲透在人類世界的方方面面,醫生看診、教師備課、商人經營、工廠生產,每個行業都在利用計算機幫助自己更好地工作。

普遍情況下,人們要做的就是買一臺預裝了操作系統的電腦,動手安裝上自己需要的軟件,就可以開始工作了。而在二十年前,這個過程是這樣的:人們去到電腦城,從學習採購配件開始,然後再組裝、安裝操作系統、安裝應用軟件、開始工作。

  1. 電腦有主機和外設
  2. 主機有:主板、電源、CPU、風扇、硬盤、光驅、內存、顯卡、聲卡、網卡、數據線、電源線、機箱這麼多配件構成
  3. 外設有:鼠標、鍵盤、顯示器、音箱、打印機等等
  4. 把這些配件逐個安裝連接起來
  5. 通電,期望不要聽到主板報警音
  6. 進入到 CMOS Setup 做一些硬件的配置,比如系統啟動引導順序之類的
  7. 開始安裝操作系統,又是一個專業領域,學會了以後,又多一個征服小姐姐、小哥哥又或是長輩鄰居的硬核技術 [手動狗頭]
  8. 開始安裝自己真正想要應用的軟件
  9. 開始工作?再裝幾個遊戲先玩一下吧 [手動狗頭]

我也經歷過 DIY 電腦的年代,那個時候是一種什麼感覺?自己開始只是想買臺電腦學編程,結果選配電腦的時候就想進入了一個新的知識的海洋,不斷接觸和學習著新的知識,CPU 要怎麼選,超頻要怎麼做,對應的散熱要怎麼做,等我最終確定了採購清單,一個月已經過去了。因為學的太認真,有一段時間我甚至在電腦城幫人打起了暑期工,幫忙組裝電腦,我想知道有跟我類似經歷的同學嗎?[手動狗頭]

回過頭來看今天的雲計算,和二十年前 DIY 電腦的年代何其相似。人們期望藉助高科技雲計算幫助自己更好地工作和生活,於是,大家不得不開始在雲計算的知識海洋努力地學習:

  1. 阿里雲原來有這麼多雲產品啊,數一數,兩三百款
  2. 服務器、存儲、數據庫,每個類型下面又有十幾款產品,得好好想想選哪一個
  3. 同一個產品還有不同的規格,不同的規格我能看到價格不一樣
  4. 所以,我到底該怎麼選呢?還是隨便買一臺服務器,然後把我的應用、數據庫、文件都塞裡邊吧

這就是剛接觸雲計算的開發者的普遍真實寫照。

作為雲廠商,我們的願景是成為社會和商業的基礎設施、水電煤、成為普惠科技,但我們離真正普惠還有一段距離,至少要做到跟今天的計算機之於社會,人們不再需要去學習瞭解電腦的構成,只有跨過了 DIY 這個階段,讓真正想通過雲計算去創造價值的開發群體能夠無需關心雲計算的基礎底層概念,可以聚焦自己的業務開發,在業務中需要雲計算幫助的時候,我們能以近乎無感的方式提供服務,這就是我心中認為的雲計算的開箱即用。

這看起來很難,直到函數計算的升溫,CNCF 為代表的雲原生概念的普及,讓我看到了希望,我開始了持續的搬磚。

在雲原生的路徑上探索

星星之火,可以燎原。隨著諸如 LeanCloud 商業化、阿里雲函數計算的發佈,讓我內心的熱火徹底被點燃,類似 LeanCloud 背後的 BaaS(Backend as a Service,雖然後端即服務的概念早就有了,但現在 BaaS 已經被更多人認為是 Blockchain as a Service,真是世風日下 [手動狗頭])概念,讓我看到了雲計算開箱即用的可能;函數計算的支持不同開發語言的自定義運行時,支持函數的實時彈性,讓我看到了雲計算開箱即用的可能。

試想,如果未來的應用開發,開發者通過函數計算去承載自己的業務邏輯,計算、存儲、數據庫等能力通過 Backend as a Service 的方式去獲取,是不是就意味著開發者已經大致具備我們所設想的雲計算的開箱即用模型呢:讓真正想通過雲計算去創造價值的開發群體能夠無需關心雲計算的基礎底層概念,可以聚焦自己的業務開發,在業務中需要雲計算幫助的時候,我們能以近乎無感的方式提供服務!

基於對這種趨勢的預判,我開始在雲原生的路徑上探索。

1 自身業務領域的探索

2018 年作為阿里雲控制檯發展開放元年,越來越多的控制檯後端統一到 OneConsole 的同時,我們也發現很多業務定製化要求高,部分功能沒辦法使用 Open API 開放出去,比如 HOME、阿里雲 APP 等,而這些非標、強定製化的應用,開發者一般都對雲上商業化流程不熟,對雲上運維不熟,只能負責好自己的應用邏輯,這正是一個很合適的 Serverless 平臺場景。我們對 OneConsole 進行了 Serverless 微應用升級,讓 OneConsole 可定製,讓上雲更容易。在前端,我們也進一步擴大邏輯編排在的控制檯前端開發的價值,形成了一套[控制檯 SFF(Serverless for frontend)的研發模式,進一步解放前端生產力,讓前端從某些繁重的、低水平的重複勞動中釋放出來,能夠有更多的機會和時間深入到業務中和前端領域的深水區,做出世界一流的產品和技術。

2 集團前端委員會的探索

2018 年初,@圓心帶領集團前端委員會及部分 P8 同學共創,我們共同去看到和佈局未來的前端發展方向,我分享了對 “雲 + 端” Serverless 方向的理解和看法,隨後也得到了大家普遍的共鳴,大家一致認為,這是前端應該去提前佈局的方向,從此,由我來牽頭,正式開啟了集團前端委員會 “雲 + 端” Serverless 的技術方向建設之路。

3 巧婦難為無米之炊

項目啟動後我們發現集團內根本無 Serverless 資源可用,於是我們花了大半年的時間在集團內佈道,推動阿里雲 ECI、Function Compute 部署到集團混合雲環境,推動 CSE fn 的誕生以及 Aone 底座的改造,直到 2019 年上半年,我們才正式 KO 了阿里經濟體前端委員會 Serverless 研發體系共建項目,並在 2019 年的雙十一,伴隨經濟體核心業務 100% 上雲,經濟體前端實踐 Serverless 研發模式升級也經歷了它的第一次大考,全部試點業務都穩穩地經受住了考驗,驗證了項目組的共建成果,而接下來就是展示資源利用率以及研發效率提升的關鍵階段!

4 開放社區的佈道

2018 年至今,我一共參加了大概 10 場開放社區的分享,相對經濟體內的 Serverless 資源匱乏,開放的社區生態完全可以擁抱阿里雲等公共雲資源。

5 開放社區我們看什麼

看開發者關注什麼,看僱主關注什麼。在普遍的 web 應用開發中,一個最精簡的研發團隊都需要前端工程師、移動端工程師、後端工程師、運維工程師,按照 2018 年 Stack overflow 做的全球開發者調查報告開發者年薪數據來看,一個最小研發團隊,上述 4 個崗位 * 2(最小 Backup)= 8 人,僅薪資部分的投入就需要美元,而這種現狀完全有機會通過雲端研發模式去重新定義:一個最小研發團隊的構成可能只需要個雲端應用開發工程師,假設這個工程師的年薪給到之前個工種當中最高的檔位,即 74,000 美元,兩個也就是 148,000 美元,兩個研發團隊單位時間內的交付是等價的。對研發崗位而言,薪酬普遍得到了提高,對僱主而言,研發綜合成本大幅降低,這就足以引起整個研發生態的升級,而這一切能發生的邏輯都在於:端開發 + 雲 Serverless,使得一個擅長端開發的崗位完成所有應用邏輯的開發,該崗位並不特別擅長的應用架構、運維管理,則全部由雲原生 Serverless 去彌補。

6 讓故事變成事實

對雲廠商而言,需要更多這樣的多贏的故事,對前端崗位而言,需要這樣的多贏的故事,並且,我們需要讓故事變成事實!

自證預言,讓夢想照進現實

迴歸初心,當所有的探索都得到了正向的回饋,意味著我們的方向是對的,方向對了,就不怕路遠!2019 年,我開始更專注地去推動心中理想的雲原生 Serverless 開發者工作平臺。

Q:為什麼是一個開發者工作平臺?

讓我們回到雲計算普惠的初心,要實現最終的普惠,其路徑一定會落在開發者應用,而開發者的時間都在做應用寫代碼,這是開發者的日常工作,我們需要出現在開發者日常工作的路徑上;

Q:這是一個怎樣的平臺?它和傳統研發平臺有什麼區別嗎?

說到研發平臺,相信大家都會立即有一些共性的思考,它應該包含組織結構、應用項目、代碼託管、構建部署等功能模塊,沒錯,這就是絕大多數傳統研發平臺的基本模塊。

如果你有實際體驗過(相信所有的開發同學都清楚),會發現,所有的傳統研發平臺,實際上只能輔助部署發佈的過程,開發調試的過程完全由開發者自行線下解決。

在正式回答雲原生 Serverless 開發者工作平臺是什麼之前,我們不妨再來看一下開發生態的一些現狀。為了更瞭解開發者生態現狀,我和 @神秀曾經一起去拜訪過行業專家熊節,一起交流了雲時代開發者的痛點和機會,我將其中與雲廠商相關的內容進行了抽象,得到以下結論。

  • 無論是小型研發團隊還是大型研發團隊,都渴求獲得低成本高質量的架構服務
  • 關注客戶研發團隊成長線,如果不能陪伴客戶成長的過程,想在客戶長大後再切入,未來我們不會有機會,可能只是多雲的備份
  • 關注開發者流動線,每個開發者背後熟悉的技術棧是相對固定的,如果我們不能守住開發者不變的技術棧,未來我們不會有機會,可能只是多雲的備份

雲原生 Serverless 開發者工作平臺要做的是真正把開發調試和部署發佈兩個環節完整地串聯起來,為雲時代的原住民開發者提供一個一站式的開發工作環境。

Q:怎麼去實現呢?

我們從技術棧及應用架構開始思考,這背後其實都與一個個應用開發場景是密切相關的。比如,開發者小明是一個雲時代的原住民,他的工作主要從事做 web 應用開發,小明的技術棧可能是:NodeJS + ReactJS + Webpack + NPM + Git,他熟悉的應用架構可能是:數據庫服務 + 消息服務 + 緩存服務 + 存儲服務 + 函數計算服務 + CDN 服務。

可以看到,在雲時代,應用架構基本上能通過雲產品服務的組合去表達,這無疑正是我們要深入進去建立強連接影響開發者的。技術棧又該如何去做呢?它們由編程語言、編程框架、版本控制、構建編譯等工具構成,我們怎麼去強化雲產品跟它們的連接呢?

這就是為什麼我們要把開發調試和部署發佈兩個環節完整串聯起來的原因。技術棧主要體現在開發調試環節,如果我們能為開發者提供一個在線的開發環境,把一些主流開發場景背後的技術棧、依賴環境、依賴服務全部都集成在一起,讓開發者在工作的時候能夠直接進入到業務邏輯開發的過程;同時整合能觸達到開發者業務終端客戶的分發渠道,讓開發者完成代碼開發調試之後,能夠快速將代碼變成在線服務。

我們通過這種平臺的整合,為開發者提供低成本、高質量的架構服務,幫助開發者解決兩個核心痛點:

  1. 從加入業務到寫下業務第一行代碼的時效
  2. 從完成編碼到服務客戶的時效

同時,完成了阿里雲產品服務與開發者技術棧以及開發者業務應用架構之間的強連接,從而實現,客戶的成長過程、開發者的流動過程,我們的雲產品服務始終能獲得最好的機會。

Q:開發調試和部署發佈兩個環節具體如何串聯起來呢?

從 2019 年全球開發者人群調查報告中,我們關注到了這幾個數據:

  1. 截止到 2018 Q4,全球活躍開發者數量達到 18,900,000
  2. 預計到 2030 S2,全球開發者數量將增長到 45,000,000
  3. 按照應用開發領域開發者規模分佈數據來看,排名 Top 6 的是:Web Apps,Backend Service,Mobile Apps,Desktop Apps,ML/AI/Data Science,IoT。

從這組數據中我們既看到了開發者規模增長的趨勢,也找到了串聯開發者業務架構與技術棧的線索,我們知道了該佈局哪些應用開發場景。

Web Apps,Backend Service,Mobile Apps,Desktop Apps,ML/AI/Data Science,IoT,這 6 個應用開發場景中,除了 Desktop Apps 外,其他幾個應用開發場景,在整個阿里經濟體範圍內去看,每一個我們都有,背後的研發體系都很成熟,甚至是行業標杆!這是一個很好的機會,如果我們能將經濟體內堪稱行業標杆的應用開發場景研發體系與阿里雲服務進行深度集成,重點去建設雲原生 Serverless 開發的心智,一定會創造出一個雲時代的原生開發環境,一個雲時代開發者每天工作的平臺!

在這個不斷迭代的思考過程中,我跟許多同事、同行進行了交流,得到過很多啟發與幫助,大家都有一個共同的想法,這是未來,但這很難!

是的,這真的不是一件容易的事情,但是我相信,只要你也相信雲是未來,相信雲計算終將實現真正的普惠,你一定會有跟我一樣的想法,想去實現它!可以通過微信(fengchi_dh)隨時與我交流,期待聽到你的想法!

Leave a Reply

Your email address will not be published. Required fields are marked *