天天看點

開源項目 RethinkDB 關閉,創始人總結失敗教訓

當我們宣布rethinkdb關閉時,我答應寫一個調查分析。我花了一些時間來整理所得的教訓和經驗,現在可以清楚地寫出來。

在hn讨論貼中,人們提出了許多關于為什麼rethinkdb失敗的原因,從莫名的人性和聰明的mongodb營銷人員;到沒有建立一個有經驗的上市團隊;再到缺乏支援超過64-bit float 的數字類型……我将這些意見集中到這裡。

其中一些原因确實是真的,但它們是症狀而不是原因。例如,說我們未能賺錢的,它并沒有說明我們失敗的原因。

事後看來,有兩個重要的原因導緻了我們的失敗 —— 我們選擇了一個可怕的市場,并地按照錯誤的名額對産品進行優化。每個錯誤都可能使rethinkdb的估值降低一到兩個數量級。是以,如果我們認為它們其中之一是正确的,那麼rethinkdb将是mongodb的大小,如果我們認為它們兩個都是正确的,我們最終可能是紅帽的大小(不要以為這些數字很接近,它會讓你知道這些錯誤的代價)。

可怕的市場

我們的想法是這樣的:新公司不是在oracle之上建構的,是以有機會建立一個新的基礎設施公司。資料庫市場十分巨大,如果我們建立一個能夠俘獲一部分市場的産品,我們的公司将會十分成功。

不幸的是,你并不在你自己認為的那個市場上,而是在你的使用者認為的那個市場上。我們的使用者認為我們是一個開源開發工具公司,雖然這就是我們原來的想法。這是非常不幸的,因為開源開發工具市場可能是最糟糕的市場之一。成千上萬的人在商務背景下使用rethinkdb,但大多數人甚至不願意支付一杯星巴克咖啡的價格(這就是說,他們不願意支付任何東西)。

這不是因為産品好到不需要别人的支援,或是開發者不控制預算,或者資本主義的失敗。答案是基本的微觀經濟學。開發人員喜歡建立開發人員工具,并且通常是免費的,是以雖然有大量需求,但供應卻十分充足。使得替代品的數量上升,價格下降到零。

看看其他公司如何:mongodb(市值約為1.6億美元,約700名員工)和docker(市值約為1b,約300名員工)。兩家公司完全在各自的市場占主導地位。成長階段的民營科技公司兩個非常粗略的經驗法則是:估值是年收入的10倍,每位員工的收入大約為每年2萬美元。這意味着mongodb的年收入約為140-1.6億美元,而docker的年收入約為60-1,000萬美元。

這看起來不錯,直到你看到市場上那些不是專注于開發者工具的主要的 b2b 技術公司。像salesforce,palantir或box(面臨激烈的競争)的公司。突然mongodb和docker看起來很弱。

這些都獲得了巨大的成功。如果和現有的公司建立合作關系,分銷基礎設施和擷取大量賬戶将麻煩不斷,那麼對于一個處于萌芽階段初創公司意味着什麼呢?

對我們來說,這意味着一個難以處理的客戶收購管道。在一個肥沃的b2b市場創業必須處理一百個潛在客戶才能獲得十個機會,最終獲得一個銷售,對于一個開發工具的初創公司增加了10倍的機會。您可以通路大量的高品質潛在客戶 - 很多人正在下載下傳您的産品和與您的互動,但你必須花掉不少的線索才能得到一個訂單。

這是具有災難性的多米諾效應。它使團隊的士氣,使吸引投資和聘用頂尖人才變得非常具有挑戰性。反過來,這限制了您的資源,使您不能在産品和分銷方面進行充分的投資。初創公司的生存還是死亡靠的是動力,早期的配置設定挑戰幾乎能導緻最終的死亡。

錯誤的度量名額

好了,雖然市場不好,但其他開發工具公司仍然銷售了很多産品。為什麼不是rethinkdb呢?

雖然我們無法幹預市場的動态(除了建立别的東西),産品決定權卻完全在我們的控制之内。我們希望打造一個優雅,健壯,美觀的産品,是以我們對以下名額進行了優化:

正确性。我們作出了非常嚴格的保證,并且嚴格履行。

接口的簡單性。我們承擔了實作過程中大部分複雜性的工作,是以應用程式開發人員可以更輕松。

一緻性。我們做到了從查詢語言,用戶端驅動程式,群集配置,文檔,到首頁上的營銷副本都盡可能一緻。

