- 企業(yè)開源實(shí)踐之旅:基于紅帽客戶的開源建設(shè)實(shí)踐案例
- 劉翔 任衛(wèi)海等編著
- 2637字
- 2024-04-15 11:51:23
1.3.4 開源軟件的供應(yīng)鏈
當(dāng)今的軟件開發(fā),為了快速提供軟件功能,沒有人會(huì)從零開始去編寫每一行代碼,開源軟件可以提供成千上萬個(gè)功能,從開源軟件中尋找并引用一些成型的功能,將大大加快開發(fā)人員的創(chuàng)新速度,這便在基于開源軟件的項(xiàng)目中引入了隱形的供應(yīng)鏈關(guān)系。
由于開源軟件的廣泛運(yùn)用和云原生時(shí)代的到來,基礎(chǔ)架構(gòu)越來越復(fù)雜和多樣化,即使是同一個(gè)開源軟件,每個(gè)公司的架構(gòu)方式和實(shí)施方式也會(huì)存在差異,選用的周邊配套組件也不盡相同。雖然開源軟件本身不存在使用權(quán)的限制,但是在全球復(fù)雜的政治、經(jīng)濟(jì)格局下,開源軟件供應(yīng)鏈中只要有一個(gè)環(huán)節(jié)出現(xiàn)中斷,最終也會(huì)像工業(yè)制造的供應(yīng)鏈一樣,波及最終的使用端。軟件供應(yīng)鏈出現(xiàn)問題,不僅新的軟件供應(yīng)會(huì)受到影響,甚至?xí)苯佑绊懙疆?dāng)下正在使用的軟件的可用性。
軟件的開發(fā)過程不像物品的制造過程,不需要供應(yīng)鏈的上一環(huán)節(jié)每次都把生產(chǎn)出來的產(chǎn)品交付給下一環(huán)節(jié),因?yàn)檐浖唤?jīng)生產(chǎn)完成,你就可以無限次地部署和使用它,不再需要供應(yīng)鏈的參與。但實(shí)際上,軟件需要安裝,出了問題需要有人服務(wù),存在缺陷需要有人修復(fù),這些環(huán)節(jié)也是供應(yīng)鏈的過程。進(jìn)一步講,對(duì)于企業(yè)版的開源軟件,提供授權(quán)許可就是供應(yīng)鏈中的一環(huán)。
只要基于開源軟件的源代碼進(jìn)行編譯,得到二進(jìn)制安裝和運(yùn)行文件或者使用社區(qū)提供的可運(yùn)行文件,就可以自由使用開源軟件。這個(gè)供應(yīng)鏈從表面上看非常簡(jiǎn)單,但實(shí)際上開源軟件有著更為復(fù)雜的供應(yīng)鏈結(jié)構(gòu)。
開源軟件的源頭是開源項(xiàng)目,但事實(shí)上,開源軟件供應(yīng)鏈的源頭起始于不同領(lǐng)域的開源軟件基金會(huì)。作為某一領(lǐng)域開源軟件方向的主導(dǎo)者,雖然多數(shù)基金會(huì)自身并不直接制定技術(shù)標(biāo)準(zhǔn),但是基金會(huì)組織、引導(dǎo)并孵化該領(lǐng)域中的開源項(xiàng)目,這樣的過程最終會(huì)形成一種事實(shí)標(biāo)準(zhǔn),并且基金會(huì)本身畢竟是一個(gè)經(jīng)國(guó)家批準(zhǔn)的實(shí)體組織,依然要受注冊(cè)國(guó)的法律約束。
很多大型開源軟件要引用和集成幾十甚至上百個(gè)其他開源軟件,比如Linux操作系統(tǒng)就是把Linux Kernel通過Fedora、openSUSE、openEuler等若干不同的發(fā)行版,將應(yīng)用、工具、類庫、各種運(yùn)行時(shí)集成在一起,形成安裝即可用的操作系統(tǒng)。如今,沒有人會(huì)為了用Linux操作系統(tǒng)而從一個(gè)Linux Kernel開始做搭建。其他類似的系統(tǒng)還有很多,如AI平臺(tái)、容器平臺(tái),大的集成性開源項(xiàng)目往往會(huì)關(guān)聯(lián)眾多的其他開源項(xiàng)目。
開發(fā)開源軟件的社區(qū)本身并不會(huì)為用戶提供技術(shù)服務(wù)和各種商業(yè)化的發(fā)行服務(wù),比如廣泛的兼容性測(cè)試、產(chǎn)品手冊(cè),甚至是安裝和升級(jí)工具。沒有足夠技術(shù)積累、人力資源和使用規(guī)模的商業(yè)用戶很難自己完成這類工作,這時(shí)一些IT公司擔(dān)當(dāng)起開源軟件服務(wù)商的角色。比照以往的傳統(tǒng)軟件,軟件服務(wù)商可以分為兩類。第一類是軟件的發(fā)行商,這類服務(wù)商既可以提供軟件的日常使用類的服務(wù),也可以提供缺陷修復(fù)類的服務(wù),發(fā)行商掌握軟件的源代碼,能夠?qū)⑦\(yùn)行代碼中的故障還原到源代碼的準(zhǔn)確位置并進(jìn)行修改,幫助用戶進(jìn)行根因分析。第二類是掌握了該軟件技術(shù)能力的服務(wù)商,可以提供日常使用和配置類的維護(hù),根據(jù)已知故障和修復(fù)方法,幫助用戶嘗試解決問題。但是由于這類服務(wù)商不具備對(duì)軟件源代碼的維護(hù)能力,因此他們無法幫助客戶進(jìn)行代碼級(jí)的故障排查。但是對(duì)于開源軟件,這一狀況就發(fā)生了變化,開源軟件的源代碼是公開的,得到源代碼的服務(wù)商即使不是該軟件的主要開發(fā)者,也可以通過源代碼幫助客戶進(jìn)行根因分析,并將修復(fù)的內(nèi)容提交到社區(qū)以徹底解決軟件故障。只要服務(wù)提供者能夠編譯該軟件的源代碼,并能夠復(fù)現(xiàn)編譯過程,就能夠提供該開源軟件的全面服務(wù)。
前文中提到了代碼庫,作為開源軟件承載的載體,代碼庫也是供應(yīng)鏈中重要的一環(huán)。為開源軟件提供代碼庫的機(jī)構(gòu)往往都是企業(yè),這和基金會(huì)有所不同,企業(yè)會(huì)受到所在地政府更為直接的管控,政府有權(quán)限制企業(yè)服務(wù)于某個(gè)人、某個(gè)企業(yè)、某個(gè)地區(qū),甚至某個(gè)國(guó)家。2019年,全球最大的代碼托管平臺(tái)GitHub更新了用戶協(xié)議,表示GitHub企業(yè)服務(wù)器及用戶上傳的信息要接受美國(guó)法律監(jiān)管。
所以,開源軟件供應(yīng)鏈?zhǔn)欠窨梢蚤L(zhǎng)期安全可控,是一件很復(fù)雜的事情。軟件不像硬件,存在性能接近的產(chǎn)品,可以直接替換使用。一個(gè)特定的開源軟件一定是唯一的,任何克隆或者仿制的結(jié)果都是一個(gè)獨(dú)立的新軟件,可能在開始克隆時(shí)兩個(gè)軟件基本相同,但是隨著時(shí)間的推移,兩者會(huì)存在越來越大的差異,無法做到既平行發(fā)展又保持高度一致。這就好比RHEL和SUSE Linux兩種流行的Linux操作系統(tǒng),兩者都采用類似的架構(gòu)、RPM包的安裝運(yùn)行機(jī)制,相似度非常高,但是如果RPM包安裝錯(cuò)了環(huán)境,應(yīng)用也無法正常運(yùn)行。
采用全新的供應(yīng)鏈安全方式,不僅要看該軟件的供應(yīng)鏈上游,還要看其下游是否能夠跟隨全新的供應(yīng)鏈體系,這也是談到開源軟件的時(shí)候,生態(tài)建設(shè)遠(yuǎn)比供應(yīng)鏈可控更為重要的原因。在生態(tài)建設(shè)中,每一個(gè)參與方都應(yīng)該是受益者,否則這個(gè)生態(tài)將無法長(zhǎng)久存在,開源軟件的參與者可以是企業(yè)或者個(gè)人,但沒有誰完全依靠興趣和榮譽(yù)而為社區(qū)做貢獻(xiàn)。就像在前端開發(fā)方面非常流行的core-js項(xiàng)目,這是一個(gè)JavasCript庫,由Denis Pushkarev全職開發(fā),在全球前10000個(gè)網(wǎng)站中,超過一半的網(wǎng)站在使用這個(gè)模塊,其中包括蘋果公司等大型公司。因?yàn)橐揽磕壳暗木栀?zèng)方式無法維持生計(jì),Denis打算放棄對(duì)core-js的維護(hù)。在2015年之前,紅帽一直是Linux Kernel的最大貢獻(xiàn)者,但是Intel后來居上成為第一,其原因是參與Kernel項(xiàng)目讓Intel可以在第一時(shí)間把CPU的新特性推向市場(chǎng),Linux的流行會(huì)帶來Intel CPU在企業(yè)端的廣泛應(yīng)用。
對(duì)于最終用戶來說,最大的供應(yīng)鏈安全是選擇上的自由而不是僅僅依靠信任來建立安全。與傳統(tǒng)軟件相比,開源軟件的變動(dòng)更為頻繁,社區(qū)沒有義務(wù)為使用社區(qū)軟件的用戶提供軟件功能的連續(xù)性保障,因此在早些時(shí)候,經(jīng)常可以看到一些基礎(chǔ)開源軟件中已棄用的函數(shù)讓開發(fā)人員崩潰,甚至是一個(gè)開源項(xiàng)目突然銷聲匿跡。我們?cè)?jīng)幫助一個(gè)有上萬臺(tái)服務(wù)器的客戶做了一個(gè)估算,是否可以把當(dāng)前的操作系統(tǒng)A都替換成B,結(jié)果發(fā)現(xiàn)這是一件非常吃力又不討好的事情。雖然操作系統(tǒng)看起來不像數(shù)據(jù)庫那樣關(guān)鍵,不像中間件那樣和應(yīng)用直接相關(guān),不像開發(fā)框架那樣嵌入在應(yīng)用代碼里,但是如果要更換操作系統(tǒng),各種兼容性驗(yàn)證、環(huán)境的參數(shù)還原、穩(wěn)定性測(cè)試,以及尋找切換的時(shí)間窗口,整個(gè)數(shù)據(jù)中心全年只能干這一件事,前提是業(yè)務(wù)應(yīng)用開發(fā)部門會(huì)全力配合。
實(shí)際上,隨著云架構(gòu)的廣泛運(yùn)用,一些新的技術(shù)和管理方法能夠幫助企業(yè)來解決這類可能會(huì)發(fā)生的事情。基于容器化的部署、不可變基礎(chǔ)設(shè)施、模板化管理,再改變數(shù)據(jù)中心的系統(tǒng)構(gòu)建模式,這不僅能使操作系統(tǒng)的更換變得更為容易,而且其他基礎(chǔ)設(shè)施的可替換性、中間件的可替換性都在大幅提升。企業(yè)需要盡快落地云架構(gòu)能力,做到一切皆可換,才能真正實(shí)現(xiàn)“我的開源軟件供應(yīng)鏈,我做主”,避免上游改道、下游遭殃的情況發(fā)生。
- 雙高企業(yè)文化:讓企業(yè)文化簡(jiǎn)單有效
- 班組長(zhǎng)培訓(xùn)教程
- 高層次創(chuàng)新創(chuàng)業(yè)人才評(píng)價(jià)工作研究
- 怎樣管,員工才肯聽 怎樣帶,員工才肯干
- 黔南州服務(wù)業(yè)發(fā)展研究報(bào)告
- 新資本思維:如何開一家值錢的公司
- 招聘管理從入門到精通
- 突發(fā)事件應(yīng)對(duì)與企業(yè)傳播
- 互聯(lián)網(wǎng)+時(shí)代的企業(yè)危機(jī)管理
- 年度經(jīng)營(yíng)計(jì)劃制訂與管理(第4版)
- 零售管理(原書第9版)
- 稻盛和夫談成功方程智慧
- 給你一個(gè)團(tuán)隊(duì),你能怎么管
- 經(jīng)理人的工作:向斯隆學(xué)管理(包政管理經(jīng)典)
- 帶人要同頻,管人要共情