写点什么

中移动宁宇分析 12306 的“三宗罪”以及背后原因

  • 2012-10-07
  • 本文字数:2711 字

    阅读完需:约 9 分钟

前不久,InfoQ 中文站报道了《 12306 再次陷入危机,网友发起开源项目》,从技术角度分析了 12306 网站的缺失。

宁宇是中国移动业务支撑系统部副经理,国庆长假中,他撰写了一篇博客《铁道部系统的分析与借鉴》,从企业信息的角度,谈到了他对于铁道部客票系统的理解,以及对于该系统的规划和设计方面的一些观点,最后还分享了他认为 IT 支撑系统建设在此次事件中可参考和借鉴的经验教训。

首先,他从铁道部信息化办公室披露的信息中分析得出结论:

中标的太极和同方主要做的是硬件和“配套系统”,而作为信息系统的核心——应用软件,则由铁科院“自主开发”。而从时间上来看,9 月 14 号太极刚刚宣布中标“新一代客票系统”,硬件设备应该还在原厂的仓库里,3 亿多投资还未生效,现在在用的应是原来的“铁路客票系统”。从这个意义上来说,目前暴露出的网站能力不足、安全防护能力差、体验不佳等,恰恰说明对当前系统升级改造的重要性和紧迫性;而在这期项目中,也引入外部公司实施安全、监控、决策等系统的建设。

接下来,他提出了自己对“铁路客票系统”和“新一代客票系统”在规划和设计方面的观点,指出身为传统行业代表的铁道部,在信息系统建设方面的“三宗罪”。

第一宗罪:重硬件轻软件。

重硬件轻软件是国内信息化项目常出现的问题。领导看硬件设备放在那儿,心里踏实;软件难以量化评估,尤其是自主研发的软件成本到底应该如何计算?一般系统 70% 的投资是硬件,软件只占 20-30%,而且其中还包含着安全软件、工具软件等,很多时候应用软件是送的。3.3 亿投资看似不小,但软件方面的投入又会有多少呢?

第二宗罪:重管理轻客户。

对于一个服务企业来说,面向客户的“网站售票、客服、支付”等环节应该是应用系统最关注的,也就是说,客户体验、以客户为中心,应作为 IT 系统建设的重要原则。但对于传统企业来说,后端的管理需求、核心数据、内部效率和效益等往往会被放在更重要的位置上。铁道部的“铁路客票系统”客户体验不佳,无论是投资不够还是重视程度不足,根子上还是思想观念没转过来,没有真正以客户为中心。

第三宗罪:重建设轻运营。

重建设轻运营,忽视安全和服务。这方面不多说了,大家都看得到,希望铁道部能从中汲取教训,亡羊补牢。

宁宇认为:车票作为客票系统的核心资源,数据管理和使用流程的设计非常关键。他从四个角度展开分析:

1、票务集中的角度

全国票务集中管理是件了不起的大事,既涉及总部与地方的管理和权力之争,也存在技术方面的难题。……票务管理很复杂。如果铁道部门把运营效率作为票务管理的目标,希望每列火车都获得最大收益,那么火车票管理的算法会更加复杂,而复杂的运算会降低系统的运行效率,所以这方面的设计者绝对不是随便就能做的,必须是技术和业务的高手。

2、流程和接口设计

从买票的视角看,对票务资源的操作要经历产生、预占、出票等阶段,还可能会发生回退、变更等操作,流程和接口的设计非常关键。……遇到超大规模的业务量时,每个错误设计都可能给系统带来致命的负面影响。

3、异常流程和特殊需求

说白了,就是需求部门要不要给自己留一些后门,给自己留多少寻租的空间。IT 系统很傻的,只会按照规定执行,不会根据原则灵活掌握,给领导和关系户留票;而这方面的需求有多大量,有多少种?IT 不是万能的,但 IT 确实可以实现客户明确的需求,这种需求不满足,会遭到需求部门的咒骂;但异常流程、特殊需求多了,系统就复杂了,慢了。

4、资源供应角度

在资源不足、供不应求的情况下,IT 的高效率和自动化可能导致供需矛盾翻倍加剧。运力就这么多,即使将票务资源向京东、苏宁、淘宝、携程开放,车票缺口的问题还是解决不了。而如果将票务资源向电商开放,各渠道之间的资源如何平衡,会不会出现网站抢票虚占资源的情况?如果电商虚占抢票,票务资源紧张的局面会加剧,所以这些问题的解决确实不简单。

宁宇认为:

这样的软件系统不太可能是个成熟的可复制的商业软件,铁道部让自己的研究所来开发这套核心系统是有道理的。

对于 12306 网站,宁宇认为它

目前只是铁科院开发的铁路客票系统的一个附属模块,却是引发问题的源头,

其背后的原因有 4 点:

  1. 铁科院的核心与主力都集中在票务资源管理,因此 12306 网站在资金、设备、安全机制、人员等资源方面投入少,这是网站烂、低级错误多的主要原因。
  2. 既然这个网站是铁路客票系统的一个小模块,没有单独立项,又缺乏资源,很可能存在开发建设不规范、技术设计不严谨、验收测试跟不上等问题,确实可能就是几个搞计算机的学生鼓捣出来的,和大系统搅合在一起,无法进行单独的成本核算;而这可能是迟迟不公布网站建设成本的原因。
  3. 流程设计时更多考虑的是核心系统的运行效率,如果把铁路客票资源管理作为系统核心,那么网站设计时必须要绥靖内部流程,这就更易加重 12306 网站的负担,导致客户体验进一步下降。
  4. 客观来说,以民众对铁路客票的需求、以及铁路部门客票的发售等管理方式,这个网站的设计并不简单,还是存在一些技术方面的难题的。