如果你覺得這些權衡似乎很熟悉,他們是“ worse is better”(即快速拿出原型,聽取使用者意見,然後繼續增加功能,修複bug)。原來,正确性,接口的簡單性和一緻性是大多數使用者的錯誤衡量标準。相反,大多數使用者希望這三種标準:

及時。他們希望産品在需要時就存在,而不是三年後。

可觸知速度。人們希望rethinkdb能夠快速實作他們想要的工作負載,而不是我們建議的“真實世界”工作負載。例如,他們會寫快速腳本來測量插入一萬個文檔需要多長時間,而不會讀取它們。我們輸掉了市場學習這一仗時,mongodb巧妙地掌握了這些工作負載。

一個有用的東西。我們開始建立一個好的資料庫系統,但使用者想要一個好的辦法來實作某件事(例如,一個很好的方法來存儲來自hapi的json文檔,一個很好的方式來存儲和分析日志,一個很好的方式來建立報告等)

不是我們沒有試圖讓rethinkdb快速發貨,并建立其周圍的生态系統,讓有用的工作做起來更加容易。我們做到了這一點。但是正确、簡單和一緻的軟體需要很長的時間來建構。這使我們落後市場三年。

當我們覺得rethinkdb滿足了我們的原來的設計目标,我們有信心讓它投入生産使用時,幾乎每個人都問“rethinkdb與mongodb有什麼不同?”我們努力解釋為什麼正确性、簡單性和一緻性更加重要,但這些并不是大多數使用者最重要的評判标準。

老實說,它受到很大的打擊。很難了解,為什麼人們會選擇一個幾乎不做它應該做的事情(存儲資料)的系統,并且還有一個大的核心鎖,随機丢棄錯誤,實作單節點功能,有一個幾乎不工作的分片系統,盡管它是産品的核心特征之一,基本上不能保證正确性,并且暴露了沒有可辨識的一緻性或視覺一緻性的接口。

每次mongodb釋出一個新版本,人們會祝賀他們做出改進,這讓我感到悲哀。他們會宣布他們修複了bkl,但是事實上他們會把粒度從一個資料庫降到一個集合。他們會添加更多的操作,而不是一個适合系統其餘部分的組合接口,他們隻是簡單地使用一次性指令。他們會做分片改進,但很明顯,他們不願意或者不能做出基本的資料一緻性保證。

但随着時間的推移,我學會了欣賞人群的智慧。當人們需要的時候 mongodb能将普通開發者變成英雄,而不是幾年後。它使資料存儲速度快,讓人們快速收貨。随着時間的推移,mongodb長大了。他們解決了一個接一個的架構問題,現在它是一個優秀的産品。它可能不像我們想要的那麼完美,但它把自己做的工作做得很好。

2014年我們已經清楚地意識到自己在競争中處于劣勢,我們努力與mongodb區分開來。我們發現了一種非常優雅的方式來添加實時推送,希望能夠讓開發人員建構一代他們之前無法建構的應用程式。但這還不夠。突然,我們發現自己正與我們幾乎忽略的緻力于解決實時問題多年的meteor和firebase在競争。我們再次落後了市場三年,然後我們發現自己已經完全敗下陣來。

雲服務

有幾個人建議我們應該建立一個雲服務。我們實際上有一個這樣的作品,是以這是個我想說的有趣的話題。

小型資料庫公司建構雲服務的明顯問題是它的模式比對一個常見的啟動失敗模式 - 分裂焦點。建構、運輸和營運可靠的多租戶雲服務是很困難的,它需要非凡的專業知識和資源,是以如果你沿着這條路走下去,你發現自己像是同時運作兩個創業公司。但是我們面臨着一個存在的威脅,并迅速做了選擇,是以我們隻能給它一個短鏡頭。

我們的推理是這樣的,資料庫雲提供的服務可以是以下三種之一:托管,資料庫即服務(dbaas)或增值平台即服務(paas)。使用上面提到的每位員工的收入大約為每年2萬美元的經驗規則,快速回溯一下市場分析:

開源項目 RethinkDB 關閉,創始人總結失敗教訓

是以這些市場很小,甚至比資料庫市場本身更小。但是,他們的其中之一能比别人更好嗎?

