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