初創(chuàng)企業(yè)須知:軟件像汽車的組件革命
此文乃Apache Maven項(xiàng)目、Plexus IoC框架、Apache Velocity項(xiàng)目的創(chuàng)始人,他還幫助設(shè)立了收到廣泛尊敬的開源社區(qū)項(xiàng)目孵化器設(shè)施Codehaus。他目前的身份是Eclipse Foundation董事、Sonatype的CTO。
今天的軟件已不同于過去,這一點(diǎn)已經(jīng)不是什么秘密。今天的軟件往往是基于云的、包含有社會化功能,且隨時(shí)隨地對任何人開放,開源加載在任何類型的設(shè)備上。但這些都是表面上地不同,在這些表象底下還有大家看不到的地方,其創(chuàng)建和交付的方式也已經(jīng)很不一樣。
今天的軟件應(yīng)用大都是由軟件組件組裝而成,而這些組件基本上都是開源的,且大都出自于開發(fā)最終應(yīng)用以外的組織。一個(gè)典型的Java應(yīng)用有80%屬于對公共開放的開源組件。這一軟件創(chuàng)作的新過程允許開發(fā)者的行動敏捷了許多,開源持續(xù)地交付,只有在必要的情況下才會白手起家撰寫代碼。對于企業(yè)來說,這意味著推向市場的速度更快、成本更低。
看到Andreessen-Horowitz對程序員的代碼共享網(wǎng)站及社交網(wǎng)絡(luò)GitHub的1億美元投資,我們就已經(jīng)知曉協(xié)作式、開源化的開發(fā)的流行程度。GitHub之類的套件庫使得開源開發(fā)得以大眾化,同時(shí)幫助了年輕項(xiàng)目的發(fā)展,并培育出了一個(gè)相互協(xié)作、生機(jī)勃勃的大眾化社區(qū),以***的速度制造出各種新軟件。
GitHub幫助的是軟件生產(chǎn)者,也就是那些創(chuàng)建組件的開發(fā)者。但是那些組件的消費(fèi)者—最終利用開源組件開發(fā)應(yīng)用的開發(fā)者和組織又該如何呢?一旦代碼完成并準(zhǔn)備大規(guī)模部署,項(xiàng)目團(tuán)隊(duì)則會將其完工的產(chǎn)品通過Central Repository來分發(fā)。后者是一個(gè)免費(fèi)、公開、基于云的套件庫,可供開發(fā)者將自己的軟件分發(fā)給全球數(shù)百萬的用戶。Central Repository正迅速成為開源組件的好去處,每年會接受到對6萬多家組織的超過75億項(xiàng)請求,組件數(shù)超過40萬。Central Repository是由Sonatype運(yùn)營的,其開發(fā)的產(chǎn)品和信息服務(wù)可以幫助軟件開發(fā)者更好地使用其所消費(fèi)的組件。
為什么說軟件就像汽車,這又意味著什么?
今天的軟件可以快速裝配,但是跟汽車制造商的一樣,軟件也有著一條極為復(fù)雜的“供應(yīng)鏈”。最終產(chǎn)品(應(yīng)用)也跟汽車類似有著成千上萬個(gè)由數(shù)百個(gè)供應(yīng)商外包的組件。每一個(gè)組件都有自己的生命周期、自己的補(bǔ)丁和功能增強(qiáng)以及自身潛在的風(fēng)險(xiǎn)。
跟汽車一樣,一個(gè)組件的缺陷會給用用戶來嚴(yán)重的問題。最糟糕的情況下,這些問題會導(dǎo)致安全、數(shù)據(jù)泄漏、穩(wěn)定性及性能問題,乃至于與知識產(chǎn)權(quán)有關(guān)的法律行動。
是的,你每天使用的大多數(shù)應(yīng)用,還有那些構(gòu)成你業(yè)務(wù)運(yùn)營的基礎(chǔ)的應(yīng)用,都是由會給你的組織帶來風(fēng)險(xiǎn)的組件構(gòu)成的,不管你信不信,反正我信了。
這里有可能引發(fā)的問題可以列舉一個(gè)簡單的例子。最近 Aspect Security利用Central Repository的數(shù)據(jù)進(jìn)行了分析,發(fā)現(xiàn)在最常用的開源組件中存在著普遍的安全漏洞。
令人遺憾且具有諷刺意味的是,使用這些組件的組織對此竟然毫不知情,甚至在這些組件已經(jīng)修補(bǔ)了相關(guān)漏洞的情況下也是如此。由于任何應(yīng)用中的組件均有可能源自于許多不同的項(xiàng)目,而且新版本每年都要發(fā)布很多次,最終用戶想要跟進(jìn)是很難的。
如何避免這一切?
組件需要像其他企業(yè)資產(chǎn)一樣加以“管理”。需要進(jìn)行分析、監(jiān)控和評估以便確保搭建應(yīng)用的組件具備***品質(zhì)、***風(fēng)險(xiǎn)。不過這一切在今天可以很容易地實(shí)現(xiàn)—組件生命周期管理(CLM)可以幫助開發(fā)者選擇、使用并監(jiān)控那些成為自己應(yīng)用支柱的組件。
CLM通過幫助開發(fā)者從一開始就選擇***的組件、在開發(fā)過程中監(jiān)視組件、跟蹤新版本、補(bǔ)丁和安全檢測把組件的使用流程管理妥當(dāng)。
在軟件開發(fā)周期過程中對開源組件的使用進(jìn)行適當(dāng)?shù)墓芾砜梢员WC組件的健壯性、安全性以及版本的更新,讓組織可以專注于開發(fā)和交付***的應(yīng)用。這一切都可以讓開發(fā)者保持平和的心態(tài),帶來更多的創(chuàng)新。也正因?yàn)榇?,它在今天對開發(fā)者的意義之大前所未見。