写点什么

中移动宁宇分析 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:573364
用户头像

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

关注

评论

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

一文教会你认识Vuex状态机

华为云开发者联盟

Vue 应用 vuex 事件 父子组件

待办事项列表,敏捷项目管理的核心工件

万事ONES

Scrum 敏捷 研发管理 ONES

质量分析工具-监控大厅大揭秘

anyRTC开发者

音视频 WebRTC sdk

百度灵医智惠明星案例获人民日报点赞:智慧医疗让看病更便捷

百度大脑

人工智能 智慧医疗

24道几乎必问的JVM面试题,我只会7道,你能答出几道?

北游学Java

Java 面试 JVM

博云作为专业独立PaaS厂商,入选中国PaaS市场研究报告

BoCloud博云

PaaS

那个陪我打王者的兄弟进了阿里

艾小仙

☕️【Java技术之旅】带你一起探究String类不可变的特性

洛神灬殇

string 原理 字符串 6月日更

☕️【Java 技术之旅】带你一起攻克String类创建的难点分析

洛神灬殇

Java string pool string 6月日更

宜兴牵手百度智能云共建人工智能应用中心,推动数字经济创新发展

百度大脑

人工智能

程序员需要了解数据库知识么?

escray

学习 极客时间 朱赟的技术管理课 6月日更

准备3个月,面试10分钟,Java中高级岗面试为何越来越难?

Java架构师迁哥

春色满园关不住,带你体验阿里云 Knative

阿里巴巴云原生

云原生

如何科学制定和管理项目计划?

万事ONES

项目管理 ONES 项目经理

基于传感器的人体生命体征监控技术

不脱发的程序猿

物联网 传感器 智能医疗 人体生命体征监控技术

福利时刻 十年黑客大佬的Web安全渗透技术分享

学神来啦

Linux 黑客 安全 运维自动化

Flink + Iceberg 在去哪儿的实时数仓实践

Apache Flink

flink

小白必看的,JS中循环语句大集合

华为云开发者联盟

JavaScript js 循环语句 while循环 for循环

如何针对美工与设计师的Maya工具进行版本控制

龙智—DevSecOps解决方案

想做DBA,多租户管理你一定要知道这些

华为云开发者联盟

多租户 GaussDB(DWS) 资源池 存储空间 资源隔离

理解Linux之文件I/O——知其然,知其所以然

奔着腾讯去

文件管理 Linux内核 文件I/O I/O模型

面试官:如何给字符串设计索引?

一个优秀的废人

MySQL 索引 字符串 索引优化

毕昇JDK:为啥是ARM上超好用的JDK

华为云开发者联盟

Java 华为 jdk Openjdk 毕昇 JDK

阿里云官方出品:全面总结阿里云云原生架构方法论与实践经验

尹文敏

云计算 阿里云 云原生

Webpack 系列:如何编写loader

范文杰

webpack 6月日更

【LeetCode】从上到下打印二叉树 Java题解

Albert

算法 LeetCode 6月日更

开发感想 基于8051的数据采集系统(科技向)

万里无云万里天

经验总结 6月日更

企业应用AI之路怎么走?飞桨实践有真知

百度大脑

AI 飞桨

构建高可用的MySQL

林一

MySQ MySQL 高可用 Maxscale

带你剖析鸿蒙轻内核任务栈的源代码

华为云开发者联盟

鸿蒙 任务栈 任务调度 任务上下文

react源码解析9.diff算法

全栈潇晨

react源码

  • 扫码添加小助手
    领取最新资料包
中移动宁宇分析12306的“三宗罪”以及背后原因_架构_郑柯_InfoQ精选文章