最后,宁宇分享了他认为 IT 支撑系统建设在此次事件中可参考和借鉴的三点经验教训:

  1. 服务性企业,尤其是直接向最终客户提供产品和服务的企业,IT 系统设计和建设必须以客户为中心,流程的设计要重点关注客户体现和用户的使用效率。依据传统的“以资源为中心、实现内部资源利益最大化”原则设计和建设的系统,会被用户骂死。电信运营商的系统建设一定要引以为戒。
  2. 给铁科院提个醒,多系统集成的设计思路和单一系统不一样。这次新一代客票系统是多系统集成的方式,网站、支付、安全、决策等都是独立的模块,这些模块和核心系统的集成模式有多种技术实现方案;但在业务量超大、运行效率非常重要的情况下,技术方案的选择一定要慎重;而这个问题,要在业务流程设计的时候就予以重点考虑。
  3. 信息系统建设既要自主掌握核心,也要考虑将一些部件交给专业化的公司或单位执行;不仅要关注硬件,关键和核心还是应用软件。领导希望软件自主开发、掌控核心,但要达成这个美好的目标,不仅要有大量的人力资源,而且还有很多其他的配套条件,否则一旦系统出问题,负面的影响更大。

该博文发出后,在微博上引发不少评论。付亮的竞争情报应用认为:

专业人士,基于有限信息,分析得比较全面,连中国特色需求影响斗分析到了,不过联系实际多了一点,战略高度差了一点,最大问题还是高层对 #信息化# 工作缺乏足够的理解,头疼医头,目标不明确,立项调研深度不足。

魔隐者提到:

信息化建设最重要的就是领导的决心,这种决心不在于投资额度,而在于对信息化工作的持续支持、持续监督、持续过问。

企业信息系统建设,除了技术之外,更多依赖于管理和流程,宁宇这篇博客的分析也证明了这一点。有过相关经验的读者,欢迎在评论中留下您的看法。

2012-10-07 22:573516
用户头像

发布了 479 篇内容, 共 158.7 次阅读, 收获喜欢 50 次。

关注

评论

发布
暂无评论
发现更多内容

Prometheus Exporter (十九)Collectd Exporter

耳东@Erdong

Prometheus 28天写作 exporter 12月日更 Collectd

react源码解析17.context

buchila11

React React Hooks

【LeetCode】截断句子Java题解

Albert

算法 LeetCode 12月日更

【量化】资产组合理论:鸡蛋不能放在一个篮子里

恒生LIGHT云社区

量化投资 量化

说说节奏感

Justin

方法论 28天写作

react源码解析18事件系统

buchila11

React React Hooks

网络协议之:基于UDP的高速数据传输协议UDT

程序那些事

TCP 网络协议 udp 程序那些事 12月日更

对话中国人寿:DevOps实践经验分享

龙智—DevSecOps解决方案

DevOps 中国人寿

12 张图 | 深入理解 Eureka三层缓存架构

悟空聊架构

缓存 Eureka 28天写作 悟空聊架构 12月日更

拖延

Nydia

大厂算法面试之leetcode精讲24.其他类型题

全栈潇晨

算法 LeetCode

学python,怎么能不学习scrapy呢,这篇博客带你学会它

梦想橡皮擦

12月日更

有了六顶思考帽,从此告别无效争吵

Ian哥

项目管理 28天写作 项目管理工具 六顶思考帽

使用 javap 分析 Java 的字符串操作

汪子熙

Java jdk 28天写作 12月日更 javac

团队基建系列 - 组织知识传承 1

搬砖的周狮傅

团队成长

Flutter开发:TextField常用属性的使用

三掌柜

28天写作 12月日更

【HarmonyOS 专题】01 基础 Mac 环境安装配置

阿策小和尚

HarmonyOS 28天写作 Android 小菜鸟 12月日更

从微服务架构的现状和未来看学习路径

博文视点Broadview

Linux云计算架构师:Linux全套实战学习资料

侠盗安全

Linux linux运维 运维工程师 云计算架构师 linux电子书

全网最全-混合精度训练原理

科技热闻

模块1作业

miliving

大厂算法面试之leetcode精讲23.并查集

全栈潇晨

算法 LeetCode

模块一学习总结

whoami

「架构实战营」

聊聊 Kafka: 在 Linux 环境上搭建 Kafka

老周聊架构

签约计划第二季 2月月更

Go语言学习查缺补漏ing Day4

恒生LIGHT云社区

编程语言 Go 语言

使用javap深入理解Java整型常量和整型变量的区别

汪子熙

Java jdk 28天写作 12月日更 javap

喜报 | 旺链科技获批张江国家自主创新示范区专项发展资金!

旺链科技

区块链 数字经济 产业区块链

Prometheus Exporter (十八)Graphite Exporter

耳东@Erdong

Prometheus 28天写作 exporter 12月日更 Graphite

Flutter 动画【Flutter专题16】

坚果

flutter 28天写作 签约计划第二季 12月日更

Git进阶(十一):Git 常用操作汇总

No Silver Bullet

git 12月日更

MySQL 连接数过多的处理方法合集 - ERROR 1040 Too many connections - 卡拉云

蒋川

MySQL MySQL 数据库

中移动宁宇分析12306的“三宗罪”以及背后原因_架构_郑柯_InfoQ精选文章