天天看點

「上雲」之後,企業數字化的下一步是開源

作者:極客公園
「上雲」之後,企業數字化的下一步是開源
開源,不僅是工程師精神,更是未來軟體行業的重要模式。

作者 | 韓鴻源 阿裡雲新金融 & 網際網路事業部首席架構師

在程式員圈裡,有一句戲言稱全球知名的代碼托管平台 GitHub 是全球最大的男性交友社群。玩笑歸玩笑,GitHub 年度報告顯示,無論是貢獻者數量還是代碼貢獻量,來自中國的開發者都是排在第二。

2020 年,阿裡巴巴開源技術委員會負責人、Caffe 之父賈揚清曾經在一封緻謝開源軟體從業者的公開信中表示「社群是開源協作精神與創新的搖籃」。

誠如其言,早在上世紀 80、90 年代 PC 開始逐漸普及之時,一批著名的軟體從業者和程式員大牛就程式員的「自由精神」注入到開源軟體之中。

「上雲」之後,企業數字化的下一步是開源

埃裡克·雷蒙德《大教堂與集市》|willpatrick.co.uk

1997 年 5 月埃裡克·雷蒙德 (Eric S. Raymond) 發表了被譽為「開源聖經」的《大教堂與集市》,開源運動從此有了自己的獨立宣言。經過幾十年發展,越來越多的企業組織加入到開源中,開放、平等、協作、共享的開源模式已成為全球軟體技術和産業創新的主導力量之一。

在當下這個雲計算時代,開源覆寫了軟體開發的全域場景。開源不僅代表了共享共建的自由精神,更已經成為企業無法回避的下一個發展目标。以阿裡、騰訊為代表的中國網際網路龍頭企業,早已經開始布局開源軟體并且獲得相當大的成功。

阿裡雲智能新金融&網際網路事業部首席架構師韓鴻源,撰文詳細闡述開源軟體演進過程,分析常見的開源誤區,讨論為什麼企業需要開源軟體,以及如何将開源與業務模式和雲相結合。

01 何謂「開源」

20 世紀 70 年代 Unix 誕生之前,由于軟體不具備通用性,而且軟體隻是軟體開發項目,傳遞項目的同時傳遞源代碼也是正常做法。

随着 Unix 的誕生并且主要以 C 語言實作,開放的通用作業系統成為可能。Unix 早期,由于其擁有者 AT&T 回避進入軟體行業的特殊态度 (原因是主營電信業務正在嚴厲的反壟斷高壓之下,不願意添加額外的麻煩),以源代碼形式提供并且不提供後續技術支援,允許使用者在自己的環境中修正問題和移植到新的硬體平台。

這得到授權的高校、政府和一些商業機構為後續 Unix 的發展打下了基礎,也為後來的紛争和分裂埋下了種子。

80 年代大批軟體公司湧現,如 Microsoft、SAP、Oracle、Adobe 等。軟體的傳遞形态逐漸變成了隻提供運作态程式而不再提供源代碼,除了銷售軟體之外,還提供收費的技術支援服務。時至今日,客戶使用軟體的方式沒有本質變化。

在伺服器領域,Unix 陣營發源于 AT&T 分發的早期代碼,SUN、HP、DEC、IBM 等基于不同的硬體架構發展了各自的 Unix 系統。通用與相容的需求催生了後續的 POSIX 等統一标準,但是 Unix 的授權與法律條文的模糊性以及後續持有者的态度和野心等導緻了大量問題。

各種源自 Unix 的系統分别改成了各家自己品牌分别發展,與 Unix 主幹間也缺乏統一的協調。這種分裂給了 WindowsNT 巨大的商業機會,發展成了今天的 Windows Server 系列作業系統。

80 年代另外一個重要事件是自由軟體基金會 (Free Software Foundation,簡稱 FSF) 的成立,在學術與科研機構中,「黑客精神」始終是很多人的追求,對軟體極緻自由追求的基礎是擁有對源代碼的修改權。

「上雲」之後,企業數字化的下一步是開源

Lifewire

