小智
讀完需要
速讀僅需 6 分鐘
Md Kamaruzzaman 是 Medium 的一位科技博文作者,更新頻率比我強不了多少,但他對軟件開發行業的認識比我要強太多,畢竟專業出身的差距擺在這兒。Kamaruzzaman 個人介紹是一位解決方案架構師,同時也是一位科技作者、全棧開發,專注在雲和大數據方向,base 德國。
2019 年底,我還在 InfoQ 的時候就策劃翻譯過他對 2020 年軟件開發的趨勢預測 20 個 2020 年軟件開發趨勢預測,反響非常好,好到出乎我的意料。坦白說過去幾年的開發者社區工作經歷讓我深刻地認識到,願意抬頭看天的人永遠是少數,願意每年去分析一下軟件開發行業的過去現在和未來的人就更少了,畢竟「墨菲定律」的存在就意味着永遠有人的預測會翻車,貽笑大方,遠不如報道幾篇某某雲宕機了,某某研發刪庫了的八卦新聞性價比來得高。
很有意思的一個事情是,研發同學往往並不直接與客戶打交道,多數市場動向和認知觀察也往往來自於市場部門或開發者關係,但技術發展的趨勢往往卻與商業化直接掛鈎,這就導致了一個很有意思的現象,即——運營/市場拿着研發一半的工資,卻還要時刻掌握市場動向,行業脈搏,用工程師能聽懂的語言反哺給研發,最終保證技術發展、產品迭代的路線不至於出現大的紕漏。
這對於做開發者社區的同學來說,是先天的弊病和必須的要求,也是開發者運營同學實現個人品牌能力和增值的一大出路。所以,其實各個行業都類似,願意保持思考,持續學習的人,總是可以跑贏很多人,研發同理。
廢話不多說,切入今天的正題。
1、集中式基礎設施:雲優先是新的規範
同往年一樣,第一條預測依舊跟雲有關,今年在基礎設施這個關鍵詞前面多出了一個集中式(Centralized)的前綴,這跟當前雲計算行業的下沉還是有關係的,如果關注互聯網行業比較多的人,可能會覺得分布式雲是現在的發展趨勢,但其實對於正在數字化轉型的非互聯網行業而言,集中式的基礎設施仍舊是第一選擇。
2022 年,仍舊會是公有雲快速發展的一年,Gartner 預測 2022 年公有雲的收入將增長 16%,在互聯網以外的各個行業,金融、政務、出行、工業、民生等多個行業,公有雲都會得到有效的利用。所以如果你是非互聯網企業的決策者或從業者,現在開始認真關注云計算還來得及。
2、去中心化基礎設施:邊緣的雲
邊緣計算開始被廣泛關注,大概也就是最近兩年的事情,我看了一下 2019 年做的那篇趨勢預測里,其實沒有寫邊緣計算,但 2021 年的版本里已經有了。跟公有雲希望將存儲、計算能力和 AI/ML 集中在一個中心位置(可用區域)的特點不同,邊緣計算本身是一種去中心化的方式,它希望將存儲、計算能力和 AI/ML 部署在靠近用戶的地方。低延遲場景(遊戲)、低網絡帶寬(離岸站點)、無網絡、監管要求、實時用例(聯網車輛)、智能設備(物聯網)這些都是需要邊緣計算的場景。
再加上 5G 和 Web 3 等關鍵技術的興起,邊緣計算在 2022 及以後得到廣泛採用是很合理的預判。事實上最近兩年各大雲廠商已經在開始有意識地推邊緣計算的能力和產品了,我印象中國內幾大雲廠商都有相關的案例,比如我之前採訪過的華為雲的 KubeEdge。
Kamaruzzaman 提到了一項比較關鍵的動議——「State of the Edge」,旨在標準化邊緣計算技術。「標準化」這個詞是我特別敏感的一個點,因為從商業化的角度看,在沒有實現事實標準之前,商業化的拓展往往是雜亂無序或者說沒有核心優勢的,而形成事實上或人為認定的標準以後,商業化的動向才能更為明朗。畢竟三流企業做產品,一流企業做標準。
3、公有云:多雲將獲得更多的動力
阻礙企業上雲的一大絆腳石,就是廠商鎖定的問題。畢竟雲廠商在商業信譽這塊上,總是或多或少存在一些黑歷史,要麼硬盤壞了,要麼剽合作夥伴方案,要麼抄開源項目代碼。你把企業安身立命的核心資產、數據都放在某一家雲上,且不說安全的問題,以後要想遷移都是個麻煩。
所以多雲、混合雲的發展趨勢是實實在在肉眼可見的,Kamaruzzaman 提到了很多致力於提供雲服務中立性的 API 服務,比如 MinIO(兼容 S3)、Aviatrix(雲原生網絡)、Volterra(分布式雲服務)、LightOS(雲原生存儲)等。
還有一點比較有意思的是,Google 正在致力於將他們的流行服務,比如 Big Query 引入到其公有雲競爭對手 AWS、Azure 里,但這種現象在國內的雲計算行業是否有類似案例或者說未來會不會有類似案例,我個人表示懷疑……
4、容器:K8s 將成為基礎,而 Docker 將會反彈
如果要對現代 IT 產業的關鍵技術做個排名,容器毫無疑問將占據一席之地。在容器化技術的普及化中,K8s 發揮了巨大的作用。背靠大廠(Google)、足夠努力、精心設計、快速迭代,才有了今天成為事實標準的 K8s。
但另一方面,隨着 K8s 技術的成熟,未來關於 K8s 本身的吸引力會持續減少,這有點類似於跨越鴻溝理論中的技術採用生命周期,K8s 我認為已經到了晚期大眾這個階段。所以 Kamaruzzaman 表示,K8s 已經成為現代軟件開發的引擎,但也由於其本身的成熟度而導致進展緩慢。從這個角度看,有點類似於 Java。
Docker 是另一個在容器化歷史進程中發揮了關鍵作用的技術,不幸的是,即便在全盛時期,Docker 也沒有找到商業化的終南捷徑,加上公司一系列的騷操作,在與 K8s 的正面對決中敗下陣來。
2022 年起,Docker 宣布推出新的訂閱模式,繼續做着商業化的艱難探索。坦白說,這個小標題預測的結論並非定論,更多是 Kamaruzzaman 基於 Docker 的歷史功績提出的美好祝願,我其實也一樣。Docker 是我對開源行業產生濃厚興趣的開始,希望它能有一個好的未來。
延展閱讀:
Docker 麻煩大了
5、網絡安全:每個人都會認真對待安全
對初創公司或者中型公司來說,網絡安全就像「房間裡的大象」,他們可以看到網絡安全的需求,卻沒有足夠的資源去實現他。這其實也是公有雲能迅速落地下沉的一大原因,初創企業不需要自己去搭建底層的基礎設施,也省去了網絡安全的防護,只要部署在公有雲上就行,其他的事交給雲廠商。
可當雲廠商遭到網絡攻擊,或者出現故障時,受到影響的就絕不只是一家公司而已。事實上,2021 年曝出來的雲廠商高危漏洞也不在少數,2022 年公有雲廠商和 Linux 都要在安全方面更努力地工作。
除了雲安全,另一個常見的網絡安全來源於開源軟件。之前奇安信有過相關數據報告,90%的開源軟件存在安全漏洞,這對於在開源軟件基礎上構建起來的互聯網本身就是個令人不寒而慄的問題。幸運的是,高危漏洞的利用沒有那麼容易。不幸的是,很多世界流行的開源軟件,背後的維護者甚至只有兩三個人,比如 2021 年最受關注的 log4j 漏洞,影響了全世界近一半的 IT 公司。
我們需要思考一個問題,為什麼世界流行的開源項目卻得不到應有的收益?為眾人抱薪者,不可使其凍斃於風雪。
6、區塊鏈:加密貨幣之外的生活終於開始了
區塊鏈經常與加密貨幣聯繫在一起,每次有人被加密貨幣嘎了腰子,就有人開始痛罵區塊鏈技術。但從技術上來講,加密貨幣只是區塊鏈技術的一個實現方式,卻並非區塊鏈的全部或唯一用例。
2021 年區塊鏈一個非常流行的新用例是 NFT(Non-Fungible Tokens),之前勇士隊球星庫里花了 18 萬美元買了一張 NFT 的頭像就火出了圈。雖然,我也不懂這玩意兒貴在哪了……
NFT 目前更多用在數字藝術方面,但顯然可以期待它未來的使用場景。從這個點延伸出去可以看到,區塊鏈技術正在越來越為人所正視,注意是正視。IDC 預測 2022 年區塊鏈技術的解決方案增長將達到 75%,考慮到目前該項技術的普及程度,我覺得這個數字不算盲目樂觀。
區塊鏈一個為人所詬病的點在於能源消耗,在國內雙碳政策的前提下,區塊鏈要想獲得長遠發展,必然還是需要做出一些改變的,像以太坊那樣,在 2022 年由能源密集型的「proof of work」模型轉向綠色的「proof of stake」模型。
7、機器學習:AutoML 和無代碼人工智能將使機器學習民主化
我之前策劃「稀土開發者大會」的時候,用過一句文案叫「機器都在學習,你憑什麼例外」。這個點說的就是機器學習,但從實際的行業發展來看,機器學習的應用規模還是受到不小的制約,最大的原因是——搞機器學習的專家太少了。第二個原因是——大多數公司不需要完全的機器學習,有限的使用就夠了。
AutoML 就是在有限情況下實現機器學習使用的一種方式。某種意義上,它就相當於低代碼/無代碼,不同之處在於,低代碼/無代碼是降低開發的門檻,而 AutoML 是降低機器學習的使用門檻。
8、人工智能:狹義人工智能將被廣泛採用
我最近在看阿西莫夫的科幻系列,裡面提到過的「機器人三大準則」、由機器人協助建立的行星文明等等故事,講述的就是人工智能的終極目標之一——讓 AI 可以和人一樣聰明,甚至更聰明。但從 AI 發展的 60 多年曆程里,我們離這個目標還差得遠。
跟機器學習一樣,深度學習在過去十年間獲得了大量採用和快速增長,預計在未來仍將如此。人工智能發展的終極目標在肉眼可見的當前觸不可及,但讓人工智能代理在特定領域協助/增強人類還是問題不大的。
9、深度學習庫:TensorFlow 將繼續統治
深度學習的輪子有很多,但你基本上可以只看這兩個:Google 的 TensorFlow,Meta 的 PyTorch。
TensorFlow 在其 2.0 版本中進行了自我更新,並引入了動態圖形、Python 友好和許多其他變化。它還提供了 Tensorflow.js 以在瀏覽器中使用 AI 庫。其另一個創新是 Tensorflow Lite,它提供了在移動和 Web 上部署 Tensorflow 的功能。Tensorflow 還發布了 Tensorflow Extended (TFX),這是一個用於部署生產 ML 管道的端到端平台。
PyTorch 是另一個主要的人工智能庫,它引入了動態圖形和 Python,對開發人員也更友好。它還發布了 PyTorch Mobile,支持在 Android/iOS 設備上使用 PyTorch。它通過 PyTorch Profiler 為開發人員提供了更多的友好性來調試大型 AI 模型。
從 Stack Overflow 的調查數據來看,TensorFlow 繼續保持統治地位似乎並沒有什麼懸念。
10、數據庫:多模型、多用途數據庫正在興起
過去幾年間,數據庫領域的一個趨勢就是用一種特定的數據庫去匹配特定的用例,比如:
RDBMS:用於結構化數據的事物
Wide-Column Database:用於低延遲,分布式數據庫
Key-Value Store:用於分布式緩存
Graph Database:用於極端關係數據
Document Database:用於具有半結構化數據的事物
Distributed SQL:用於具有事務保證的低延遲,分布式數據庫
OLAP Database:用於數據倉庫和數據分析
這種方法的一個缺點是,我們經常需要為一個應用程序使用多個數據庫。現在有一個新的趨勢,即每個數據庫將提供一個以上的模型並服務於一個以上的用例。PostgreSQL (Multi-Model)、Azure CosmosDB (Multi-Model, Multi-purpose)、SingleStore (OLAP 和 OLTP)是這些數據庫的先驅。
11、數據密集型計算:Spark VS 公有雲
Kamaruzzaman 介紹道,Apache Spark 幾乎已經取代 Hadoop 生態系統成為默認的數據密集型計算框架。Spark 還使用相同的 API 提供接近實時的流處理。
另一個獲得很多關注的開源框架是 Apache Beam,其提供了一個統一的編程模型來定義和執行數據處理管道:批處理和流處理。這個背後的身影少不了 GCP、Azure 和 AWS。
所以如果你不想用雲,或許只有 Spark 一個選擇。
12、實時流計算:Flink VS 公有雲
這個點的意思跟上一條頗為類似,簡單來說就是,實時流計算這裡,除了 Flink 啥都不推薦。即便要在公有雲上用,也建議用 Flink,感覺無腦上就行了。話說回來,確實在這個領域裡我目前也沒見過有能跟 Flink 掰掰手腕的輪子。
13、DevOps:現代 DevOps 的智能可觀測性
幾年前,可觀測性只對大型企業至關重要。然而,伴隨着雲本地開發和微服務架構的迅速崛起,可觀測性對整個現代軟件開發都至關重要。除了傳統的日誌記錄、監控、跟蹤,還需要 K8s 集群的遙測、拓撲數據等等。
其實 DevOps 這種理念一直處在持續的發展中,當它跟 AI 結合時就變成了 AIOps,當它強調安全時,就有了 DevSecOps,輪子的實現有各種形態,歸根結底還是看需求是什麼。
14、快速應用開發:低代碼/無代碼 (LCNC) 將繼續蓬勃發展
低代碼/無代碼(Low Code/No Code,簡稱 LCNC)旨在降低開發 Web/移動應用的障礙,而無需開發人員(或少量開發人員)。在未來的幾年裡,我們仍然需要開發人員來開發應用程序。但也有很多用例表明,低代碼/無代碼框架/工具確實可以顯著加快應用程序開發。
整個 2021 年稱之為低代碼元年都不為過,這一年光是我見過的低代碼創業公司就不下三五家,一場關於低代碼是否業界毒瘤的爭論更是引爆了行業沸點。預計 2022 年,這些場景下會有更多低代碼/無代碼的身影:
Web/移動 App 開發
網站和登陸頁面
使用對話流的智能聊天機器人
電子商務
機器學習
人工智能(視頻、音頻、圖像)
工作流管理
使用 RPA 的過程自動化
15、軟件架構:面向企業的微服務和微前端
目前主流的後端架構有三種選擇:單體、微服務和 Serverless,三者各有優勢、劣勢和適用的場景。對於微服務而言,其是雲原生場景下絕佳的架構選擇,從企業發展角度來看,不論是上雲後的改造,還是雲原生的架構設計,都以微服務為首選。
前端領域的程序複雜性往往受到輕視,而微前端的思想內核跟微服務是一樣的,都是為了解決複雜性而生,化整為零。因此可以暢想的是,微前端也會是未來前端開發的首選架構模型,另一個好消息是,主流的 JS 框架都支持微前端。
16、軟件開發:人工智能將協助開發人員和 QA
軟件開發本身很有意思的一個地方在於,開發人員不喜歡做那些乏味的、可預測的、重複的髒活累活,所以各種輪子應運而生。研發們享受的是創作解決問題的解決方案,而非享受問題。人工智能在實現終極目標之前,更多的價值往往就體現在這些地方上,比如使用 GPT-3 和 NLP 庫自動地完成這些任務。
另外就是去年剛推出的一些自動生成代碼的工具,比如 GitHub 的 Copilot。很多人喜歡玩梗說,AI 已經可以自己寫代碼,自己 Debug 了,程序員還有人要嗎?但實際上目前 AI 的能力仍舊是狹義層面的,但如果你只能、只會做髒活累活,那你確實比較危險,不是嗎?
17、編程語言(主流):Python 將引領潮流
我剛入行那會兒,Python 還沒今天這麼火,那個時候大家討論的是 Java 和 C 語言,甚至 Go 語言在中國的熱度感覺都不比 Python 差。可一瞬之間,Python 就在 TIOBE 編程語言排行榜上干到了第一名:
Python 具有簡潔、解釋性、動態、門檻低等特性(然而我卻沒學會,從入門到放棄),這些在 Python 之禪里都有很直觀的體現,更關鍵的是,Python 並不僅僅局限在軟件開發行業里,很多做數據、圖表的行業同樣可以用 Python 實現很多工作。加上數據科學的火熱,Python 的火爆不難理解。2021 年 Python 的登頂不會是曇花一現,懸念或許在於,以後誰會把它頂下來?我個人期待 Rust。
18、編程語言(企業):Java 反擊
主流的企業級編程語言,很長一段時間裡代名詞就是 Java。Java 的語言設計,JVM 的強大,共同構築了 Java 生態。但在雲原生興起以來,Java 其實受到了非常大的挑戰。我年前發過一條朋友圈專門聊過這個話題:
目前看有兩個技術趨勢會對 Java 造成比較大的影響,一個是雲原生,一個是 Serverless。造成影響的原因跟 Java 語言的特性有關,這門語言設計就是為了大型應用複雜場景,而雲,尤其是 Serverless,更加適合輕量化、業務邏輯簡單的應用。話說回來,其實制約雲原生和 Serverless 發展的,也恰恰是在大型應用複雜場景下的管理問題、安全問題。
一個好消息是:Java 社區一直在持續地迭代創新,保證 Java 的生命力。比如 GraalVM 等現代化的特性,在 Java 近幾年保持周期發布的當下,憑藉現代化特性的更新和嚴格且無與倫比的向後兼容性,你可以不用再問 Java 老矣,尚能飯否。而是,接着奏樂,接着舞!
19、客戶端 Web 框架:面向企業的 React 和 Angular
前端三大框架早已是耳熟能詳的存在:來自 Meta 的 React,來自 Google 的 Angular 和來自尤雨溪的 Vue。Kamaruzzaman 給出 React 和 Angular 會在企業中得到更多重用,而非 Vue 的原因是:前兩者背靠兩大企業,而 Vue 過於依賴尤雨溪,且提到了 Vue 的安全考慮。
我不知道這個安全考慮指的是軟件方面的安全,還是地緣方面的安全,這裡不做評價。但我想提的是,如果 Vue 在過於依賴尤雨溪的情況下,仍舊做到了如此流行,豈非更加說明 Vue 的牛逼所在?你覺得呢?
20、服務器端框架(Java):用於微服務和無服務器應用程序的本地框架
Spring MVC/Spring Boot 是 Java 里最主要的服務器端框架,它遇到的問題跟 Java 遇到的問題是伴生問題,因為 Java 受到了雲原生趨勢的挑戰,導致了它的問題。在 Redhat 推出 Quarkus 後,雲原生開發的首選框架易主,因為後者使用了 GraalVM 而非傳統的 OpenJDK。終於,Spring 也聲明了將發布 Spring Native,同樣使用 GraalVM 進行雲原生開發。
2022 年如果開發雲原生 Java 應用程序,可以考慮使用 Java 原生框架。如果場景仍舊是單體 Java 應用開發,繼續使用傳統框架亦無不可。
21、應用開發:更靈活的原生應用
移動應用開發一直是個龐大的市場,並且仍將持續膨脹下去。目前主流的移動應用開發有四種模式:原生開發、跨平台開發、混合開發和雲開發。
原生開發和跨平台開發是應用最廣的開發模式,前者提供了最大的靈活性,後者提供了「Write once,Run everywhere」的誘人可能。
去年寫過一篇蘋果發布會的文章蘋果:沒想到吧,我自己做了「小程序」,裡面借着蘋果生態分析了一下原生開發的發展,重點在於其軟硬件的協同。Kamaruzzaman 預測 2022 年原生開發將占據主流,重點在於跨平台開發不如原生靈活。未來如何,且走且看。
22、API 技術:REST、gRPC 和 GraphQL 將共存
現代軟件開發通常是 API 驅動的開發😁,API 輪子可以說是多如牛毛,但知名度最高的也就這三個了:REST、gRPC 和 GraphQL。
這三個主流 API 技術,一個最古老,同時也是最成熟、最廣泛使用(REST);一個由 Google 創建,在服務和服務通信方面更快更高效(gRPC);一個由 Meta 開發,以為特定的用例定義數據結構的形狀,並在一次訪問中獲取所有數據。
這簡直是完美體現軟件開發沒有銀彈一詞的場景,各有各的擅長,也各有各的弊病,企業按需使用,每個輪子都有前景。我們都有光明的未來!
原文鏈接
https://md-kamaruzzaman.medium.com/?p=fcc82c263788
往期精彩回顧
樹莓派系統推出64位版本Oracle Linux 8 已上架至 Microsoft Store計算機史上最瘋狂一幕覺得不錯,請點個在看呀