有人說 2019 年可能是最近十年最壞的一年,但也有可能是往后十年最好的一年。我們不贊同這樣的觀點。對未來,我們依然保持樂觀,因為悲觀者往往正確,樂觀者往往成功。 2020 年值得關(guān)注的十大技術(shù)趨勢有哪些呢?讓我們一起來了解一下。
云原生將以容器的形態(tài)落地
2019 年,還是有很多人會對“云原生”充滿了疑惑甚至誤解。這想必也是為何我們一直能夠在不同場合聽到關(guān)于云原生的各種不同定義的原因所在。有人說,云原生就是 Kubernetes 和容器;也有人說,云原生就是“彈性可擴展”;還有人說,云原生就是 Serverless;而后來,有人干脆做出判斷:云原生本身就是“哈姆雷特”,因為每個人的理解都不一樣。
實際上,自從這個關(guān)鍵詞被 CNCF 和 Kubernetes 技術(shù)生態(tài)“借用”之初,云原生的意義和內(nèi)涵就是非常確定的。在這個生態(tài)當(dāng)中, 云原生的本質(zhì)是一系列最佳實踐的結(jié)合;更詳細地說,云原生為實踐者指定了一條低心智負擔(dān)的,能夠以可擴展、可復(fù)制的方式最大化地利用云的能力、發(fā)揮云的價值的最佳路徑。所以說,云原生并不指代某個開源項目或者某種技術(shù),它是一套指導(dǎo)軟件與基礎(chǔ)設(shè)施架構(gòu)設(shè)計的思想。 這種思想,以一言以蔽之,就是“以應(yīng)用為中心”。
正是因為以應(yīng)用為中心,云原生技術(shù)體系才會無限強調(diào)讓基礎(chǔ)設(shè)施能更好地配合應(yīng)用,以更高效的方式為應(yīng)用“輸送”基礎(chǔ)設(shè)施能力,而不是反其道而行之。而相應(yīng)的, Kubernetes 、Docker、Operator 等在云原生生態(tài)中起到關(guān)鍵作用的開源項目,就是讓這種思想落地的技術(shù)手段。以應(yīng)用為中心,是指導(dǎo)整個云原生生態(tài)和 Kubernetes 項目蓬勃發(fā)展至今的重要主線。2020 年,隨著容器,尤其是 Kubernetes 的迅猛發(fā)展,CNCF 基于 Kubernetes 這樣一個“種子”迅速構(gòu)建起來一個以數(shù)百個開源項目組成的龐大生態(tài),使得云原生的落地趨勢越來越清晰:以容器的形態(tài)落地, 把“以應(yīng)用為中心”進行到底。
DDD 即將撞上敏捷式的尷尬
DDD(領(lǐng)域驅(qū)動設(shè)計)的思想發(fā)端于 2004 年,在過去的十余年時間中一直不溫不火,直到最近兩年才得到越來越多的關(guān)注度。有人說,正是托微服務(wù)的福,DDD 才有了流行的土壤。實際上,目前微服務(wù)的劃分方法里全球共識的就是 DDD,但 DDD 的核心思想并不僅僅局限于微服務(wù)本身。 因為微服務(wù)是一種架構(gòu)風(fēng)格,而 DDD 是一種思想。微服務(wù)定義的九大核心特質(zhì),跟 DDD 的原則是完全一致的,這在某種程度上也是業(yè)界愿意在微服務(wù)上下文中采用 DDD 方法和實踐的原因。
雖然 DDD 的關(guān)注度日漸提升,但在實踐過程中,也遇到了敏捷開發(fā)式的尷尬:如何調(diào)整組織架構(gòu)以適配 DDD?過去業(yè)界提到敏捷開發(fā),都說對個體的要求太高,但實際上并不是。表面上看敏捷對開發(fā)人員的技能要求高,實際上是因為敏捷開發(fā)要求調(diào)整組織架構(gòu),很多人不愿意動,因此業(yè)務(wù)和技術(shù)協(xié)作上的問題很難解決。
DDD 面臨的困境同樣如此。在過去,技術(shù)這條線的劃分可能是開發(fā)一部、開發(fā)二部,業(yè)務(wù)這條線的劃分可能是業(yè)務(wù)一線、業(yè)務(wù)二線。但 DDD 的劃分理念是從業(yè)務(wù)角度劃分成領(lǐng)域,領(lǐng)域再劃成服務(wù),落地的時候采用微服務(wù)架構(gòu),以前的劃分方式完全適配不了。所以直接造成 DDD 落地難的阻礙也是組織結(jié)構(gòu)。具體表現(xiàn)就是協(xié)作不起來,各條線相互甩鍋,領(lǐng)導(dǎo)抱怨團隊人員能力不夠??梢灶A(yù)見,隨著微服務(wù)和中臺思想的持續(xù)升溫,2020 年 DDD 將會變得更加流行,但由此帶來的問題也會愈加凸顯。
Service Mesh將迎來技術(shù)的普及年
2018 年至今,Service Mesh 的熱度直線上升。而隨著 Kubernetes 生態(tài)體系的逐漸建立和完善,基于 Kubernetes 應(yīng)用程序的規(guī)模和復(fù)雜性將增加,Service Mesh 將成為有效管理那些應(yīng)用程序所必需的一切。企業(yè)對其的需求將會快速增長。
2020 年 Istio 作為控制平面的一種技術(shù)實現(xiàn)仍將在 Service Mesh 領(lǐng)域扮演核心角色。Istio 獲得業(yè)界廣泛關(guān)注的原因,在于背靠 Google 公司的內(nèi)部工程實踐,以及對工程實踐的再思考和重新提煉。而在國內(nèi)也有阿里巴巴等大玩家參與其中。未來市場上可能還有其他競爭者的空間,但市場的整合將于 2020 年開始。從長遠來看,很可能會看到類似 Kubernetes 的情況,其中出現(xiàn)了贏家,公司開始標(biāo)準(zhǔn)化那個贏家。目前來看,業(yè)界正在圍繞 Istio 建立生態(tài),Istio 似乎最有可能成為事實上的 Service Mesh。
2019 年 Service Mesh 的解決方案用例較為單一,展望 2020 年,相信會有更多的公司通過實踐而對 Service Mesh 的價值更有體會,通過創(chuàng)造更多的成功用戶故事、案例而加速 Service Mesh 的普及。也許,2020 年將成為 Service Mesh 技術(shù)的普及年。
Serverless 從觀望走向落地
Gartner 最近的一份報告表明,到 2020 年,全球?qū)⒂?20% 的企業(yè)部署無服務(wù)器架構(gòu)。這說明無服務(wù)器架構(gòu)不只是一個流行語,更是一種眾所周知的云計算趨勢,并且已經(jīng)在軟件世界掀起一場革命。大型廠商(如亞馬遜、微軟和谷歌)已經(jīng)在無服務(wù)器架構(gòu)領(lǐng)域重資投入,追趕革命的浪潮。
Serverless 已從觀望期走向了落地進程,O'Reilly 近期的一份千人樣本的調(diào)查顯示,超過 40% 的受訪者已在使用,50% 的開發(fā)者想要嘗試。2020 年 Serverless 的發(fā)展將取得更多進展:Serverless 計算平臺的能力有了長足進步,變得更加通用;Serverless 正在從偏離線業(yè)務(wù)進入在線業(yè)務(wù);Serverless 生態(tài)不斷發(fā)展,在應(yīng)用構(gòu)建、安全、監(jiān)控報警等方面涌現(xiàn)了很多開源項目和創(chuàng)業(yè)公司,工具鏈越來越成熟;用戶對 Serverless 的接受度不斷增加。除了互聯(lián)網(wǎng)等迅速擁抱新技術(shù)的行業(yè),傳統(tǒng)企業(yè)如銀行用戶也開始采用 Serverless 技術(shù);Java 語言、社區(qū)不斷努力,試圖成為 Serverless 平臺的主流語言;基于 WebAssembly(WASM)的 FaaS 方案有望出現(xiàn)。
WebAssembly 將成為 Web 新技術(shù)浪潮主角
雖然前端一直是推陳出新速度最快、開發(fā)者最愛抱怨“學(xué)不動”的技術(shù)領(lǐng)域,但是回顧剛剛過去的 2019 年,多位專家都會這樣告訴我們:2019 年大前端領(lǐng)域增速放緩,并沒有出現(xiàn)很多顛覆性技術(shù)。仔細想想這個說法確實也站得住腳,無論框架、語言還是前后端分工,2019 年并未出現(xiàn)重磅新聞,主要的“廝殺”都在細分領(lǐng)域展開。這未嘗不是好事,可能意味著前端正在走向成熟。
WebAssembly 至今已經(jīng)發(fā)展了三四年時間,2019 年發(fā)展速度之快超乎想象。3 月份 Mozilla 提出 WASI ;Mozilla、Fastly、英特爾與紅帽宣布成立 Bytecode Alliance(字節(jié)碼聯(lián)盟);2019 年末的大事件則是 WebAssembly 進入 W3C 成為正式推薦標(biāo)準(zhǔn)。
Docker 聯(lián)合創(chuàng)始人在 Twitter 上說的一句話更是給 WebAssembly 添了一把火:“如果 WASM+WASI 在 2008 年就已誕生,那么我們就用不著創(chuàng)建 Docker 了?!钡罱鼘?Java 開發(fā)人員進行的一項調(diào)查顯示,只有一小部分人在使用 WebAssembly,因為目前大家還找不到放棄 Java 的理由。
Wasm 現(xiàn)階段的應(yīng)用場景還比較少,主要的幾個應(yīng)用場景都集中在前端密集計算業(yè)務(wù)的優(yōu)化上,除此之外也有 AI、區(qū)塊鏈上的嘗試。預(yù)測 2020 年 WebAssembly 應(yīng)該主要還是以標(biāo)準(zhǔn)制定及基礎(chǔ)設(shè)施(瀏覽器、編譯器等)實現(xiàn)發(fā)展為主,在 Post-MVP 沒有被完全落地的情況下,Wasm 很難跳出目前的幾個應(yīng)用場景來進行能夠放到生產(chǎn)環(huán)境上的試驗,這也是 2020 年 Wasm 將會面臨的一個比較大的挑戰(zhàn)。
當(dāng)然現(xiàn)階段對于 Java 開發(fā)者而言,由于現(xiàn)階段 Wasm 標(biāo)準(zhǔn)的落地進度并沒有達到可以為 Java 開發(fā)者或者前端開發(fā)者提供很多的、能夠解決前端實際問題的 Wasm 落地場景,因此導(dǎo)致更多的開發(fā)者只是采取觀望態(tài)度。2020 年這樣的情況是否會有所改善,可能還要看 Wasm 標(biāo)準(zhǔn)在工具鏈和瀏覽器層面的落地實現(xiàn)程度。
除了 WebAssembly,2020 年值得關(guān)注的前端趨勢還有很多,比如 Serverless,比如前端智能化。