這裡不得不說,理查德·斯托曼 (Richard Stallman)(對他的各種毀譽不影響 GNU 和 FSF 的意義和價值) 發起的 GNU(GNU is Not Unix) 行動重新開發實作了 Unix 的大部分工具系統,并且以 GPL 的許可發行這些軟體,GPL 對衍生軟體強制要求持續提供源代碼,GNU 實作了絕大部分的 Unix 常見工具體系,但是仍然無法擺脫對 Unix 作業系統核心的依賴。

直到 1991 年林納斯·托瓦茲 (Linus Torvalds) 開始的 Linux 核心的開發工作填補了這個空白,同樣采用 GPL 許可的 Linux 核心和外圍工具體系一起形成了 Linux 的生态系統。

90 年代中期以後,網際網路開始蓬勃發展,各種 Unix 衍生品與 Windows NT 在起步階段也支撐了這個過程。新創網際網路企業并不願意把寶貴的資金消耗在昂貴的硬體裝置和僵化的軟體授權上,Linux 因其不強制收費和開放後續源代碼修改的優勢,被很多新興網際網路企業選為背景服務運作平台。

作業系統之上的各種開源系統也得到了廣泛的運用與持續發展,逐漸形成了今天網際網路巨頭們基于開源軟體和自研業務軟體的普遍現狀。

02「開源」如何賺錢

從字面上看,開源是指開放軟體的源代碼給使用者,但是單純提供源代碼并不是目前「開源軟體」的标準定義,而是軟體向使用者提供源代碼并且授予修改和持續演進的自由,是以對修改後的軟體再分發在規定上的差異,形成了不同的開源軟體許可體系。

目前開源軟體的許可體系主要分為兩大類:一類強制要求再開源,代表性的有 GPL 許可體系;另一類不強制要求衍生開源,為寬松開源許可證,代表性的有 BSD、MIT、Apache 等許可體系。GPL 許可體系強制要求下遊「發行」時提供源代碼,不得改變 GPL 的相容性,限制從開源軟體轉變成非開源軟體 (但「發行」的定義,存在可被利用的空間)。

強制繼續開源,又衍生出對服務提供者,尤其是雲服務提供者的不同變種許可,如 AGPL 等。由于限制過多、過于複雜,是以 AGPL 的接受程度有限。

開源軟體的商業模式,可以分為以下幾種:

1 開源沒有改變軟體運作的基本模式

軟體的品質取決于設計、實作、測試和運作過程中暴露問題的持續修複,開源軟體改變的隻是開發階段和發行形态,其他軟體規律仍然是一樣的。完全把技術支援工作交給使用者是不可行的,支援客戶的業務運作并保證服務品質,仍然是軟體業務的重要組成部分。

2 開源成為分布式協作開發模式的典範和推動者

開源軟體項目的治理方式也有封閉與開放的差異,開源項目的主導權與管理權有兩種常見方式。一種是項目歸屬于某個基金會組織,如 Apache;另外一種是由發起者或建立者為主導的管理模式,如 MySQL 和 Linux 核心等。很難用簡單的方法判斷哪種方式一定就是最好的,但是相對來說,由一個有信用的、有成熟制度模式的非營利組織管理,更容易受到信任和吸引更廣泛的參與者。

3 開源不等于免費

自由軟體選擇的 Free Software 的名字往往被誤解為「免費」,其實在這裡 free 的含義是「自由」,開源是軟體自由精神的展現。今天即便是承諾完全開源的軟體,如 Linux,主要的商業化形态仍然是提供有品質保證的發行版和技術支援服務,收取許可費用不是被認可的業務形态。MySQL 是一個特例,因為它同時提供不同的軟體許可,商業版軟體和社群版軟體本質上是兩個産品,根本原因在于 MySQL 相關的所有知識産權完全屬于單一商業實體。

4 以發行版的方式提供軟體和在雲上提供服務仍然是主流業務模式

目前絕大部分軟體的使用者,都不是軟體本身的開發者。依靠使用者自行解決問題和持續演進,既不必要也不現實。整體的驗證測試和優化工作,保證品質和相容性,本質上與不開源的專有軟體的釋出沒有差異。

