现实世界问题
了解系统在投入真实世界使用时面临的挑战,吸引和流失客户的成本,以及构建稳定系统的方法。
冷静的软件
新的软件就像一名刚毕业的大学生,满怀乐观与活力,却突然面对实验室之外世界的残酷现实。在真实世界中会发生一些在实验室里永远不会出现的事情,而且通常都是坏事。在实验室中,所有测试都是人为设计的,人们预期会得到某种特定结果。而软件在真实世界中遇到的挑战,并没有如此清晰的答案。
企业级软件必须保持一种“冷静”的态度。这种冷静的软件总是预见到糟糕情况的发生,当它们真的发生时,也不会感到意外。它甚至不完全信任自己,因此会设置内部防护机制来防范自身故障。它尽量避免与其他系统深度耦合,因为那样可能会受到伤害。前一课中提到的航空公司核心设施项目,以及导致航班停飞的那个例外情况,就缺乏这种冷静的态度。和往常一样,团队被新技术和先进架构的兴奋感所吸引,大谈特谈杠杆效应和协同优势。被金钱数字迷惑了双眼,他们忽略了前方的警示标志,最终走向了错误的方向。
低稳定性带来的严重后果
低稳定性会带来巨大的实际成本。
第一章中的零售商(生活在生产环境)每小时宕机损失一百万美元,而这还是在非旺季期间。交易系统可能一次错过交易就会损失同样数额!
客户流失的成本
行业研究表明,线上零售商获取一位客户的成本高达150美元。如果每小时有5000名独立访客,假设其中10%的人因系统问题永久离开,那么就相当于浪费了7.5万美元的营销投入。
见链接1。
更难以量化但同样令人痛苦的是品牌声誉的损失。品牌形象受损可能不像客户流失那样立竿见影,但试想一下:在假日销售季,你的运营问题被《巴伦周刊》报道出来。即便投入数百万美元做形象广告,宣传在线客户服务的优势,也可能在几小时内就被一批故障硬盘彻底摧毁。
高稳定性并非昂贵
高稳定性并不一定意味着高昂成本。在构建系统架构、设计乃至底层实现的过程中,许多关键决策点对系统的最终稳定性具有巨大影响。面对这些关键点,两条路径都可能满足功能需求(达到质量保证目标),但一条可能导致每年数小时的宕机,另一条则几乎不会发生中断。
实用建议:令人惊讶的是,一个高度稳定的系统,其开发成本通常与不稳定系统相当。
Quiz
在实验室中,所有的测试都是由那些了解________的人设计出来的?