重大的决定:推翻之前的广告服务器设计
与此同时,FreeWheel已经签下了几家试水的小型客户,潜在的大客户依然处于观望状态。广告服务系统第一个版本的发布日期定在了2008年1月。虽然具体的产品需求还在变化,有时甚至客户连自己的具体需求都尚未明确,但是同所有创业公司一样,最终决定先确定发布日期并初步整合出一套系统再谈其他细节,毕竟公司存活才是第一位的。FreeWheel的前期或多或少是处于此种境况,从架构设计的角度来说,即求快求简。因此我们做的第一个比较大的决定,就是推翻了之前的广告服务器设计,毕竟“留给中国队的时间不多了”。
原先的设计有以下几个关键点:
• 使用Apache Module,
• 多个进程(类似于MicroServices),
• 并且C语言和Java混用。
这种设计主要会带来两个问题:高复杂性和测试/维护的难度大。而新的设计则采用C++,且只有一个进程,用FastCGI和Web服务器进行通信(后来很快甚至放弃使用FastCGI,直接内嵌一个http服务器)。基于新的设计,总架构师Jack Deng和同事共同连续奋战两个星期,加上另外两个同事写的测试用例,第一个可以Demo的版本成功问世,加班工作也就此告一段落。不仅如此,美国的运营同事也已蓄势待发,公司购进了几台AMD的服务器,开始准备上线。总体来说,运营部门对调整后的设计是比较满意的,部署操作简单,只需将可执行文件和配置文件拷贝即可运行。值得一提的是,Jack还做出了另外一项重要决定,虽然当时使用内存成本较高,但公司直接选择了使用64位,并且把数据都放到了内存里来简化系统。得益于之后内存颗粒的降价,该点设计原则到现在大体没有改变——能放进内存的就不会放在其他地方。在这段时间里,基于Ruby on Rails的UI系统、Hadoop的报表系统,以及一套Flash ActionScript 2的类库做完了第一个版本,2008年实现了准时上线。