传统企业去IOE,是一场昂贵的烟花秀吗?
最近一年来,IT界和资本市场就传统企业在IT基础架构是否应该“去IOE”进行了热烈的讨论。尤其是资本市场,在政府以行政性命令推动国产化的软硬件的背景下,对国内的服务器、数据库、存储设备商给予了极高的期待,甚至有点倒逼了奋斗在一线的金融、电信、政府等企业的未来设计。我研究生阶段是学习计算机专业的,后来在腾讯控股工作过2年左右时间,亲历了互联网公司的后台架构,又在证券行业的信息技术部门浸染了数年,对这个问题有着切身的体会。在我看来,传统企业想在10年之内“去IOE”,很容易成为一场昂贵的烟花秀。
什么是IOE呢?从细节上来讲,这三个字母分别代替了IBM服务器,Oracle商用数据库,以及EMC存储设备。从架构设计来讲,它们代表了“集中式+封闭”的商用系统。这套系统在金融、电信等传统企业中使用非常广泛。这些行业的业务需求比较明确,预算很宽松,业务发展在预计范围之内。这3家信息技术巨头,瞄准了服务器、数据库和存储这3个环节,提炼出典型的业务需求,精心优化,使得上述企业在选择IT架构的时候,IBM+Oracle+EMC 成为了最稳妥的选择。国内的银行界和证券界,核心系统上所运行的服务器,就被IBM的小型机、大型机所垄断。
这样一套系统的购买成本,少则上千万,多则上亿。核心技术也掌握在对方手里,出现疑难杂症了,自己人束手无策,依然得付出高昂的人工费用请对方工程师莅临解决。另一边,以阿里为代表的互联网企业普遍采用了IBM的x86式服务器、Linux操作系统、MySQL开源数据库以及自研存储系统,我们简称之为“分布式+开源”架构。那么,传统企业能否学着互联网公司“去IOE”化呢?要回答这个问题,首先得来看看互联网企业为什么要逐步“去IOE”。
首先,集中式部署很难适应互联网企业对应用的高可扩展性(High Scalability)要求。任何一家互联网公司的产品,在设计之初,都只是一个雏形,基础产品发布完毕之后又会衍生、优化、部署出多少需求,是无法预知的。例如,淘宝网的后台模块包括分布式文件系统(TFS,Taobao File System)、HFS数据通信中间件、TimeTunnel实时数据传输系统等。假如依然采用单点集中式的数据库部署模式,不同团队新发布一个系统,就必须和单点集中的核心系统不断磨合和测试,才能确保新系统不会影响原有工作系统的性能。低可扩展性大大降低工作效率,以至于无法容忍。另一方面,假如单一系统出现了宕机,必须保证其他的业务系统能够“有损”工作,将系统灾难局限在局部而不影响用户体验,在集中式封闭系统下,单点出现了故障就意味着全系统无法工作了。
第二,互联网系统正在经历的访问压力,是前所未有的,超越了上述3家产品所能模拟的最大访问压力。2013年双11当天,同时在线人数超千万,网站PV过百亿,天猫和淘宝的单日成交金额为350.19亿,支付宝成功支付1.88亿笔,最高每分钟支付79万笔。由于当时阿里巴巴已经基本完成了“去IOE”的项目而完全采用了“分布式+开源”的系统架构,因此我们无法设想假如当时依然维持“集中式+封闭”系统,阿里巴巴是否依然能够呈现这一壮举。尽管如此,我们依然可以猜想得到,小型机、Oracle数据库和EMC存储系统在发布之时,是很难模拟如此复杂场景和高并发访问压力的。既然存在着隐患,为何要将自己的业务发展空间,受限于基础产品厂商呢?
第三,由于“IOE”产品并不开源,工程师们针对特殊业务需求,难以针对具体情况进行定制化的优化。例如,淘宝网和天猫的用户需要“高频度读、低频度写”访问海量的小图片文件,这些文件的组织、索引、更新,是Oracle数据库和传统存储方案解决不了的。阿里的工程师们被迫研发出独有的TFS分布式文件系统来解决这个问题。当然,Google的GFS系统和腾讯的TFS系统也先后问世了。
第四,“集中式+封闭”商用系统的成本,和业务规模的增长,成指数级关系。“分布式+开源”系统的成本,和业务规模的增长,成线性关系。后者高度可控。
从这里可以看出,谷歌、阿里、腾讯等公司的“分布式”架构,是由其爆发式的业务需求所推动的,它们的业务和技术需求,已经大大超越了传统的“集中式”架构的范畴,必须另起炉灶,自成体系。那么,国内的金融、电信等传统行业,是否能学着互联网企业,走上一条“去IOE”的分布式发展道路呢?在我看来,在10年之内这几乎是不可能完成的任务。
首先,互联网企业之所以能够逐步地替换掉“IOE”产品,首要条件是它们的技术团队在高压力的业务场景下,以不断试错勇于创新的精神,摸索多年才具备了成熟的条件。阿里巴巴的1.7万名工程师,耗时3年多,才逐步完成了这件“风险极大、收益极高”的项目。在传统行业的IT部门,工程师在以稳定为先的工作氛围下,创新试错思维难以得到鼓励,技术能力无法满足“去IOE”的要求。
其次,传统企业的行业发展,几乎没有非要“去IOE”不可的动机。在目前“IOE”系统完全可以支持业务发展的宏观背景下,要企业花费巨资投入去完成一件“风险极大、收益极低”的挑战性项目,对决策层和执行团队来说,是一件很难理解的事情。客户对系统和数据稳定性的要求,要远远高于互联网用户,在推进过程中经常要出现短期难以定位、无法解决的系统问题,那么谁来承担责任?近10年来,上海证券交易所虽然一直在研究将核心交易系统迁移至Linux系统上的可能性,但是线上运行的依然是小型机系统,并且10年之内无法更改。我相信,奋战在研发一线的团队,出于自身实际情况的决策,往往是比较明智的。
第三,既然阿里的“去IOE”分布式方案难以推广,能否沿用“集中式+封闭”架构,但是采用国内自主研发的数据库产品和服务器(联想、浪潮系列)呢?在我看来,这依然是所谓的“爱国主义者”的一厢情愿。国内的数据库产品和Oracle、MySQL比较起来,就如同三岁孩子和大学教授在比拼智商。在服务器方面,浪潮的产品,在低利润的PC服务器领域,正在逐步接近联想的产品(x系列),但是金融、电信行业采用的小型机、大型机产品上,IBM优势巨大,难以动摇。
转自雪球