就在昨天(2020年8月3日),濤思數(shù)據(jù)團(tuán)隊(duì)正式宣布,物聯(lián)網(wǎng)大數(shù)據(jù)平臺(tái)TDengine集群版開(kāi)源。此次開(kāi)源,我們?cè)贕itHub上傳了23.9萬(wàn)行源代碼,1198個(gè)源文件,包含我自己疫情期間寫的一萬(wàn)余行C代碼,終于又了卻我一個(gè)心愿,不用再糾結(jié)。我們一個(gè)18人的團(tuán)隊(duì),通過(guò)三年的努力,為全球物聯(lián)網(wǎng)、工業(yè)互聯(lián)網(wǎng)、車聯(lián)網(wǎng)行業(yè)奉獻(xiàn)了一個(gè)開(kāi)源的、具有超強(qiáng)性能和分布式集群功能的專業(yè)大數(shù)據(jù)平臺(tái)。
TDengine 2.0 系統(tǒng)模塊圖
其實(shí),TDengine的設(shè)計(jì)從一開(kāi)始就是集群的,是基于硬件、軟件系統(tǒng)不可靠,一定會(huì)有故障的假設(shè)進(jìn)行設(shè)計(jì)的,是基于任何單臺(tái)計(jì)算機(jī)都無(wú)足夠能力處理海量數(shù)據(jù)的假設(shè)進(jìn)行設(shè)計(jì)的。只是作為一家商業(yè)公司,我們需要考慮如何盈利,業(yè)內(nèi)其他類似產(chǎn)品都是只開(kāi)源單機(jī)版,將集群功能納入企業(yè)版,需要付費(fèi)才能使用。因此在一年前宣布開(kāi)源時(shí),遵照慣例,我們也只開(kāi)源了單機(jī)版。但一直以來(lái),我都在思考:開(kāi)源,就應(yīng)該把最核心的代碼開(kāi)源,就應(yīng)該把市場(chǎng)剛需的那部分代碼開(kāi)源,就應(yīng)該將自己最美、最有吸引力的地方展現(xiàn)出來(lái),否則開(kāi)發(fā)者為什么要用你的?核心痛點(diǎn)問(wèn)題不解決,那可替代方案就很多,產(chǎn)品本身的推廣就會(huì)大打折扣,開(kāi)源的價(jià)值就大為下降。
單機(jī)版開(kāi)源后的市場(chǎng)的反饋更是堅(jiān)定了我的想法:集群是剛需,是真正的痛點(diǎn)。我動(dòng)了集群版開(kāi)源的心思。但是,集群作為剛需也一直是我們銷售的一個(gè)亮點(diǎn),如果開(kāi)源,我們?cè)趺蹿A利?這一問(wèn)題令我糾結(jié)了很久,而團(tuán)隊(duì)小伙伴、尤其是銷售團(tuán)隊(duì),也在我提出要在業(yè)內(nèi)率先將集群版開(kāi)源時(shí),直接提出質(zhì)疑和反對(duì)。
2019年底,我徹底想明白了,一定要將集群的代碼開(kāi)源?;谝韵聨c(diǎn),1:對(duì)于大數(shù)據(jù)平臺(tái),沒(méi)有集群,就相當(dāng)于一個(gè)玩具,一個(gè)演示而已,誰(shuí)也不會(huì)當(dāng)真;2:開(kāi)源是基礎(chǔ)軟件行業(yè)大勢(shì)所趨,誰(shuí)先真正擁抱開(kāi)源,而不是假開(kāi)源,誰(shuí)就搶占先機(jī);3:只要全球超過(guò)30%以上的物聯(lián)網(wǎng)平臺(tái)都在使用TDengine,只要能給用戶創(chuàng)造真正的價(jià)值,公司一定能找到生存的途徑,一定能成功。
除開(kāi)源集群版的呼聲之外,我們還收到了無(wú)數(shù)開(kāi)發(fā)者給我們的反饋:BUG、性能問(wèn)題、功能問(wèn)題等等,GitHub上TDengine的issue已經(jīng)超過(guò)2800個(gè)??吹竭@么多issue, 一方面為自己臉紅,因?yàn)樽约憾紱](méi)想到居然有這么多問(wèn)題,但另外一方面,又很開(kāi)心,因?yàn)檫@說(shuō)明很多開(kāi)發(fā)者在真正用我們的產(chǎn)品,喜愛(ài)我們的產(chǎn)品,我們找對(duì)了市場(chǎng),我們的產(chǎn)品是有價(jià)值的。
濤思數(shù)據(jù)團(tuán)隊(duì),拍攝于2019年10月
我的搭檔,另外一位50歲的程序員,20多年前就是NASDAQ上市公司CTO,曾任亞馬遜、思科全球高級(jí)副總裁,此時(shí)也挽起袖子,寫起程序。而且從零開(kāi)始學(xué)Python,寫下了專門做并發(fā)、做系統(tǒng)破壞性測(cè)試的crash_gen.py (2800行)。這個(gè)程序讓每位研發(fā)同學(xué)都膽戰(zhàn)心驚,因?yàn)槭菍iT找茬的,暴露的問(wèn)題往往毫無(wú)頭緒,卻一定是程序問(wèn)題。最開(kāi)始30步都無(wú)法跑過(guò),現(xiàn)在終于能無(wú)限的跑下去了。而這位搭檔,在我一年多前最初游說(shuō)他加盟時(shí)其實(shí)興趣不大,不過(guò),我和他談到今后世界上90%的數(shù)據(jù)都是時(shí)序空間的數(shù)據(jù),而如果大家都在用TDengine來(lái)進(jìn)行存儲(chǔ)、查詢,即使我們公司不贏利,那也是一件人生最值得自豪的事情,是可以在人類信息技術(shù)史上留下痕跡的事情。他終于義無(wú)反顧的加入,和大家一起,細(xì)細(xì)打磨產(chǎn)品,目標(biāo)只有一個(gè),就是做一款有品位、能占領(lǐng)全球市場(chǎng)的產(chǎn)品。
今年的新冠疫情給全球經(jīng)濟(jì)重創(chuàng),我們這個(gè)小小的團(tuán)隊(duì)卻恰恰在此時(shí)靜下心來(lái),重構(gòu)代碼,8個(gè)月的時(shí)間,犧牲了所有的周末,我們終于推出了2.0集群版。雖沒(méi)見(jiàn)過(guò)凌晨四點(diǎn)的洛杉磯,但我們經(jīng)常見(jiàn)凌晨四點(diǎn)的GitHub。如果去年開(kāi)源的版本能打60分,那我給2.0版本打80分。不僅因?yàn)殚_(kāi)源了集群,代碼重構(gòu)后,邏輯更加清晰、模塊劃分更加合理,便于維護(hù)、擴(kuò)展。更重要的是,我們開(kāi)源了測(cè)試框架以及近千個(gè)測(cè)試?yán)?,而且將完整的設(shè)計(jì)文檔分享出來(lái)。我自己編寫的整體架構(gòu)設(shè)計(jì)、數(shù)據(jù)復(fù)制模塊設(shè)計(jì)等等文檔,都已經(jīng)在官網(wǎng)上公開(kāi),供大家瀏覽指正。
做一個(gè)60分的產(chǎn)品不難,有個(gè)不錯(cuò)的主意,能動(dòng)手寫點(diǎn)程序,立馬就能做出來(lái)。但要做到80分,就要付出更多的努力。而我的目標(biāo)是做一個(gè)能打99分的產(chǎn)品,因?yàn)樽龅?9分時(shí),就天下無(wú)敵,而且技術(shù)生涯才會(huì)畫一完美的句號(hào)。不過(guò),從80分到99分,比從60分到80分,要多付出超10倍的努力。幸運(yùn)的是,我們已經(jīng)有了一支很不錯(cuò)的產(chǎn)品隊(duì)伍,而且有GGV、紅杉、明勢(shì)資本等機(jī)構(gòu)超過(guò)2000萬(wàn)美元的投資,相信只要能堅(jiān)持靜心做產(chǎn)品,專注下去,我們一定能做到99分。
我總感慨自己幸運(yùn),在90年代初去美國(guó)留學(xué)工作,趕上美國(guó)互聯(lián)網(wǎng)行業(yè)大爆發(fā),正值中國(guó)經(jīng)濟(jì)騰飛之時(shí),我又回到北京創(chuàng)業(yè)。如今,在接近退休的年齡,居然又發(fā)現(xiàn)了一個(gè)嶄新的機(jī)會(huì),而且是一個(gè)特別適合程序員老司機(jī)的機(jī)會(huì)——做底層軟件的開(kāi)發(fā)。不僅做整體架構(gòu)的設(shè)計(jì),還要?jiǎng)邮謱懘a、debug、寫文檔,天天和團(tuán)隊(duì)80后、90后同學(xué)們一起戰(zhàn)斗,樂(lè)此不疲。每每想到這里,我都會(huì)慶幸自己3年前的選擇,也慶幸自己選擇了開(kāi)源的道路。如果沒(méi)有這個(gè)選擇,我和太太應(yīng)該正在世界各地旅行,品嘗美食,陪她流連于美術(shù)館博物館,過(guò)著人人羨慕的日子,但我想,那才是真正的隨時(shí)光老去,因?yàn)槭澜缫呀?jīng)不需要我的存在。
集群版都開(kāi)源了,也許付費(fèi)用戶真的會(huì)變少,但那就隨他去吧。我絕不會(huì)像有些廠商一樣,先開(kāi)源,然后閉源。只要有人用,而且用的人多,就是對(duì)我、對(duì)我們團(tuán)隊(duì)最大的獎(jiǎng)勵(lì)。哪怕是大家開(kāi)噴,指出各種問(wèn)題,我也會(huì)特別開(kāi)心,因?yàn)橹灰袉?wèn)題,我們就會(huì)好好地去改進(jìn),用心地去做。即使真有一天,我們連一個(gè)18人團(tuán)隊(duì)都無(wú)法養(yǎng)活,我也會(huì)繼續(xù)做下去,會(huì)每天把產(chǎn)品細(xì)細(xì)地打磨,直到我無(wú)法動(dòng)彈的一天,因?yàn)檫@是我最大的樂(lè)趣,我把TDengine當(dāng)作我人生最后一幅作品,而且是一幅可以讓我持續(xù)打磨到老的作品。
一年前開(kāi)源時(shí),我曾說(shuō)過(guò):“錢再多,也難讓人在歷史上留下痕跡,但一幅好的作品卻可以傳承,讓后人好好的品味。愿我領(lǐng)頭開(kāi)發(fā)的TDengine成為傳世之作,Leave a dent in the world!”, 今天再將這一段“初心”寫一遍,希望這次集群版的開(kāi)源,能夠讓TDengine離傳世之作更近一步。
聯(lián)系客服