经作者许可,发表了本文的译文。当我们宣布要关闭RethinkDB时,我答应写死后的评论。 我花了一些时间重新考虑这种体验,现在我可以清楚地陈述一下。
在
HN讨论线程中,人们描述了RethinkDB失败的许多原因,包括人性的莫名其妙的变态,MongoDB营销人员的狡猾欺诈以及未能建立有经验的团队准备进入市场的原因,最后是缺乏对大于64位浮点数的数字类型的支持。 我已经对建议的失败原因
列表进行了总结。
它们中的一些具有真相,但它们更可能是症状而不是原因。 例如,关于我们尚未学会如何获得财务收益的表述是肤浅的。 该声明并未阐明我们未能成功的原因。
回顾过去,我得出结论,有两件事出了错–我们选择了一个艰难的市场,并根据对用户有用的错误标准对产品进行了优化。 这些错误中的每一个都可能使RethinkDB的值减少一两个数量级。 因此,如果我们正确地完成了这两项操作之一,那么RethinkDB将会达到MongoDB的规模,而如果我们意识到这两个遗漏,最终将达到Red Hat的规模[1]。
艰难的市场
我们的想法大致如下。 新公司不是建立
在 Oracle解决方案
的基础上,因此存在一个利基市场,即可以使用新基础架构来建立公司。 数据库市场巨大。 如果我们创建一个将占领部分市场的项目,那么我们将得出的结论是,我们将成为一家非常成功的公司。
不幸的是,您没有进入您正在考虑的市场-您所在的市场是
用户吸引您的 。 而且我们的用户对我们作为开源工具公司有清晰的认识,因为这就是我们正在做的事情。 事实证明,这让我们感到非常难过,因为开放源代码工具市场是任何人都无法找到的
最糟糕的市场之一。 成千上万的人使用RethinkDB,部分是出于业务方面的考虑,但大多数人希望为终身使用支付的费用要比从星巴克买一杯咖啡少(也就是说,他们根本不想支付任何费用)。
这不是因为产品太好,以至于人们不必为支持付出代价,或者不是因为程序员没有控制预算,也不是因为资本主义的崩溃。 答案是微观经济学的基础。 程序员喜欢开发开发工具,通常是免费的。 尽管需求很大,但报价远远超过了它。 替代品的数量
增加 ,价格降至零。
要了解这对其他公司的影响,请查看MongoDB(价值约16亿美元〜700名员工)和Docker(价值约10亿美元〜300名员工)。 两家公司都绝对统治着他们的市场。 根据两个公认的规则,成长中的私有软件公司的年收入估计是其十倍,而每个员工的收入约为20万美元/年。 这意味着MongoDB的年收入约为140至1.6亿美元,而Docker的年收入约为60至1亿美元。
除非我们查看
不是开发工具市场的市场上知名的B2B科技公司,
否则这看起来还不错。 像SalesForce,Palantir或Box这样的公司(面临激烈的竞争)。 突然之间,MongoDB和Docker开始显得很小。
尽管这些都是非常成功的公司。 如果具有合作伙伴关系,分销基础设施以及可观帐户数量的相对成熟的公司面临增长挑战,这对于处于萌芽阶段的初创公司意味着什么?
对我们来说,这意味着难以到达的销售渠道。 如果在繁荣的B2B市场中,一家初创公司需要处理100条潜在客户以获得10个机会,获得一笔销售,那么对于从事开发工具的初创公司来说,这个数字将乘以10。与您合作,但您需要突破潜在客户的困扰,才能接近唯一的销售。
这个过程会带来多米诺骨牌的灾难性后果。 团队士气低落,很难吸引投资并聘请最好的职业球员。 反过来,这限制了其自身的资源,因此无法对产品或分销进行大量投资。 对于初创企业而言,驾驶动力是生死攸关的问题,而早期的销售困难几乎总是使您注定要丧命。
错误的效用标准
嗯,市场不好,但是其他参与开发工具的公司仍然大量销售。 为什么不RethinkDB?
尽管我们无法对市场动态做任何事情(除了做其他事情),但产品决策完全取决于我们。 我们希望构建一个优雅,可靠和美观的产品,因此我们针对以下指标进行了优化。
- 正确性。 我们给予了很高的保证,并严格 遵守它们。
- 界面的简单性。 我们承担了大多数实现方面的困难,以免使开发人员的生活复杂化。
- 均匀性 从查询语言,客户端驱动程序,集群配置,文档到封面上的广告文字,我们做到了尽可能统一。
如果看起来很熟悉,我们就从工作中
汲取了这些品质;
更糟的是更好 。 事实证明,界面的正确性,简单性和顺序是大多数用户
有用的错误
标准 。 大多数用户希望使用以下三个选项:
- 及时性。 他们希望产品能够在需要时真正发挥作用,而不是三年后。
- 有形的速度。 人们希望RethinkDB能够在用户实际承受的负担下快速发展,而不仅仅是在接近“真实性”的产品之下。 例如,他们编写了快速脚本来衡量不读就插入一万个文档需要多少时间。 当我们进行一场本已失传的市场培训之战时,MongoDB精通了这些负载。
- 用例。 我们打算建立一个好的数据库系统,但是用户想要一种制作X的好方法(例如,一种从hapi保存JSON文档的好方法,一种保存和分析日志的好方法,一种创建报告的好方法,等等)。
这并不意味着我们没有尝试快速启动,快速创建RethinkDB并围绕它构建生态系统来简化有用的工作。 我们做到了。 但是正确,简单和一致的软件非常耗时。 这导致我们落后市场三年。
当我们觉得RethinkDB令人满意时,我们有足够的信心推荐在生产中使用它,几乎每个人都问“ RethinkDB与MongoDB有何不同”? 我们努力解释了为什么正确性,简单性和系统性/兼容性如此重要,但是最后,这些因素并不是对大多数用户而言重要的有用性标准。
老实说,很痛。 真的好痛 这是我们无法理解的,为什么人们选择一个几乎不执行其应做的事情(存储数据),阻塞内核,被错误分散,充当一个在分割时停止工作的节点,几乎没有分割功能的系统的系统,尽管这是产品的关键功能之一,这一事实不能保证正确的操作,并且会抛出混乱的界面,在界面中没有系统的或统一的视野。
每次MongoDB发布一个版本,人们对他们的改进表示祝贺时,我都会感到愤怒。 他们说他们将修复BKL,但实际上他们降低了数据库到馆藏的详细程度。 他们增加了更多的操作,但是他们并没有使用与系统结合的模块化界面,而只是弄乱了一次性命令。 他们将有更好的细分,但是很明显,他们不希望甚至根本不能保证数据的一致性。
但是随着时间的流逝,我学会了欣赏人群的智慧。 MongoDB
在人们需要时将普通开发人员变成了英雄,而不是几年后。 这使数据仓库变得快速,并使人们能够快速交付产品。 随着时间的流逝,MongoDB不断壮大。 他们一个接一个地解决了体系结构问题,现在这是一个了不起的产品。 他可能不像我们想要的那样英俊,但是他干得很好,做得很好。
当我们在2014年中期明确表示我们无法竞争时,我们努力与MongoDB有所不同。 我们找到了一种非常优雅的方式来添加
实时通知 ,希望这将使开发人员能够创建他们以前无法做到的一代应用程序。 但这还不够。 出乎我们意料的是,我们竟然是Meteor和Firebase的竞争对手,这些公司致力于解决紧迫的问题,甚至连几年都没有讨论过。 我们再次落后于市场三年,再次发现我们无法竞争。
那云呢?
一些人建议我们需要提供云服务。 实际上,我们有一个这样的项目正在开发中,所以我想讲一个有趣的话题。
一家小型公司开发云服务的明显问题是它具有常见的失败模式-散焦。 开发,分发和运营多租户云服务非常困难。 所有这一切都需要非凡的经验和资源,因此,如果您真的进入了这条道路,您可能会发现您一次管理两个初创企业。 但是我们面临着生存的威胁,我们的行动选择很快就用光了,因此我们给了这个想法一个机会。 让我们暂时假设我们能够实现这个想法。
我们的推理如下。 数据库建议可能意味着三件事之一:托管托管,数据库即服务(DBaaS)或高级平台即服务(PaaS)。 让我们回到写在膝盖上的营销分析,在该分析中,我们使用了参数$ 200,000 /每位雇员的年收入,这与我们之前使用的
规则相同:
| 托管托管
| 数据库服务器
| PaaS
|
公司介绍
| Compose.io,mLab
| 福纳德
| 解析,Firebase,流星
|
员工人数
| 〜30
| 〜30
| 〜30
|
入息
| <$ 1000万
| <$ 1000万
| <$ 1000万
|
这些市场很小,甚至比数据库市场本身还小。 也许您应该首选其中一个?
托管托管基本上包括维护人员的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的三件事,请记住这些。” 奏效了。 人们没有记住演讲中的任何内容,但最后记住了三点。
最后,我要记住三个关键点。 如果这篇文章值得您记住,那就值得记住:
- 选择一个大市场,但针对特定用户。
- 学会认识到您缺乏的人才,然后努力将他们加入团队。
- 请务必阅读《经济学人》 。 它将使您更快变得更好。
[1]不要读太多这些数字。 我给出了一个非常粗略的估计,但是仍然必须对这些错误的代价给出一个总体思路。[2] , , , , , , .