托管主機本質上是為aws上的人運作資料庫,是以他們不必這樣做。使用這些服務的替代方法是自己在aws上設定資料庫。這是痛苦的,但它不是那麼難。但有一個非常困難的上限,多少托管資料庫托管服務可以收費。考慮到compose.io和mlab提供的mongodb的使用者數比rethinkdb多一到兩個數量級,我們認為提供托管托管不會産生影響。

資料庫作為服務是一個更複雜的托管托管版本 - dbaas提供從使用者抽象節點管理完全。你隻需運作你的查詢,系統處理它們。你不知道有多少節點在引擎蓋下運作。這個業務是非常具有挑戰性的 - 部分是因為dbaas公司必須與巨人(例如dynamodb和documentdb)競争,部分是因為當有很多其他替代品和替代品時,客戶完全把資料管理交給創業公司是非常困難的你知道誰在使用一個啟動的dbaas産品嗎?)是以一個dbaas産品出來了。

最後一個選擇是建立一個增值平台作為服務。我們認為這很有前途,因為在這方面我們有巨大的技術優勢。 firebase和meteor必須在mongodb之上建構應用程式級實時邏輯,從根本上限制了實時查詢功能和性能。另一方面,我們一路控制堆棧,是以我們具備firebase和meteor所沒有的顯著的優勢。

是以,我們建立了horizon,并開始緻力于horizon cloud - 這是使用者部署和擴充rethinkdb / horizon應用程式的一種方式。一個非常小的團隊建立三個大型項目(rethinkdb,horizon和horizon cloud)的挑戰最終趕上了我們,我們從來打算在我們用完錢之前放棄雲服務。把掌聲送給工程團隊,他們已經非常非常接近成功了。

元問題

我們還可以做一個級别的根本原因分析。我們為什麼會選擇一個不好的市場,并按照錯誤的名額優化産品?

當我還是個小孩子時,我想要建立自己的收音機。我用膠合闆做了一個盒子,裡面放了一些金屬垃圾,把盒子連接配接到電源線。我在家裡有電子書,但我沒想過自己需要他們 - 我有堅定的信念,我可以自己做。最終,我建立了一個工作接收器,但我花了很多年才終于意識到我需要學習基本的電子學。

早期的rethinkdb有點像這樣。我們對産品或市場沒有直覺,是以我們通過了建立一家公司的議案,而沒有真正了解我們在做什麼。更重要的是,我們有很大的樂觀偏見(人類傾向于把未來估計得比實際情況更好。)。就像醫生知道,制藥公司的禮物對其他醫生有偏見效應,但相信他們免受這種影響,我們相信我們免受經濟和經營業務的數學法則的影響。數學,當然,最終讓我們嘗到了苦果。

我們可以做些什麼來避免這些錯誤嗎?現在已經不是那個自己搬弄一個可以工作的收音機的那個孩童時代。不知不覺間,我們已經不能勝任,而且這種無力感要若幹年之後才被意識到。

有幾個人指出,如果我們建立了一個有經驗的上市團隊,我們會做得更好。這100%是真的,但我們個人發展的時機不符合公司的需求。最初,我們不知道我們需要進入市場的專業知識,是以我們不想将它包括在創始團隊(順便說一句,沒有良好的商業直覺,認識好的業務人員就像,對工程沒有強烈的直覺卻要認識優秀的工程師一樣難)。當我們做好心理準備時,我們發現自己在一個滿是有能力的競争對手的市場裡,卻資金短缺,隻有一個三年後的産品。到那時,世界上最好的上市團隊也救不了我們。

離别的思念

許多人對開發工具市場有非常強烈的感覺。工程師喜歡建構開發工具,是以他們很想讓開發工具公司茁壯成長。

我完全不理會市場——因為我不想用單一的經驗進行推廣;因為我不喜歡說“它不能做”;因為有很多例外。 github,mongodb和docker已經建立了強大的公司。 gitlab和unity似乎做得很好。

如果你打算建立一個開發人員工具公司,請一定要謹慎細心。市場充滿了很多好的替代品。使用者期望高,價格低,認真思考你為客戶提供的價值。記住——想要世界往某個方向走不必一定要讓它如此。

2009年,我們在ycombinator示範日把rethinkdb(我們還沒有軟體)的早期想法展示給投資者觀衆。我們在結束的幻燈片上寫了三點要記住的。 “如果你隻記得rethinkdb的三個事情,”我們說,“記住這些。”人們沒有記住幻燈片的其他東西,但在結束時他們确實記住了三點。