admin管理员组

文章数量:1531411

2024年2月8日发(作者:)

Cover Story封面报道l高性能网站架构 从暴走漫画谈创业团队如何运用技术 文,曹力 46 暴走漫画和糗事百科都是典型的Web 2.0垂直社 区,两者也都是创业型公司,我加入时都没有技 术开发团队,需要一个人挑大梁。 对于创业者来说,技术并非唯一要素,产品设计、 市场推广等都左右着整个公司和团队的命运。 然而技术是基础,只有快速地拿出相对完善的产 品,才能让其他方面配合起来。 相对在大公司进行开发,创业团队往往受到更多 资源上的制约,如时间、人力、资金等。如果创业 的业务范围是自己有经验的(也应该是这样),那 就应该选择自己熟知的技术来快速完成开发。 我把创业分成四个阶段,下面分别讨论如何在每 个阶段进行技术选型。 第一阶段:用最熟悉的技术快速打 造原型 创业者们在第一个阶段的任务是做出原型,探索 其中可能的模式,投石问路。在这个阶段,很多创 业者在产品思路没有完全成熟之前,为了稳妥起 见,还是会先选择兼职创业。 在这种情况下,限于时间、精力,创业者们应该 首先快速实现主要的功能,勾勒出产品的大致轮 廓。这时挑选技术应该首先选择自己熟悉的技 术,以及现成的组件——不要重复造轮子。 我在开发糗事百科、博聆网以及迁移暴走漫画的 过程中,都是根据个人偏好选择了Ruby作为开发 语言,以及Ruby on Rafts作为框架进行快速开发。 原因在于我过去有过较多这方面的经验。 Ruby具有极强的元编程能力,使得代码变得非常 有弹性,Ruby on Rails ̄lj用Ruby的特性,使得接 口非常直观和易于理解,令Ruby on Rails这个框 架非常易用。Ruby on Rails也内置了很多Web开 发的最佳实践,其生态圈中有大批非常优秀的组 件,这些对于Web应用的未来扩张也提供了很好 的基础。 而数据库则选择了MySQL,是因为它有成熟的配 套工具、模式等,相对于我不熟悉的NoSQL类数 据库 ̄HMongoDB,MySQL更可控。 而且,在这个阶段甚至都不用考虑所用的技术 是否最适合当前的场景,这是因为用户规模非常 小,不会在性能上造成太多影响。过多地在架构 问题上深入研究,一方面非常消耗精力,另一方 面即使研究出来了,也不会真的有那么大的压力 来检验架构是否合适。 例如,在高并发场景中(如聊天室),用Erlang、 Go等语言会很好,但如果创业者并不熟悉这些 技术,则不应贸然在创业阶段应用它们,因为其 中会出现大大小小的坑,这些会影响创业的速 度,让人失去很多机会。如果创业者只会使用 PHP+MySQL,也不妨可以先用这些技术把聊天 室做出来,实现产品的大体思路,然后接受少量 核心用户的批判,验证并慢慢调整业务方向。 例如,世界上最大的社交网站Facebook之所以采 用PHP进行开发,原因在于Mark Zuckerberg最熟 悉PHP,而非“PHP是世界上最好的语言”,Mark 从而可以把控代码。 Twitter在其早期选择了Ruby on Rails进行开发, 原因就在于Ruby on Rails ̄常简便,拥有快速的 开发能力——然而由于Ruby on Rails天生的架构 问题,导致其在并发上效率很低,即使Twitter投 入了大量服务器,仍频繁宕机。 

Cover Story封面报道I高性能网站架构 不过,很多一开始就着眼于大规模的应用,最终 会演变成Bug。若没有熟悉代码的技术人员把控, 也并没有打败Twitter,例 ̄]Google推出的一些社 则会变成定时炸弹。 交工具。 这种案例数不胜数,我就不在这里一一列举,希 望这类创业者能潜心寻找合适的技术合伙人,并 第二阶段:尽早修复不合适的技 术,打磨产品细节 到了第二阶段,有了产品雏形之后,整个创业的 思路应该已有眉目,创业者们对目前的产品原型 给予一定的时间让其搭建出符合自身业务模式 的系统,或者将现有产品裁剪至适合自身的业务 模式。 例如,我在加入暴走漫画之前,暴走漫画使用的 也比较有把握了,准备、甚至已掏钱注册了公司, 核心团队应该也已全职加入。我认为这个阶段的 创业者有两种选择,一种是以寻找投资为目标, 追求快速扩大规模,另一种是不寻求投资,而追 求赢利,获得稳定的现金流。 但无论何种目标,打磨产品细节都是这个阶段最 重要的任务。 如果第一阶段中使用了非常不合适的技术,应在 这个阶段尽早修复。例如用PHP+MySQL做的聊 天室,则应尽快改成诸如N0de js+Redis等更适合 这个应用场景的技术。不过因为第一阶段做出了 原型,所以重写也有了明确的目标,并不会占用非 常长的时间。 同时应梳理出清晰的代码结构,规范测试,以便 为接下来的快速扩张提供良好的基础。 否则越往后,会因为各方面压力,导致改写越来越 麻烦,成为吞没巨兽的焦油坑。无论需求有多么 急,也应该花些时间保证将来速度不会减慢。 根据业务类型不同,这个阶段应该不会购买很多 服务器,管理相对简单,如果精力足够,也可以先 把服务器监控管理建立起来。 有些创业者会直接使用一些现成的产品很快从 第一阶段进入到第二阶段。我常见到一些搞媒体 的朋友想利用现有的CMS系统做垂直门户,一些 搞销售的朋友做网上商城。他们往往都不太懂技 术,希望利用现有产品结合自己的业务优势,快 速把产品、业务做大。虽然这对他们来说也许是 最好的选择,但将来交学费是少不了的。因为现 成的产品为了适应大部分人的需求,做了很多自 定义选项,这些会导致代码变得臃肿,难以控制, 其中潜伏了大量的不确定因素——在某种条件下 是.NET平台,虽然代码也很粗糙,但至少提供了 基本的功能,也令运营和推广团队把流量做到了 每日十几万PV。然而由于前期未能设计出良好的 架构,导致网站服务的效率低,并且经常出错。 暴走漫画CEO“王尼玛”也是意识到对于将来拿 到投资之后的快速扩张,这种技术水平会成为严 重的瓶颈,因此才“三顾茅庐”把当时还在创业 的我忽悠来做平台迁移。我对.NET技术可谓一窍 不通,但“王尼玛”决定破釜沉舟,将系统推倒重 来。因为我对这类系统非常熟悉,所以在很短的 时间内完成了迁移,也为之后流量的快速增加奠 定了基础。 第三阶段:飞速扩张 如果前两个阶段进行得很顺利,能得出一个较为 精致的产品,并且架构、代码方面也没有留下大 问题,那么通过对产品进行简单的运营和推广, 产品应该也获得了一定的用户量。这时创业者大 多已跟一些投资人“吹”过自己的理想,最后终于 谈妥了某个臭味相投的投资人。 当然,投资人会对你的产品有很多期待,也会要 求你承诺一些指标——诸如流量、装机量等。于 是你不得不更快马加鞭,扩张用户规模。因为投 资人认为只要量上去了,钱不是问题。 最考验这个阶段的技术应用是scalability——一 方面是业务量的扩张,另一方面是团队的扩张。 如果第二阶段中没有正确选择符合自身业务模式 的技术,则会在这个阶段造成很大麻烦,因为业 务量快速扩张但技术没法满足其需求,就会导致 业务扩张出现瓶颈,这时回头改技术,就会大大 拖累业务。 47 

