
一 背景
时间太久,不为本文中的任何一句话的真实性负责。
08年的时候刚刚加入搜狐,刚刚有工作经验7个月,很快就开始做白社会的项目。
可以说是一个几乎什么都不懂新人,特别感谢琳姐带我走入编程的世界。
那时候开心网的偷菜正火,Facebook如日中天,Twitter刚刚起步,新浪和搜狐刚刚在博客上打的热火朝天。
同组的师兄刚刚从搜狐奥运组撤出,刚刚经历过奥运高峰期的考验,特地分享了架构,可惜当时才疏学浅,大部分都只能听一个皮毛,当然现在也很菜。
方老大带着我们做SNS,Mark带着琳姐,吉子哥他们闭门会开了好久-据说是好久,反正多久我不知道,我是小兵兵一个,这些都是后来他们告诉我们的。
终于他们决定了,要做白社会。从他们决定做白社会开始,就决定了太多人一生命运的改变。
用我六年前的话来说,就是在白社会的时候,没觉得有什么,可是在现在看来,60人的团队有条不紊,如同军队般整齐,条理清楚的做一个项目,是多么难得的一件事情。
更不用说在当时的白社会里,对于各种技术的调研和应用如雨后春笋。
这就是我经历过的最大的项目了~跟众多大牛比起来,大概微不足道,但是对我这种小兵兵来讲,回忆起来已经是感慨万千。毕竟当年的白社会团队,60多个人,最菜的就是我,其他人几乎全部是各个一线公司的CTO,副总裁,核心架构师,CEO等等等等。
我记得很清楚,要做这个项目的时候,第一次参加项目动员会,也是到今天为止最让我受震动的一次动员会。
二 启动
熊杰那个时候是PM组的Leader(后来一个新浪的朋友说,她们在做微博的时候,那个时候其他行业都没有产品经理这个岗位,新浪就有了。听我有点目瞪狗呆,这么算起来搜狐有产品经理这个岗位比新浪至少多了两年吧?)
做的PPT很漂亮,怎么漂亮的我不知道,反正就是讲一个人,经受着各种各样的压力,然后早上七点起床,开始挤地铁,上午被老板骂,下午被客户骂,晚上十点又要挤地铁什么的。
然后说他们需要一个地方,让他们释放压力--虽然我到现在都没太明白,一个单纯的网站能够释放这么多压力么?
总之,一屋子大概三十,或者是四十个人,聚在一起。
嗯。在开心网偷菜,抢车位,真心话最红火的时候,搜狐入场了SNS的领域。
然后,Mark他们定了一个很清晰的框架,这个框架,在未来半年到一年内,几乎没有变过。
整个网站的功能,被分解成三个模块。FrameWork,App,Common,到现在我都在延用这种模块结构。Framework是白社会的主要框架,Home,User什么的都在这里。App是预留的网站的应用,如真心话,池塘边等。Common是公共服务,邮件啊IM啊通知啊神马的都在这里面。
跟着对下面的员工做了一个分组。
两人一个组,做一个小的功能模块。吉子和琳姐好像军中大将,总共差不多十几个组。每个组领命而去,两周或者是三周交工,嗯,这是后话。
当时的目标就是,三个月左右,将白社会核心的功能做出来。包括:
用户,好友,消息,通知,任务,推荐,Feed等等等等。
三 开发
在此之前,就有了一周一次的技术分享,提前做了很多的技术储备。白社会是一个全新的架构,所以琳姐他们也决定要做一个全新的技术体系。
首先,是在项目中正式使用maven。
我在之前的项目中,用到过一点点的Maven,琳姐给了我任务,让我给大家讲一下maven.第一次技术分享就奉献给了白社会的团队,还是有很多东西不太懂,可能也讲不清楚,但是收到了申总的鼓励,说我讲的知识点可能不够深,可是条理很清楚,能像我一样把东西讲清楚的人不多。
实际上,后来各个牛人在项目里用到的maven,都比我讲的东西深的多。
其次,是在项目中推行敏捷开发。
在此之前,两人一个组,需求评审,需求讲解,方案评审,Demo,发布。
用Jira做Story的分解,每天早上跟着胡哥三人小组去茶水间开晨会。
当时的敏捷开发还有很多不完善的地方,但是已经给我留下了很深的印象,除了敏捷开发,我想我大概以后不会采用任何的开发流程了。
特别是需求评审的时候,我记得很清楚,琳子和吉子他们会争的很厉害,为了一个功能要不要做,有没有必要做,经常会吵得非常非常凶。可是我很喜欢这种氛围,很喜欢他们思考问题的方式。
印象最深的一句话就是:琳姐说,为什么要花费80%的工作量去满足了1%的用户的需求?池明想了想,说:可是用户会因为这1%的需求得不到满足而离开。
这个问题我到现在都在思考,虽然我现在思考的角度有了很大的不同,但是仍然会遇到同样的问题。
嗯。特别是在做方案评审的时候,我在一周之内,为了拿出一个为用户推荐二度好友的功能,做出了7种方案。
读研的时候我们的老师就说,我们那个年龄,22岁~28岁,是最容易出成果的年龄,现在想想也确实是,如果再次能回到那个年龄段该有多好,如果你在看这篇贴子,如果你处在这个年龄段,好好珍惜吧~
方案评审比较随意,不太在乎格式,只在乎能否把事情讲清楚,把要做的事情列清楚。我的第一次方案评审,也是交给了搜狐。
这是一件很开心的事情,那么多技术大牛告诉你方案中哪里做的不合理,告诉你需要怎么做,怎么解决高并发的问题,怎么去做算数据量,怎么去估算占用的内存大小,怎么去利用缓存,怎么去防止数据不同步。
Demo也是一件很开心的事情。整个搜狐的团队,没有测试。是的,搜狐60多人的研发团队,没有一个是测试。所有的程序员,自己就是测试。我们能确保,每一组工程师,做出来的程序,在Demo之后,几乎是零Bug的。
第三 是在项目中用了DAL
这是一个通用的,封装了缓存的DB访问框架。无数次我们都讨论过开源事情,只是一拖再拖~到现在,嗯。
申总和康总负责这个框架的研发,是的,你没看错,在我们做项目的同时,他们只比我们早启动了不到两个月。
然后DAL支撑了绝大多数情况下的并发压力,而且用起来很方便,很简单。
也直接影响了我对于DB使用的喜好,从此以后再也无法接受联表查询。
第四 是在项目用到了Tuscany
Tuscany是我至今仍然非常喜爱的框架,非常非常喜欢。Tuscany的设计哲学很经典,很开阔,又很简洁。看完Tuscany之后,再看Dubbo,有点无法忍受这种山寨版的Tuscany,虽然Dubbo有他自己的优点,也是国内很多公司正在使用的东西,但是几乎 没有什么思想,或者说我已经掉进Tuscany的坑里面根本不想出来了。
可惜Tuscany更新到2.0就不再更新了。
不仅仅是Tuscany的使用,Tuscany本身并不支持负载均衡。胡总神一样的花了两周时间,重新写了一个Scallop的框架,用于做负载均衡。
嗯。当时还没有Zookeeper,即便现在有了,我也更喜欢Scallop这种简单直接明了的方案。
第五 是在项目中用到了JMS
ActiveMQ确实有很多坑,我们遇到过不少的情况,折腾了好久才把他搞定。
用ActiveMQ来做解耦,也确实是让代码简洁了很多。比如说用户注册,要算积分,要算推荐,要加好友,要初始化任务,要做很多很多事情。这些东西,用JMS来解耦是最合适的。
而且还封装了Tuscany和JMS组件,这是我一直很佩服的地方,这些开源框架,在这些大牛手里就是一个个可以任意组装的玩具,三两下就明白别人怎么做的,然后自己要怎么改进。
第六 是在项目中用到了Comet&Erlang
最早听到Erlang的消息机制,进程的概念的时候还不太了解,直到后来被迫自己也要这么做的时候,才重新温习了一下Erlang的东西。
Erlang的语法也是真心醉了,如果不是看过一点Drools,还真的。。学不会。
白社会用Erlang来做五子棋,那时候对Comet也是一知半解,直到后来自己用Comet来做在线多人扫雷的时候,才深刻体会到重新打开Http连接是一件多么废时间的操作,才真正转向到WebSocket-可惜,白社会那时候没有WebSocket。
第七 是在项目开发了自己的标记语言
马丹是叫SML还是叫什么来着,我不记得了。仿照Fackebook的做法,解决第三方App怎么和我们的FrameWork交互。看到他们当时去推测和分析Facebook的技术原理的时候,福尔摩斯都不过如此。
很快,一个小的示例程序就做出来了~
第八 是在项目中使用了Groovy
Groovy用在了任务上,用户接受任务,完成,领取奖励,这些东西是通用的,但是每个任务的完成机制不一样,所以我们需要一个轻巧的,简单的动态语言来解决这个问题。
嗯。后来我在我们自己的项目中,把Groovy用到了后台统计各种复杂的计算公式算法中,可以在线编辑。
这是我记得,或者是我知道的,在当时三个月里,几乎全部出来的新技术和新框架。
而这一切,丝毫没有影响整个项目的开发进度,这么多人做出来的程序,几乎是没有Bug的。
嗯。我一直不知道该怎么描述。
四 内测
要上线之前,苏菲设计了一版粉红的UI,还有一个冬天雪人的UI。我更喜欢那个雪人的设计。
他们还加了小彩蛋,关灯,老板键。
先是开始内测,内测的时候,很快就发现了Feed里到处都是加好友的信息。然而,以我的感觉来看,搜狐内部其他部门对于这个产品,几乎是带着嘲讽的角度去看的。
并不会如我想像的一样,大家都是搜狐的员工,出了一个新的产品都会去开开心心的用,然后开开心心的提问题,大多数都会说:这什么鬼东西,怎么设计的这么烂?
因为都是同行的原因?我猜不透~也不想知道。
不过,白社会大部分的时候口碑都很好,UI的设计,交互的体验,简洁的功能,都是我做过的系统中最舒服的一个。
内测开始后,安全性,用户体验有了一波新的改进。跟着就进了公测了~
五 公测
公测之后,对于绝大多数的人,白社会的口碑都很好。特别是生活在别处,特别是小白这种亲切的称呼。
后续又出来了白社会小报,池塘边,梦幻城,绿光森林等几款很有特色的产品或者是游戏。
只是当时大家所谈的都是一件事情,想要复制开心网偷菜应用的成功,所有的人都认为,白社会只是缺少一个杀手级应用。
他们说,当时新浪在做新浪朋友。然后搜狐抢先上线了白社会,当白社会出来之后,新浪朋友的团队直接解散,放弃了新浪朋友,转做微博。
嗯。我不知道具体是怎么样的,白社会的产品研发团队都很赞,可是在运营上,在大的方向上或者还是差了一截。
只有北京的公交车似乎有过白社会的痕迹,搜狐主页上曾给白社会留过一个很值钱的广告位。
天天向上那时候也只是张朝阳大人一个人去了,似乎并未能展示白社会的团队。
六 最后闲谈一下发布流程
当时,白社会也是没有运维的,运维是胡总和洪涛两个大神负责。每周二,每周五,半夜十二点,每一个项目的工程师,都在自己的电脑面前,完全不需要聚在一起,完全不需要在一起加班,只需要在自己的家里,电脑面前,等着胡总说一句:发布了~检查一下有没有发布成功。然后开开心心的等着晚上第一个使用的用户,检查有没有问题。
嗯。每次发布,白社会就会写上一句:白社会正在进行日常卫生打扫.
现在发布一次程序,跟打仗一样。
现在安排60个人去做一个项目,在三个月之内做出这么多东西,又能几乎没有任何损耗的去有序开发,好难。
白社会战友群,写的是那些年,你上过的白社会。群里大概80多个人,有很多是在我离职之后才加入的,现在都混的很好很好。
最后,贴几张截图。
马丹,上传不了图片。
