WS Adrian Cockcroft:開源20週年,獨行快,眾行遠
2018 年,“開源(Open Source)”誕生的第 20 個年頭。所謂開源,完整說法是開放原始碼(Open Source Code),它是一種軟體釋出模式,簡單地講,釋出者將軟體的原始碼公開,並且附帶上相應的許可條款,其他人可以根據許可條款對該公開的原始碼進行閱讀、使用、修改、再開源與銷售等操作。
在這 20 年裡,軟體領域因為開源的助力而發展飛快,各種開源基礎設施、開發框架與具體的開源實用程式等軟體如雨後春筍般不斷出現,同時也各自在一代一代的開源維護中變得更加完善、壯大。“當下的技術領域,從飛向太陽的人造天體,到用於血管手術的奈米級機器人,哪一個地方沒有用到開源軟體?”,這一句話極言了開源的影響力。
在 9 月 20 日深圳 AWS Summit 上,AWS 架構策略副總裁 Adrian Cockcroft 分享了 AWS 在這些年圍繞開源事業開展的一系列工作與所取得的成績。我們在會場對他進行了採訪,從他口中瞭解到了開源的奧祕與開源背景下當前諸如混沌工程與 Serverless 等新技術的發展情況。
世界還是開源的
“開源”標籤最初是在 1998 年 2 月 3 日於加州山景城舉行的一個會議上被提出的,這一天也被定義為了開源的生日,然而開源思想卻可以追溯到更早。它起源於黑客文化,1984 年美國國家工程院院士 Richard Stallman 創造了 GNU(GNU’s Not Unix)計算機作業系統, GNU 的內容軟體完全以自由的方式釋出,使用者可以進行自由複製、分發和改寫,這標誌著基於“自由軟體”思想的作業系統首次實現。
GNU 的誕生拉開了開源運動的序幕,隨後 GNU 不斷髮展,也有越來越多開發者加入到完善 GNU 衍生的 Emacs 等軟體中來。1985 年, Richard Stallman 成立了自由軟體基金會(FSF,Free Software Foundation)為開發 GNU 募集資金。1989 年,他又帶頭起草了 GNU GPL 軟體使用許可條款,進一步完善了日後的“開源”規則,開源也逐漸從“野蠻生長”走向“有組織、有紀律、有文化……”。
到了 1991 年,Linus Torvalds 基於 GNU GPL 釋出了 Linux 核心,後來的故事大家差不多都清楚了,隨著 Linux 這位開源界超級巨星的出世,開源之路越走越好。開源軟體現在已經無處不在,這些開源軟體成為了各行各業基礎設施的基本組成部分,同時它們也成為了推動創新的關鍵因素。
談到開源,很容易聯想到 Netflix,大名鼎鼎的 Netflix OSS 與 Hystrix、Zuul、Eureka 等專案都來自於它,它的開源貢獻遍及了大資料、持續交付、通用執行時、資料持久化與 APM 等等領域。而談到 Netflix 的開源,就不得不提到本文的主角,也就是此次的採訪物件 Adrian Cockcroft,在加盟 AWS 之前,Adrian 就任職於 Netflix,他與開源的關係極為密切,並且建樹頗豐 。
在 Netflix 的時候,Adrian 一手將公司帶向了“雲原生”架構,使 Netflix 開始轉向雲端計算,並在日後成為該領域的巨頭;與此同時 Netflix 積極參與到開源中,Adrian 建立並領導了 Netflix 的開源專案,由他一手打造的 Netflix OSS 平臺,致力於解決大規模分散式系統的各類問題,它以前瞻的視野在架構上內化了 DevOps,使得各個使用該開源專案的公司構建的系統在可擴充套件性、可靠性、高效及高效能方面都有很好的表現,因此 Netflix OSS 也於 2015 年獲得了 JAX 特別評審團獎。
在當年入職 AWS 之前,Adrian 感慨過“基礎設施、軟體包和服務現在就是 AWS + 開源工具 ”(The state of the art in infrastructure, software packages, and services is nowadays a combination of AWS and open source tools.),外人或許可以將這句話看作是他當年示好 AWS 的通關帖,但是其實 AWS 的意識與技術在業界領先,並且其提供的服務覆蓋範圍之廣、受惠人群之眾這點是毋庸置疑的,而鑑於開源的巨大影響力,他的這句話還是有一定道理的。
只是技術領域發展飛快,我們詢問 Adrian 這句話放在今天如何,他回答得很果斷,他認為當下這句話還是適用的。
Adrian 首先簡單介紹了 AWS 在軟體、基礎設施等方面的成績,隨後關於開源方面,他解釋:“你可以看到,當下最火熱的趨勢,包括機器學習和人工智慧,它們底層的框架全都是開源的 ,現在的情況是大家都基於這些開源的框架在做甚至是商品化的產品的開發。”
確實,雖然開源也帶來了一些問題,諸如程式碼安全、質量與版權等,並且也一直有反對開源的聲音存在,但是在這場聲勢浩大的運動中,大部分公司企業、組織與個人還是積極投身於開源這樣一個大環境中。
公司企業層面,IBM、Adobe、Red Hat、Canonical、Docker、HP、Oracle 與 Google 等對開源的貢獻都不是一朝一夕、一點兩點的。我們也看到微軟這樣的企業,從最初將開源視為敵對勢力,在近幾年卻逐漸轉身擁抱開源,甚至甘願花 75 億美元去收購開源界的另一位超級巨星 GitHub——全球最大的開源社群。值得注意的是,75 億美元去收購一個開源平臺,這本身就是對開源的肯定,也是開源當前發展得一時無兩的鐵證。
而目前支援開源的相關組織越來越多,規模也越變越大,並且社群生態也越來越好,包括但不限於以下這些:
- 開放網路使用者組,Open Network User Group (ONUG)
- 開放容器倡議,Open Container Initiative (OCI)
- Linux 基金會,Linux Foundation
- 雲原生計算基金會,Cloud Native Computing Foundation(CNCF)
- Open Source Initiative (OSI)
- Apache 軟體基金會,Apache Software Foundation(ASF)
更具體一點,Adrian 提供了一組由 Linux 基金會發布的資料,資料顯示目前有超過 2300 萬開源開發人員,超過 6400 萬個 GitHub 程式碼庫,開原始碼量超過 41 億行,每日新專案上線量達到 1100。這些資料背後是構成當下基礎設施、軟體包和服務的開源實質 。
所以在 Adrian 看來,當下他的“The state of the art in infrastructure, software packages, and services is nowadays a combination of AWS and open source tools”這句話並未過時。
為什麼開源:獨行快,眾行遠
分析了開源的影響,Adrian 也談到了為什麼開源會這樣一步步“蠶食”著這個世界 。
Adrian 從他之前打造 Netflix 雲原生架構的經歷講開:“當時我在 Netflix 要做的事情是打造一個以前並不存在的平臺,然後把這個平臺開源給整個行業,讓它成為一個大家都使用的主流平臺。”
當時的想法比較簡單,Adrian 只是想把平臺開放出來,讓大家可以基於它做一些自己的開發。但是自那以後,“我們可以看到,你要再做類似的平臺,一定是以開源這種方式進行的,不然根本就沒戲”,Adrian 解釋了開源的競爭力:“事實上,比如 AWS 有一個產品開發出來了,但是我們不開源,那麼很快就會看到市面上有一個類似的產品被開源出來。這個時候就會出現競爭,大家會在這兩個產品之間做選擇。”
Adrian 補充了這個觀點,他認為開不開源是對於產品的兩種選擇,當然都是有效的,在不考慮其它諸如產品能力等因素的情況下,如果選擇開源的路線去走,那麼事實上大家就都會去使用這一個產品而不是另起爐灶,而且基於這個開源的產品,更多的人也會做出更多的產品,那麼說到底,其實大家就都只是最初開源的這個“大餅”上的一小塊。“這樣就達到了對於某類產品、甚至某個領域的‘控制權’,那麼你的產品、你的公司也就會走得更遠。 ”
Adrian 將這總結成“獨行快,眾行遠 ”:“獨行固然會因為沒有太多負擔而走得更快,但是你想走得遠,就應該一群人走。開源社群可能做事情速度會特別慢,比如你在開源一個專案之前會需要做許多文案工作,給使用者和開源貢獻者非常明確的技術指引;同時開源也涉及到了專利版權等內容,這些都會拖慢開源的速度。但是因為是一群人走,所以大家會‘相互攙扶’,這其中也會產生各種各樣的創新。”
開源下的技術新世界
Adrian 一直工作在技術發展前沿,本身對未來新生技術也非常痴迷,在開源這麼一個大背景下,Adrian 和我們聊到了目前一些前沿技術的發展情況。
混沌工程、混沌架構
在分散式系統領域,其它工程實踐不斷追逐著速度與靈活性,而混沌工程(Chaos Engineering) 卻別樹一幟地執著於降低系統的不確定性。混沌工程是指在生產環境的分散式系統中進行一些災難試驗,比如關掉某些區域的伺服器、製造嚴重不平衡的流量,甚至是直接剪斷電源傳輸線纜,以此來考驗系統在動盪環境下的健壯性,從而增強對系統穩定執行的信心。簡單地講就是一種自動化、產品化、簡化的災備測試。它與以往的災備最根本的區別在於“人工、手動”與“雲端自動化”。
混沌工程的理念最初源自 Netflix,並且它還是 Adrian 領導下的架構團隊中的一位工程師提出來的。
“2010 年的時候,我所管理的 Netflix 架構團隊裡邊的一個工程師有一天突然有了一個關於自動化災備測試的想法,他稱之為“Chaos Monkey”(混沌猴子) 。”
作為 Netflix 的對外佈道師,Adrian 在當時做了大量的技術方面的演講與博文的撰寫等活動,把混沌工程的理念與相關技術向外推廣。“隨著相關工具的開源,不同公司都有了各自關於混沌工程的實踐,並最終在 2011 年開始出現了實際的 Chaos Monkey 專案,並在之後不斷衍生出 Latency、Janitor、Security Monkey 等各種猴子。”
Adrian 又解釋,其實這一切還可以追溯到 2006 年,當年 AWS 的 CTO Werner Vogels 在 ACM 上發表了一篇介紹了亞馬遜整體技術架構與服務模式的文章,而這些內容大大地影響了 Netflix。“Werner 最開始在 ACM 的這篇文章裡發表的點子被 Netflix 採納,所以就出來了混沌猴子的概念。”
“而 Werner 瞭解到了 Netflix 關於“猴子”的概念之後特別喜歡,於是在 2012 年的 re:Invent 大會上,他穿了一件定製的 T 恤進行演講,衣服上就畫了一隻矚目的猴子,這樣一下子混沌猴子這個東西就火了起來。”
Adrian 去年做過關於混沌架構(Chaos Architecture) 的演講,他總結並具體解釋了混沌架構的組成,包括四個層、兩個團隊和一個理念:
- 四個層:基礎設施、交換機制、應用程式和人
- 兩個團隊:混沌工程團隊 與安全團隊
- 一個理念:建設性破壞。
採訪中,Adrian 解釋了“混沌工程”之於“混沌架構”,其實就是一套通用執行理論之於整體性的一套系統架構理論,前者關注“是什麼”,後者聚焦於“怎麼做” 。
“你看混沌架構裡邊就有一個混沌工程”,他打了一個比方:“你到商場裡面坐電梯的時候,電梯裡都有一個警示,說一旦發生火災請不要使用電梯,要走緊急出口的通道。當你把這個消防避險的說明放到學校、醫院等場景下,它還是可行的,同樣具有指導意義。事實上大家在建築方面有這樣的消防避險指導,那在做軟體系統工程的時候為什麼就不能有同樣的東西呢?混沌工程就是這樣的一個‘指導’。而把場景切換到不同地方,就是‘混沌架構’的職責,我們去宣傳混沌工程這麼一種理念的時候,就需要把它結合到各個公司不同的場景中去,這就是從‘混沌工程’到‘混沌架構’的變化。”
關於混沌工程,Adrian 還指出,混沌工程的最佳實踐是先把雲系統建立起來,接著把猴子放進去進行測試,最後再把應用放進去,以這樣一個順序去操作,測試在猴子存在的情況之下,應用能不能夠生存。但是當下很多人都做反了 ,他們先把應用在雲上做好,然後再放猴子執行混沌工程,“如果是這樣,那他們是做不了混沌工程的。”
此外,Adrian 將 2018 年稱為混沌年 ,他在不久前的第一屆混沌大會上也詳細介紹了混沌工程的前世今生以及它的現狀。
未來只需要 Serverless 化應用開發
雲端計算中的 Serverless 也是近幾年的焦點,隨著微服務架構、雲、函式計算與大資料等技術的快速發展,目前 Serverless 正變得無處不在。
Adrian 認為如果現在要開始開發一個新的應用,一定要使用 Serverless 化來做,之後如果你在做的過程中發現這太難了,實在做不下去,那這時候再回到傳統的容器方式去做。“現在我們在開發一個應用的時候,能夠做 Serverless 化的部分我們就要逐漸把它的比例提高,在我看來,以後Serverless 化就是唯一需要的一種應用開發方式 ,就這一種方式,最好不需要其它的。”
Adrian 對 Serverless 的樂觀是源於他最近的見聞:“之前的 re:Invent 大會上我擔任了一場黑客大賽的裁判,比賽要求 4 人組在 12 個小時內開發出一個應用。最後他們每個人都選擇了 Serverless 的方式,並且在短時間內就開發出了非常複雜的應用。另外,也有很多人分享給我他們看到的 Serverless 化非常好的結果,比如原來需要幾個月開發的複雜應用,使用 Serverless 方式幾天就完成了。”
Adrian 解釋 Serverless 化除了開發速度快 之外,還有一方面的優勢是運營成本低 ,他舉了一個 Lambda 客戶的例子,客戶根本不知道使用 Lambda 的成本是多少,因為成本太低,跟其它開銷一比,實在不值一提。
他說:“其實還有一些其它因素吧,但是這個東西很難用語言清晰地向別人傳達,當下 Serverless 已經發展到了你可以直接跟質疑的人說‘你試用了一下就知道了’的地步。 ”
雲走向邊緣
Adrian 在當天的演講中比較了自己做資料中心和使用雲端計算的效果,結果顯示它們的成本差別非常巨大,比如建構資料湖只要使用 S3 成本是很低的,如果自己使用雲這樣的成本去做資料中心,那是根本不可能的。Adrian 在採訪中解釋:“就是說雲時代,市場現在已經存在著一個規模上的准入門檻 ,除非你一進來就有一個非常大的規模,否則你是沒法和現有的大規模的雲服務商去競爭的。”
他補充到:“事實上在歐美曾經有很多公司覺得,我也可以提供一個替代性的雲服務,最後他們都放棄了,為什麼呢?就是因為他們發現自己根本沒法跟已有的雲服務商競爭。”
另一方面,談到雲的發展,有一個逐漸普遍的觀點是“隨著 IoT 時代的不斷髮展,雲將逐漸走向邊緣,更多地下行去依靠邊緣計算的能力”,前一陣子地平線創始人兼 CEO 餘凱也表示了:PC 時代,所有的計算都是在 PC 進行“本地計算”;隨著網際網路發展,資料越來越往雲端、中央上轉,計算慢慢集中到了雲端;而從移動網際網路開始到現在物聯網時代到來,更多的計算從雲中央往邊緣遷移的趨勢已經逐漸顯現 。
Adrian 認為雲確實是在往邊緣走 ,在往邊緣下放一部分算力,包括 AWS 在內現在也在做一些邊緣計算相關的東西。
“邊緣計算”最早在 2003 年來源於知名 CDN 和雲服務提供商 Akamai,最初應用於內容分發,它在更靠近實際使用者的內容分發裝置上負載更多算力,產生更快的網路服務響應,也解除安裝了一定網路流量。
隨著 IoT 時代的到來,目前邊緣計算主要在該領域快速發展,它可以在 IoT 邊緣裝置中完成一些計算而無需上傳到雲端,這大大提高了效率,也減輕了雲的負載壓力。同時由於更加靠近使用者,還可以為使用者提供更快的響應,可以直接在邊緣端解決各種需求。
Adrian 解釋到:“我們可以簡單地把邊緣計算理解成‘盒子裡的雲 ’,你可以把這個盒子放到任何一個地方,這個雲部署就算完成了。像 AWS 的 Greengrass 解決方案,它可以讓開發者在 IoT 裝置上執行 Lambda 函式,實現邊緣計算。而 Snowball Edge 使用了 Greengrass 方案,把 EC2 的伺服器虛機放在 Snowball 裡,達到不僅可以傳輸資料,還能承擔本地處理和邊緣計算工作負載的能力。”
嘉賓介紹
Adrian Cockcroft,亞馬遜 AWS 雲架構策略副總裁。在 AWS 負責 AWS 開源社群開發團隊的工作。曾任職於 Sun Microsystems、Battery Ventures 與 Netflix,並且是 eBay research labs 的創始成員。
在 Netflix 期間,Cockcroft 建立並領導了 Netflix 的開源專案,也幫助團隊擴充套件並遷移到 AWS,隨著 Netflix 公開分享其架構,Cockcroft 成為各類會議和高管峰會上的常客。
Cockcroft 擁有倫敦城市大學應用物理學學位。他曾出版過四本書,著名的有《Sun Performance and Tuning》(Prentice Hall, 1998)。
【注:此次採訪中,AWS 首席雲端計算企業戰略顧問張俠博士也補充了一些十分有價值的內容,特此表示感謝!】