Cover Story封面报道I高性能网站架构 同时,变更技术架构会出现很多问题,一不小心甚至 成功人士,具体细节上的技术活应该跟你们没关 会导致业务出现回落,这是大家都不愿意看到的。 系了。我还从没进入过这个阶段,不过想象过这  如果技术和架构的大方向没有错误,则这个阶段 个阶段的事情,下面参考了一些大公司的情况, 只需要不断做小调整,让系统通过加机器就能持 提出我自己的想法。续应付业务量的不断增长。 相对于业务量增长而言,技术团队的人员扩张也 在这个阶段中,仍旧需要不断探索新的业务模 式,但老的业务模式巳然成熟,所以要着手改进。 是非常麻烦的事。大家知道现在招靠谱的工程师 在一到三阶段中,对于业务的经验,会发现手上 些技术轮子不是那么合适,或者可以改进。这 多么困难,尤其对于不成熟的团队,随意扩张是非 一常危险的。 因此,这个阶段我认为应该大量应用云技术,不 仅因为云技术提供了很好的Scalabflity,可以快速 响应扩张的需求,同时因为云技术可以大大减少 创业团队对技术人员的需求。 例如我们可以使用云主机快速搭建集群,一些云 存储服务可以简化海量存储上的工作等。诸如此 类的事情都涉及很多技术细节,需要大量人力来 完成。善用云服务可以让小团队也能支撑大的业 务量。 暴走漫画使用了云技术,我们的技术团队只有5个 人,但支持了每日上千万的PV。 我们的图片托管在又拍云上,又拍云存储提供安 全、稳定、高速、开放的文件云存储,每个月会 有好几个TB的流量。网站部分也使用了CDN来加 速,域名解析则是用了DNSPod,所有的服务器使 用了UCloud的云主机(之前使用的是盛大云)。 我们还 云服务。 毫无疑问,云服务的价格比较高,但与提供同等 服务所需的人力成本相比,不见得更贵,而且还 更为可控。总之,有了投资不差钱。 运维方面,服务器的监控状态、云的使用情况,直 观反映了系统的状态,也为技术架构的调整提供 可靠的依据。这个阶段也是不断发现问题和改进 问题的阶段。 第四阶段:优化现有技术 相信经历了一到三阶段的公司已摸索出了成熟的 模式,差不多也开始盈利,上市也指日可待了。 我要恭喜这个阶段的创业者,也许应该称你们为 时就可以找专人,成立专门的项目组来对其进行 优化。例 ̄Google、Facebook会优化Linux内核中 的算法,Google推出Go语言、推出TCMalloc内存 管理工具等,都是不断深入优化各种轮子、钉子。 国内的厂商像淘宝,也为MySQL贡献了很多优秀 的补丁。 业务进入平台期后,也逐步需要考虑缩减费用, 由于这个阶段业务量非常大,对于一些比较昂贵 的云服务,或许可以考虑自己搭建以削减成本。 总结 经过几年的创业,我深刻感受到技术并非创业的 关键,尤其对于草根创业,能快速拿出产品,甚至 优于拿出完整的产品,就更不用提拿出完美的产 品了。重要的是不断改进的这个过程。同时创业 还需要各方面的平衡,所谓酒香也怕巷子深,产 品设计、开发、运营、推广都需要兼顾,至于其中 的度,则需要创业者根据自己情况来拿捏。我的 经验也受Ruby on Rails东家37signals的思想影响 很大,他们的((Getting Rea1))和((Rework))都给 我带来了很多有益的启发。o ● 暴发曹走。力漫网 画络CIDT=OS,h曾in负g责Ra糗y 事百科早期的技术开 

本文标签: 技术阶段创业产品团队