自從CTO Jeremy King上臺后,沃爾瑪對開發團隊按InnerSource的方式進行了重新整合。經過磨合期,大家已經認可了這種新的開發方式,而且InnerSource帶來的各種好處開始不斷顯現出來。最近,Clint Boulton對沃爾瑪采用InnerSource的情況進行了進一步報道。
InnerSource僅僅是一個名稱,它是一種在企業內部應用開源軟件實踐的軟件開發方法,也叫Enterprise Source或Internal Open Source。InnerSource實際上就是在公司內部,在各個不同開發團隊之間以開源方式開發軟件的工作方法。它可以帶來的好處包括更快提交項目、團隊之間合作更順暢、自主創新、高質量的代碼和文檔等。已經有許多大公司在內部實施了InnerSource,包括Autodesk、BLoomberg、Bosch、Capital One、PayPal和SanDisk等。InnerSource對于那些有著上千人規模開發團隊的公司尤為重要。
身為沃爾瑪CTO和WalmartLabs負責人,Jeremy King認為:
我們對這種內部開源的模式實踐得越多,我們的組織就越有彈性,我們也就能越快地將代碼上線為用戶所用。
建議你們也采用開源軟件和開發方式,因為這樣可以開發更快、成本更低和質量更好,但我們也希望你們也能為開源做出貢獻,因為這樣對整個社區是有好處的。
沃爾瑪實施InnerSource采用的是企業版GitHub,用法和免費公開版大致相同,唯一的關鍵不同是它是部署在企業內部、外部不可訪問的,因為有一些關鍵算法還是不能公開的。
自從King從2011年由eBay跳槽過來之后,沃爾瑪就加速了對開源的推進。King說他們已經把許多傳統軟件換成了開源產品,比如Cassandra之類的NoSQL,還用Kafka替換了消息總線。也引入了許多開源開發工具,如Node.js和服務器端JavaScript環境等,并用OpenStack重構了它的電子商務平臺。
沃爾瑪的研發團隊有一千多人,他們每個月要做約30000次代碼部署,但是King仍認為他們只是“世界上最大的創業團隊”而已,因為有的公司做一個項目可能就會要上千人了。沃爾瑪的一千多名研發工程師分布在約100個小組中,每個小組有10-20人,開發、構建、測試和部署等全部由小組自行負責,以DevOps模式工作。盡管大家的工作模式都是持續集成、迭代開發,不可避免地有時候某些團隊會由于任務過多而成為瓶頸,這樣在小組之間可以共享、開發和貢獻代碼就非常重要,可以在某種程度上避免這樣的“單點故障”了。King舉例道,比如某個工程師需要能連接到支付網關上,但負責支付網關的團隊手上已經堆積了5個更重要的項目了,沒時間做這個。在這種情況下這個工程師可以自己把相關功能實現了,然后再請支付網關團隊的人審核通過,就可以了?;蛘弑热缯f一個支付團隊的工程師對于購物車等功能忽然有了什么新想法,那他就直接簡單的作出原型來,然后通過GitHub提交給對應團隊就好了。
當然King也提到了一些困難,InnerSource并不是完美地適合每一個項目的。要能成功地跨團隊提交代碼的話,你就必須對對方項目的代碼框架和邏輯等也熟悉,這是一個大門檻。
King說沃爾瑪推行開源的開發方式之后,對開源社區成果的使用和回饋行為還幫助他們吸引了許多技術人才。在他們準備錄用的候選人中,50%手中還握有Google、Apple、Facebook、LindedIn或其他硅谷著名公司的Offer,可是最終這些人中有70%還是選擇了沃爾瑪。King把爭奪人才勝利的原因歸功于兩點:一是小而專的團隊,二是開源。“大家都對我們已經取得的成就非常贊賞,同時也希望如同在創業公司工作一樣。”
在大數據概念引爆流行產業界之前,沃爾瑪已經開始了網站數據庫整合遷移和Hadoop集群擴展工作,收購Kosmix并在其基礎上建立Walmart Labs,并在近年著手收購專注于數據挖掘或移動社交的初創公司如OneOps、Inkiru,Tasty Labs,OneRiot,進軍互聯網。
沃爾瑪于今年早期發布了開源項目OneOps,這是一個讓程序員們可以測試各家不同公司的云平臺,并在它們之間自由切換的平臺,它的功能對于使用了多種異構云模型的公司非常有好處。OneOps 可以在任何基于云的平臺上,在整個生命周期內,幫助用戶管理關鍵的應用程序負載,同時可以讓用戶從一家云供應商遷移應用、數據庫或整個云環境,到另一個云供應商,以便爭取更好的報價。OneOps 強大的云技術,可以幫助工程避免被限制一個云供應商上。OneOps的開源,對于把應用程序部署在云、需要持續管理和監控的技術人員來說,絕對是個好消息。同樣,這對想要更換云服務商的公司也是喜聞樂見的。
最近沃爾瑪又發布了新的開源項目Electrode,使用反應式開源組件的程序員們可以用它輕松地為移動Web和App開發頁面。