「上雲」之後,企業數字化的下一步是開源

03 使用開源軟體的挑戰

大多數企業是以行業開源者和行業使用者存在,它們所面臨的挑戰也不盡相同。

1 IT 架構治理的挑戰——CIO 的視角

不同的企業因為自身 IT 建設階段的不同,使用開源軟體的方式也各有不同。但不管哪種方式,最終都需要考慮 IT 架構統一治理。

第一種,新型企業全部業務從一開始就使用開源軟體建構。常見于網際網路公司和開源達到比較成熟階段後創立的企業。這類公司把 IT 能力作為核心競争力,平台技術團隊完全有能力采用開源和定制化修改的開源衍生産品。但随着定制系統的發展,代碼改動和軟體更新則面臨很大挑戰,被迫選擇持續加大技術投入,或走向避免改動的保守狀态,陷入落後的局面。

第二種,傳統企業局部使用開源軟體替換商業軟體。常見于成立時間已久的大中型企業,長期使用商業軟體享受軟體技術服務。新技術與新開發方式也使新的業務發展無法拒絕已經開源的軟體。

第三種,特定行業在一定發展階段選擇了商業軟體,越過發展台階後重新擁抱開源軟體和加大自身研發投入,典型如阿裡巴巴。

鑒于開源軟體自身的特點、版本路線不同,以及不同應用開源組合的複雜性,不同企業有選擇不同企業級技術架構路線的權利。

2 自主可控的挑戰

「自主」的含義大緻有兩種了解。一種是指采用主權範圍内廠商具有完全知識産權掌控力的軟體,不受國外産品和服務體系供應的限制,是以這裡的「主」是指的國家主體;另一種「主」是指的企業本身,企業可根據自主意志,按自己的需求、想法,在不違反授權的情況下,自由地修改和使用軟體。

「可控」對應的是「卡脖子」,無論是開源社群還是商業授權的軟體。一些企業想從現在開始就不再采購開源軟體的商用發行版和商業服務。誠然,集中精力自己研發、自己把控,在特定的場景上,放棄外部的商用依賴,另起爐竈,做出一套完全自主的産品,這樣的成功例子是有的,但畢竟是極少數。這種做法也需要有大量優秀的軟體工程師,并且積累了大量的經驗。

對大多數企業而言,要想做到自主可控,最好能仔細鑽研開源軟體的代碼、架構、測試。這裡的訣竅就是,與軟體産品的主流社群協同。自己越是有可能面臨風險,越應該廣泛建立與開源商業生态體系的聯系,除非真的被外部客觀不可抗拒原因切斷。

3 成本可控的挑戰

大多數開源軟體的成本,都是隐藏的,來自持續的品質控制、更新和運維服務的成本。雖然廣泛使用的開源軟體的品質和可靠性水準都很高,但是靠單一企業内部的技術力量支援海量源代碼産品的持續運作難度非常大。

仍需要避免一個認知誤區:某個單獨軟體的授權成本,并不是投入的全部,後續支撐性投入才是重頭戲。企業必須超越簡單的底線成本模型或 ROI 計算邏輯,站在業務視角看整體成本。

4 安全的挑戰

過去幾年開源社群的大量增加,以及媒體對最近一些資料洩露事件的報道,使得人們對開放源代碼安全的關注提高。根據統計數字,84% 的開源代碼庫至少含有一個漏洞,60% 的已稽核代碼庫包含高風險漏洞。2021 年 12 月,最新的 log4j2 的遠端代碼執行漏洞就是典型的事件,該漏洞影響巨大,一旦被攻擊者利用會造成嚴重危害。

5 合規的挑戰

《關于規範金融業開源技術應用與發展的意見》明确提出:金融機構應當遵循開源技術相關法律和許可要求,合規使用開源技術,明确開源技術的使用範圍和使用的權利與義務。

為了主動發現問題,起步階段可以考慮采用集中掃描的方式,對使用的軟體版本釋出前批量進行源碼開源合規的掃描。但是一旦發現問題留給開發人員修複問題的時間太短。如何能高效地統計企業内開源産品許可情況和使用情況、快速修正不合規的使用,形成企業開源軟體合規一覽表,是目前企業使用開源軟體合規性所面臨的重大挑戰之一。

