You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

53 lines
6.6 KiB
Markdown

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

# 064 | 以MongoDB为例看基础架构类产品创业
**MongoDB的产品是文档数据库可以归类于基础架构类的创业公司。这类公司的特点是产品本身不产生价值使用其产品做业务和应用的第三方使用者产生价值并给他们付费。**
基础架构类的软件有很多比如微软的Windows、Oracle的数据库再比如整个Hadoop生态圈。
近些年来因为大数据的蓬勃发展以Hadoop生态圈为代表的开源基础架构非常火爆。几乎每个Hadoop的拳头产品背后都有一家或者几家创业公司比如说Hadoop的发行商就有Cloudera、Hortonworks以及MapRSpark的背后则是DataBricks。
这些公司成长于开源环境下,发展于开源环境下。和以前的闭源产品比起来,近些年来的基础架构类创业产品基本上都需要开放源代码,或者至少部分开放源代码。
总结一下基础架构类产品的显著特点,就是:
1. 产品本身不直接产生价值,被使用以后才产生价值;
2. 产品往往只有被大量用户使用以后,才能够盈利,未普及开来的产品基本上不可能赚钱;
3. 这个市场赢者和输者之间的差距很大,第一和第二所能赚到的钱差距非常大;
4. 通常来说这是创业的红海,因此需要创业公司不仅有很强的系统开发能力,更要有很厉害的市场公关能力。
MongoDB出来之前数据库市场主要有两类产品。第一类是传统意义上的关系数据库。这类数据库的特点是数据模型死板、产品难用但是产品性能、稳定性和安全性都比较高而且此类产品通常很贵。第二类是新起来的NoSQL。NoSQL有不少优点但是最大的问题是写应用的人会觉得很难用。
**MongoDB作为一个文档数据库公司开发时在策略上做了几个很重要的决定。具体来讲首先是把绝大部分注意力都用在提高易用性上其次是把大量的广告和宣传费用都投入到社区的建设中去。**
这两种策略的好处非常明显首先MongoDB这个数据库上手快非常好用对客户的支持也好。用别的产品得学一个月用MongoDB一天就够了。如果我是用户我也喜欢啊。其次社区在MongoDB的支持下日益壮大。作为工具类产品用户是开发者开发者社区不壮大不会有更多的人来用的。
**MongoDB在这两方面做得都非常成功。那么一个用户接受度那么高的产品为什么最后商业化的时候盈利却不好呢这就要说到面子和里子的问题了。** 好用是一个产品的面子,产品是否成熟、稳定、 安全,能够应对大规模的并发,不丢数据,不会给出错误的结果,不会突然死机等则是里子的问题。
最后上线的产品必须能够真正稳定高效地把系统跑起来。MongoDB的开发对用户体验重视到了极致但是对于产品的基本功能似乎没花太多力气。MongoDB BUG满天飞2017年的安全问题更是让无数人的数据被黑客删除。所以用户通常是上了MongoDB的船等到没办法继续用下去了又下了船。这可以说是MongoDB的巨大悲哀。
MongoDB最初吸引了很多大客户那么时至今日这些大客户去了哪里呢很多都跑回去用关系数据库了。**一个好用但是不可靠的产品,比起一个可靠但不好用的产品,哪个对用户更有吸引力?这个问题,应该不难回答。**
**那么我们从MongoDB这里学到了些什么呢**
**做基础架构类产品,首先也是最根本的一点,就是可靠。** 产品不可靠即使用户能够一时上了船也不能保证一世都在这个船上。MongoDB的使用者里颇有几个大客户但是它们却都离开了。产品的可靠性对于一个产品的长远发展来说非常非常得重要。
**其次从用户体验的各方面来说MongoDB确实可以打150分远远超过满分。** 如果我能够一天学会,为什么非要用一个月去学其他的东西呢?为什么其他公司能够做出可靠的产品,却做不出好用的东西呢?这同样是这些“其他公司”需要思考的。
而作为创业者一旦进入基础架构的创业行列前面就不是一马平川了。公司的程序员资源都是有限的MongoDB是其他公司也是。**作为创业公司,如何在人力资源有限的情况下去平衡可靠性和可用性,是一个非常值得思考的问题。**
为什么这样说呢?不可用,就没有人愿意用;不可靠,就没有人能够用下去。但是创业公司的资源就这么多,二选一也不现实,面面俱到更不现实,怎么办?在优先级的安排上,这其实是蛮有挑战的一件事。
我们肯定不能像MongoDB那样弄出安全事件安全问题在哪里都是高优先级的事。做基础架构如果存在安全问题是没有人敢用的。但是比如说是不是需要支持大量的并发、要不要做到多数据中心运行等等我想有很多东西是可以进行取舍的。
**取舍的标准同样很复杂,我也只能凭借个人的开发经验说几句。**
首先,应该确定使用人群。如果使用人群不需要大规模数据处理,或者不立即需要,那么做大规模并发相关的功能无疑是早了一点。
其次应该确定可用性的痛点在哪里不需要面面俱到但是最重要的可用性流程都需要走一遍。很多东西只要大部分人觉得很好用最后10%的人群自己有很强的动手能力就可以了。不需要像MongoDB那样“可用性好到极致可靠性却成问题”。
最后我觉得“吹嘘”肯定是会出问题的。MongoDB在宣传上花了很大力气却在产品质量仍然存在问题的情况下就给用户设置了很高的预期。很多时候对于开源产品如果实事求是地告诉用户东西还不错但是没完工大家心里有数以后对产品的预期和要求就不会过高。**过度宣传,往往是基础架构类产品由盛转衰的很重要的因素。**
**但无论如何MongoDB都是一个瑕不掩瑜的产品。** 这个产品至今依然有无数多的使用者。当然很多人现在主要是把它作为原型系统在用等产品真的上线以后就换掉。因此MongoDB如果希望成为一个可靠、有稳定营收在世界范围内真正有影响力的产品现在是时候静下来好好提高产品的可靠性了。
**如果要做基础架构类的创业产品,可靠性和可用性的兼顾,是每个创业者都需要思考和解决的问题。**