目前我們對于開源的理解,早已走出了之前“開放源代碼”的膚淺。在越來越繁榮的開源環(huán)境下,大家都在不同層面上為開源做著貢獻(xiàn):貢獻(xiàn)源代碼、完善社區(qū)生態(tài)、推動閉源軟件走向開源,等等。企業(yè)從開源中獲得的好處也越來越大,這讓諸多武藝高強(qiáng)的技術(shù)創(chuàng)業(yè)者找到了競技場。
然而,把在技術(shù)人眼中炫酷、客戶眼中冰冷的代碼變成好的產(chǎn)品,并不那么容易。如何讓那些高大上的國外開源技術(shù),在本土環(huán)境下真正落地?如何借開源項(xiàng)目接觸真實(shí)環(huán)境下用戶的需求,在完善產(chǎn)品的同時(shí)促進(jìn)社區(qū)發(fā)展?在接受51CTO.com記者獨(dú)家專訪時(shí),數(shù)人科技CTO肖德時(shí),國內(nèi)首位提交Docker代碼的貢獻(xiàn)者,分享了他與數(shù)人科技帶著Docker 和Mesos闖蕩花花世界這一年多的路上,經(jīng)歷的真心話和大冒險(xiǎn)。
肖德時(shí),數(shù)人科技CTO,Mesos/Docker項(xiàng)目代碼貢獻(xiàn)者,擅長企業(yè)內(nèi)部工具的設(shè)計(jì)及實(shí)現(xiàn)。在數(shù)人科技負(fù)責(zé)開源項(xiàng)目的選型和整合,讓眾多開源項(xiàng)目無縫連接,提供更加強(qiáng)大、更加彈性、更加穩(wěn)定的運(yùn)算能力。
真心話篇
把握市場機(jī)遇
云計(jì)算的開放、自由推動開源成為大家擁抱的對象。現(xiàn)階段的開源已經(jīng)不像以前,處于相對獨(dú)立的局面。那些做開源的人本身在商業(yè)公司里面身居要職,或者是核心開發(fā)者。他們會將商業(yè)軟件的核心思想透露給開源社區(qū)。所以業(yè)界非常流行的那些開源軟件,其實(shí)在商業(yè)領(lǐng)域已經(jīng)被驗(yàn)證很多遍。
在這種環(huán)境下,大家不再把自己的核心技術(shù)握在手里。因?yàn)榭蛻粽嬲枰氖墙鉀Q方案,而不是冷冰冰的代碼。
云計(jì)算也帶來了更為靈活的IT基礎(chǔ)設(shè)施。隨著OpenStack等云計(jì)算技術(shù)的成熟,云上的解決方案越來越多。這時(shí)候,大家急需一種標(biāo)準(zhǔn)化技術(shù),實(shí)現(xiàn)對不同云環(huán)境的統(tǒng)一管理,使企業(yè)遷移到云的應(yīng)用可以得到有效衡量。
種種商業(yè)背景和大趨勢,讓肖德時(shí)和數(shù)人科技看到了云計(jì)算風(fēng)口下國內(nèi)的創(chuàng)業(yè)機(jī)會,那就是如何為企業(yè)提供端到端的解決方案,利用開源項(xiàng)目讓國外那些只聞其聲未謀其面的高大上技術(shù),在國內(nèi)真正落地。
選擇擅長技術(shù)
早先,老肖是紅帽分發(fā)系統(tǒng)團(tuán)隊(duì)的Team Leader,主要負(fù)責(zé)把紅帽的軟件包分發(fā)到各個(gè)CDN,讓客戶去訂閱。這是紅帽的生命線,所以紅帽內(nèi)部成立伊始就對這個(gè)系統(tǒng)非常重視,到現(xiàn)在已經(jīng)有十幾年的時(shí)間,花費(fèi)了大量人力資源對其進(jìn)行維護(hù)。老肖是閑不住的人,在紅帽,只要做好自己的本職工作,愿意多干你可以多干,沒人攔,所以老肖沒事找事的參與到開源項(xiàng)目中。
2013年年初的一天,DotCloud在一次Linux 技術(shù)分享會上用一分鐘碼震驚了世界。在世界的某個(gè)角落,老肖也跟著一起搖擺。
Docker是一個(gè)只用一行代碼,就完成原來LXC要配置十行命令才能配出來的“Hello, World!”程序的開源應(yīng)用容器引擎。借助Docker,我們可以將每臺機(jī)器看作一個(gè)資源點(diǎn),就像一個(gè)一個(gè)小盒子,無論什么軟件都能被標(biāo)準(zhǔn)化封裝,最后像搭積木一樣,使整個(gè)服務(wù)運(yùn)行起來。它的出現(xiàn)得到諸多IT巨頭的關(guān)注,并紛紛在Docker生態(tài)圈搶占一席之地,希望能夠主導(dǎo)Docker的話語權(quán)。老肖迫不及待地參與到Docker開發(fā)當(dāng)中,并成為國內(nèi)提交Docker代碼第一人。
此時(shí)的老肖并不知道,他已經(jīng)被一個(gè)讓谷歌養(yǎng)懶了的人—老王—給盯上了。
話分兩頭。2014年,老王從谷歌回國創(chuàng)業(yè)。他發(fā)現(xiàn)一個(gè)問題,原來在谷歌用得極好的云計(jì)算平臺Borg國內(nèi)沒有,這讓老王覺得干啥都不順手,于是他開始在浩瀚的開源世界里面尋覓。終于,他看到 Apache Mesos,發(fā)現(xiàn)這個(gè)技術(shù)的核心思想完全是照抄Borg系統(tǒng)的,更美妙的是它開源。而且拜賜于Docker的大火,Mesos 受到越來越多的互聯(lián)網(wǎng)公司追捧。因?yàn)镈ocker與Mesos的結(jié)合,可以解決企業(yè)IT資源浪費(fèi)、環(huán)境異構(gòu),支撐企業(yè)容災(zāi)備份、混合云部署、彈性擴(kuò)容等實(shí)際問題。一開始,Twitter就拿它做最佳實(shí)踐,后來Netflix、Apple,還有國外的各種云和大數(shù)據(jù)公司公司,都慢慢在用到這個(gè)技術(shù)。老王的眼睛亮了。
就像Docker找到Mesos作為黃金搭檔般浪漫,老王和老肖相遇了。他們看到,目前國內(nèi)的很多企業(yè)一直在不斷地浪費(fèi)資源。但好在大家已經(jīng)開始希望通過購買服務(wù),獲得專業(yè)技術(shù)的支撐,來更好地專注核心業(yè)務(wù)發(fā)展。所謂術(shù)業(yè)有專攻,老王和老肖希望用自己擅長的技術(shù),扛起為企業(yè)提供專業(yè)的業(yè)務(wù)基礎(chǔ)設(shè)施解決方案的大旗。
貼近用戶需求
數(shù)人科技專注于toB市場,他們選擇真正到企業(yè)中去登門拜訪,了解國內(nèi)中小企業(yè)生產(chǎn)環(huán)境中的實(shí)際問題。老肖認(rèn)為,這是數(shù)人科技與客戶共同成長的過程:“他們長大了,我們也就長大了”。在與企業(yè)逐漸接觸的過程中,與企業(yè)業(yè)務(wù)信息進(jìn)行對接,充分利用計(jì)算資源,打破之前的壁壘。
能否選好那個(gè)最容易下手的行業(yè),充分發(fā)揮服務(wù)優(yōu)勢,決定著一款產(chǎn)品的成敗。老王和老肖選擇一些業(yè)務(wù)特點(diǎn)非常明顯的互聯(lián)網(wǎng)初創(chuàng)公司進(jìn)攻,比如互聯(lián)網(wǎng)金融行業(yè)和生物信息行業(yè),這些行業(yè)的共同點(diǎn)是都需要大量的計(jì)算資源,還有做DSP、日志分析等,并嘗試將在這些企業(yè)中發(fā)現(xiàn)的共性問題,做成模板化的解決方案。
真正走進(jìn)企業(yè)后老肖更直觀地感受到,客戶不會關(guān)心你是不是用了Docker還是Mesos,而是關(guān)注大數(shù)據(jù)環(huán)境能不能快速搭建,能不能實(shí)現(xiàn)跨云或是跨機(jī)房容災(zāi),能不能降低運(yùn)維成本,開發(fā)的分布式應(yīng)用能不能得到有效管理……了解企業(yè)的實(shí)際需求,基于開源技術(shù)提供定制化的解決方案。Docker與Mesos可以為企業(yè)提供統(tǒng)一的軟件基礎(chǔ)構(gòu)架,降低開發(fā)、運(yùn)維的復(fù)雜度,也使業(yè)務(wù)部署、更新到多個(gè)數(shù)據(jù)中心變得更方便,極大減輕災(zāi)備維護(hù)工作。這就是數(shù)人科技能為用戶提供的商業(yè)價(jià)值。
兼顧外圍與開源社區(qū)間關(guān)系
肖德時(shí)告訴我們,目前國內(nèi)真正做Mesos貢獻(xiàn)的,只有數(shù)人科技一家。在客戶提供服務(wù)的過程中,數(shù)人也會收集到的很多有價(jià)值的信息反饋給社區(qū),保持和社區(qū)有很好的關(guān)系。
技術(shù)人在創(chuàng)業(yè)的過程中,很難再為社區(qū)做代碼貢獻(xiàn),因?yàn)槟軌蛟诩ち业氖袌龈偁幹写婊钕聛恚欠浅?shí)際而艱難的。但是老肖認(rèn)為,兼顧外圍和社區(qū)之間的關(guān)系是比貢獻(xiàn)代碼還有價(jià)值的事情。
對于創(chuàng)業(yè)公司來說,用技術(shù)做產(chǎn)品不是閉門造車,要提取出技術(shù)本身中的商業(yè)價(jià)值,而非寫出漂亮的代碼孤芳自賞。對社區(qū)做出貢獻(xiàn)的方式有很多,而社區(qū)最關(guān)注的也是項(xiàng)目能不能被企業(yè)真正用起來。作為擁抱開源的技術(shù)驅(qū)動型公司,將技術(shù)商業(yè)化過程中的發(fā)現(xiàn)到的問題,比如Docker的兼容性問題,毫無保留地反饋回社區(qū),這對社區(qū)的發(fā)展同樣起到非常積極的正向推動作用。
大冒險(xiǎn)篇
迎接云計(jì)算發(fā)展
老肖說,在國內(nèi)云計(jì)算市場做創(chuàng)業(yè),一定要有信心和耐心,等著云計(jì)算發(fā)展。雖然李克強(qiáng)總理說“互聯(lián)網(wǎng)+”,但現(xiàn)在“+”到了什么區(qū)域,資源是不是只集中在北上廣?商業(yè)模式又在哪里?
首先本土云生態(tài)環(huán)境正變得越來越復(fù)雜。國內(nèi)云基礎(chǔ)設(shè)施參差不齊,不同的云間沒有統(tǒng)一的標(biāo)準(zhǔn),因此很難界定客戶真正得到的服務(wù)質(zhì)量的保證。這對數(shù)人來說是機(jī)遇也是挑戰(zhàn),他們希望能夠通過消除各種底層云環(huán)境間的異構(gòu)為用戶提供統(tǒng)一的云平臺,這就需要和不同的云服務(wù)商進(jìn)行API對接。這里面最大的難度不是全部打通,而是讓客戶無感知的在不同云平臺間行走,實(shí)現(xiàn)跨越調(diào)度,這需要花費(fèi)很大的力氣。
受網(wǎng)絡(luò)資源限制,跨云間的數(shù)據(jù)調(diào)度基本無法實(shí)現(xiàn)。目前數(shù)人云的解決方案是實(shí)現(xiàn)一個(gè)緩沖階段,也就是先做一個(gè)鏡像,與遠(yuǎn)程數(shù)據(jù)同步一起進(jìn)行,等數(shù)據(jù)同步完成后再做切換。雖然這個(gè)方案目前并不完善,但老肖堅(jiān)定地認(rèn)為,基于Docker完成跨云調(diào)度實(shí)現(xiàn)資源共享,在技術(shù)實(shí)現(xiàn)方面是沒有問題的,只是需要一些場景的磨合。
慎用微服務(wù)架構(gòu)
目前創(chuàng)業(yè)公司在持續(xù)集成方面做的都不成熟,每家都有自己的問題。數(shù)人的問題就在于一開始做的系統(tǒng)就做成很多小模塊,每一個(gè)小模塊都有自己的接口。每一個(gè)小部門都有自己的版本,而且程序員的開發(fā)進(jìn)度不一。在相互調(diào)用的過程中就會發(fā)現(xiàn),如果事前沒有統(tǒng)一的進(jìn)度調(diào)配計(jì)劃,部署時(shí)非常容易出現(xiàn)問題。
隨著后續(xù)集成測試、依賴關(guān)系測試的進(jìn)行,在沒有足夠經(jīng)驗(yàn)的前提下,就會簡單地認(rèn)為把每一個(gè)服務(wù)都集起來就可以了。但是一到部署環(huán)境下,模塊間相互調(diào)用時(shí)就會報(bào)錯(cuò),再做測試連調(diào)的時(shí)候,工作量會非常大,經(jīng)常會返工,這讓老肖印象非常深刻,并讓數(shù)人的技術(shù)團(tuán)隊(duì)越來越認(rèn)識到,微服務(wù)架構(gòu)還是應(yīng)當(dāng)謹(jǐn)慎使用。
老肖說指引他走出紅帽,混進(jìn)苦逼創(chuàng)業(yè)大軍隊(duì)伍的原因,并不是什么拯救世界的壯哉美哉所謂情懷,而是俗得不能再俗的自我能力提升。因?yàn)橹挥羞@樣,才能鞭策自己不斷進(jìn)步和學(xué)習(xí)。“原來讀書很少,現(xiàn)在基本上不管是技術(shù)書籍還是什么,我都愿意花點(diǎn)時(shí)間去學(xué)習(xí)去讀書,自我學(xué)習(xí)的過程中,就發(fā)現(xiàn)別的人也是這么干的,創(chuàng)業(yè)過程中,大家都在自我提升。”老肖認(rèn)為雖然看書是是很笨的辦法,但卻是最有效的。
最后,讓我們以老肖同志的傲嬌結(jié)束這篇文章:
“在紅帽時(shí)間長了,只負(fù)責(zé)一個(gè)小系統(tǒng),沒什么意思。我希望我們的創(chuàng)業(yè)公司,即使在一個(gè)很小的領(lǐng)域里站住腳,那就是真的改造歷史。就算失敗了,至少我實(shí)現(xiàn)了個(gè)人價(jià)值”。
呃……好吧,貌似還是聽到了改造歷史什么的……