04 企業「開源」的挑戰

1 建構生态的挑戰

早期的開源社群營運,并不能很好地反映開源技術在各行業各企業的實際應用情況。目前,開源社群與基金會的營運更看重産業溝通和使用者分享,軟體産品基于雲的使用量統計可能形成一個新的生态營運機制。

2 商業模式的挑戰

開源産品的商業模型基本上融合了以下四種模型:開放核心 (Open-Core),同時提供差異化的商業産品;專業服務 (Professional Services);托管 (Hosting);市場 (Market place),提供應用商店、應用市場、插件。

對于成功的開源公司來說,最常見的模式是開放核心産品,将托管、服務作為第二和第三收入來源。不過随着市場競争和客戶的不斷變化,這些模式可能都不适用。

「上雲」之後,企業數字化的下一步是開源

圖檔:7wData

05「雲時代」的開源

廣泛使用的開源軟體許可制定時間較早,當時雲計算還沒有出現或沒有形成大影響,許可條款主要針對的軟體以發行為主的情況。雲服務尤其是封裝後的 PaaS 服務包含的軟體,規避了 GPL 這樣的強制再開源的義務,開源衍生出的雲服務一定程度縱容了雲廠商減少對開源的貢獻。

公共雲的持續發展已經證明了閉源的基礎設施和支撐平台類軟體不再具有普遍的發展前途。

主流開源軟體與主流雲廠商是未來的發展方向,大型雲廠商投入人力和資金幫助開源項目持續發展。開源軟體以不同程度托管在雲上運作,提供技術能力,會是未來企業 IT 面臨的主要選擇。軟體尤其是技術平台軟體,需要大量的測試驗證和優化調整,來達到穩定性和成本效益的最優,公共雲的運作環境及其支援的海量、差異化客戶場景,為軟體的成熟提供了最佳的環境。

對于使用者來說,應用想要實作在不同雲平台之間一行代碼都不改的切換并不現實,但是追求雲特有能力不侵入應用代碼而隻是在管控層面發揮作用,應該是現實可行的做法。

總體來說,雲自誕生開始與生俱來的特性以及不斷發展的能力,天然就具備了解決企業可持續的使用開源軟體所帶來的挑戰。

雲平台能夠更好地集中解決安全與合規的問題,針對不同的開源軟體合規掃描、漏洞掃描、更新等等。雲廠商本身就是開源最大的使用者、最佳實踐,可以幫企業屏蔽試錯風險。

雲平台天然是一個協作平台,可以讓開源貢獻者、開源使用者,在雲上互通需求驅動發展。

06 為什麼「開源」無法避免

開源基礎軟體的應用廣度與深度提升

早期開源軟體集中在應用側,但是重要的基礎軟體,如作業系統、資料庫等,依舊采用封閉專有的開發模式。

今天, 97% 的軟體開發者和 99% 的企業使用開源軟體。信通院《開源生态白皮書 (2020 年)》指出,近年來國内企業逐漸側重基礎軟體領域開源項目布局,在作業系統、資料庫、中間件等領域湧現多個開源項目,其中不乏國際基金會的頂級開源項目。

開源軟體創造的價值凸顯

開源已成為全球數字科技一種強大的技術創新模式,并從最初的軟體行業走向了硬體、晶片、視訊、IoT、AI 等多個領域。新産品在開源,新架構在開源,新平台也在開源,連頂尖的研究成果也都以開源形式釋出。

國家對開源軟體前所未有的重視

2021 年,「十四五規劃」中明确指出要「支援數字技術開源社群等創新聯合體發展,完善開源知識産權和法律體系,鼓勵企業開放軟體源代碼、硬體設計和應用服務」。毫無疑問,開源被提到國家戰略層面進行支援,将走上跨越式發展的快車道。

閱讀完整文章點選左下角「閱讀原文」

本文為極客公園原創文章,轉載請聯系極客君微信 geekparkGO