系统故障是每个公司都会遇到的,所以做支持(Support)的人因此而有工作。S的系统自然也不是完美无瑕,在我做支持工作期间,大大小小的故障发生了很多次。其中最有意思的一次是数据中心装修房子,怎么着就把藏在墙背后的一个开关给关上了。这开关却是至关重要的,它控制着通向主机的电源,连UPS都被其控制之下,所以主机一下就歇菜了。
我刚进S时,因为是我的第一份在加的专业工作,脑子里很有些大陆意识,以编出完美无瑕的程序为荣,没有对系统整体性有太多认识。早期的一次中等规模的故障给我上了一课,让我意识到系统可以说是牵一发而动全身,单个的程序再完美也不可能让整个系统无故障。而且一旦故障发生,造成的金钱上的损失也是巨大的。
S有自己的仓储供货中心(warehouse and distribution center),店里快缺货时,店里将订单上载到数据中心的主机上,数据中心的主机再将订单转到仓储供货中心,然后仓储供货中心装车送货。在这过程中,如果出了问题,都可能造成很大的损失。特别是数据中心的主机到仓储供货中心出了问题,整个供货系统就会瘫痪。
在我刚进支持组不久,主机系统出了故障,订单没法下载到仓储供货中心。因为我不是做这一块的,所以也没有太上心。过了一段时间后,系统修复。那时,我正在为我手上的一个问题写email,经理跑过来招呼大家赶快到培训室集中,准备手改数据库里的订单记录,好让系统能马上处理订单下载。我对他说发了手上的email就去。没想到他说不行,马上要去。当我赶到培训室时,就见到一个技术大拿正在键盘上专注地敲敲打打。过了一会儿,经理告诉我们,大拿编了一个SQL,可以直接修改订单记录,不用我们手工改了。
我于是就问他,为什么这么着急。他的回答第一次让我认识到,系统故障和金钱的紧密联系。S那时大约有1500家店,十多个仓储供货中心。如果订单不能下载到仓储供货中心,仓储供货中心里的工人就干坐着,照样拿工资。订单到了之后,因为如果供货不及时,店里缺货,销售会受影响,所以S要付加班费给仓储供货中心的工人装货,这样额外的工资开支很容易就以百万记。