五千年(敝帚自珍)

主题:【原创】好吧,给一个铁道部订票系统的正确答案 -- 布老虎

共:💬185 🌺732 🌵9
分页树展主题 · 全看首页 上页
/ 13
下页 末页
        • 家园 决定软件是否可用的不仅是技术

          我也算科班出身,软件开发的专业,也算国内最好的学校之一了。从毕业几乎就没做过什么通用软件,基本上都是定制化的业务软件。开始的时候,想法很简单,客户有什么需求就说,我肯定都给你做出来。后来发现,真不是这么回事。业务人员所描述出来的业务,肯定只是业务的一个表象和片面。如果真的在某个项目里面能够碰到一个啥业务都懂的客户,那真是烧了几辈子的高香了(当然还得祈祷这不是个大忽悠)。所以如何理解多个用户从各自的角度所描述出来的业务,如何理清背后的业务逻辑和数据关系,这真的不是技术精通就能够解决的问题。如果对于业务逻辑没有足够的理解,你会在快上线的时候发现,哎,这个需求当时怎么没说,这个需求你当时说的不是这样啊等等.......。用户不是专家,他不了解从系统的角度都需要了解什么内容,你也很难保证当时说的话真的完全匹配现场的情况。这就需要你对所做业务的一定程度的了解,既要有深度,又要有广度。更不要说,在业务系统里面,同样有那种可能会超出一般技术水平的要求,对于他们可能就是一句话的事情,但对于开发人员真是苦逼大了。

          特别对于红黑客所说的后面的政治要求等特殊的背景问题,更是从一立项开始就要充分考虑的因素。这个将会影响到报价,工期,技术方案,项目组织方式,上线安排等等一系列的事情。如果项目经理没有这个意识,基本上不要想做好项目了。而且这不是所谓的中国或者国企特有的,私企也是一样,国外也是一样,看看医改网站就知道了。区别只是在于影响的要素有所不同罢了。

          通宝推:jent,老醋花生,铁手,
          • 家园 连最终用户的体验都没有重视

            其它的考虑再多也必然失败。而楼主的方案再差,也是在解决这个主要矛盾。

          • 家园 说得很到位

            在这个行业也混了十多年,主要做的是欧美市场的东西。身边比较有共识的是,产品是否成功,技术最多占20%的比重。最重要的懂行的类似产品经理的脚色。

            我们经常收购某些热销的特定行业软件。进去看代码、框架基本就是一个烂字。但客户认。原因就是这样的软件本来就是由行业里懂得各种弯弯绕的人弄出来的,天然就满足他们的需要。

            • 家园 再补充一点

              采用特定的行业软件,常常意味着工作流程的改变,用户也不傻,一般都是觉得流程合适,才下注的。

        • 家园 评软件从业人员的业务瓶颈

          企业经营要计算成本帐,而不是拍脑袋上马新技术

          看来你没有做过要负政治责任的交易系统,从你对NoSQL的态度上就能看出来,估计你对数据库的写入原理也不是太了解。

          你应该对做网站的技术很熟悉,但应该对铁路业务不怎么了解。

          NoSQL目前而言可以说极不成熟,只适用于对一致性没有要求的场合。无论是实时一致性还是最终一致性。事实上,传统行业中涉及交易业务的大型系统从来不会有人使用10年内的新技术,除非这个人想把公司整垮。不上新技术对他们而言不会导致巨大的问题,无非是每单位成本稍高一些,但采用新技术意味着冒巨大的风险去追求一个很小的每单位成本下降(因为追加新投资,总体成本是上升的,需要通过扩大过模来降低每单位成本)。一旦风险点爆发,就意味着巨大的损失,在私营企业里,就意味着CEO滚蛋,在国营企业中,意味着官帽子落地。事实上,根据我在开源世界十多年的经验,开源产品虽然创意足够多,但真正能够保证质量,懂得业务的产品几乎没有。

          因而,铁路方面如果想用所谓“低成本”的产品保证业务和质量,就只能像阿里巴巴那样自行开发来保证,这意味着远比采用成熟产品更加巨大的投资。改造一个极不成熟的数据库产品,没有10个月是下不来的,但这10个月中,各种口诛笔伐造成的间接损失将远超现有的投资规模。更何况,以铁路方面仅仅3亿元的投资规模(软件和硬件)根本支撑不起这样的改造,既是改造只是降低风险而不是消除风险,因为系统成熟性的验证或者需要数学上的证明(比如传统的关系数据库是通过关系代数可以证明的),或者需要时间验证(比如C89的工业运用)。NoSQL目前是两者都不具备的。目前NoSQL主要用于一些允许发生数据错误的场合,比如展示一下商品信息,记录一下图片位置,做个不用负责的论坛等等,都没有问题。但是铁路票务处理不允许这样,除非领导们想集体滚蛋,跟刘志军一个下场。

          铁路与电子商务这种新兴行业不一样。电子商务进行技术改造的过程是伴随着营业规模的急速扩大,因而可以摊平投资成本,但铁路不会再有规模的急速扩大,这个成本是很难摊平的。如果刘志军式的大干快上还在继续的话,这种投资扩大倒是可以接受,但当时的情况,由于动车撞车,铁路投资被暂停了。

          铁路业务不是CRUD,是Transaction(事务)。无论你如何保证结果的一致性,最后总是要保证一人一票,不能一票多卖,最终这个一致性的保证一定是落到数据库头上的,并且目前来说,只有关系数据库能够在数学上证明自己不出错,这个层面,最低档次的数据库也得是PostgreSQL,不过我不敢保证PostgreSQL就能够保证不出问题,尽管我的所有业务如今都建立在PostgreSQL上了。MySQL不行,因为它事务处理能力太烂(新版本不清楚)。同样,铁路的领导也不敢保证这些解决方案,Oracle出了问题,可以把责任推给供应商,PostgreSQL出了问题,自己承担。

          事实上,目前的铁路系统就是放弃了并发性,通过一个后台串行化队列来解决问题,放弃了并行性本身也就放弃了实时性,这种方案历史上叫做假脱机SPOOL,是一种经典的异步解决方案。在票最终被用户锁定之前,所有的订票行为都是有可能失败的。可以看到现在买火车票,当订票之后,不会立刻跳转到付款页面,而是让用户到另一个页面等待付款,实际上等待过程就是交易请求存在于SPOOL的过程,SPOOL将交易请求串行的提交给交易数据库,如果有票,更新状态,让用户付款,如果没票,向用户提示失败。正是因为SPOOL不保证一致性,所以,等票的过程经常会出现各种票消失的故障,因为数据库方面保障一致性,所以不会出现一票多卖的问题。

          互联网软件行业拍脑袋技术方案是十分危险的,这些拍脑袋技术方案严重的损毁了中国软件从业人员的信誉,所以很多女子不愿意嫁软件男。中国银行业本世纪初很多系统开发都是外包给软件行业做的,也是由于质量太烂,不懂业务,近些年都下线了,新业务系统都改由银行内部自己培养的软件人员来做。纯软件人员基本上已经被轰出了银行业。铁路行业看来是从开始就不信任纯软件人员。

          目前,还和中国还和软件外包业合作的传统行业我接触的主要有电力、政府,并且现在这两个行业信息化改造投资巨大。如果软件行业的人员继续现在这样脱离实际业务需求和成本考量,空谈技术方案的话,被懂业务的内部人员轰出这两个行业是迟早的事情。这些年,我已经见识过好几个软件外包解决方案,吹得天花乱坠,实际对业务处理的一塌糊涂,最后被轰出去的案例了。但软件人员总是不服不忿,总觉得自己的方案是最先进的,于是四处抱怨,比如攻击铁路部门,银行部门搞内部消化等等,几乎很少有反思自身问题的。

          中国的软件外包业,如果想继续发展,就一定要向传统行业渗透,辅助改造传统行业。这就要求从业人员必须沉下心来去学习具体行业的相关业务知识,而不是搞什么google崇拜,Amazon崇拜(软件外包行业的现状)。中国很多行业的业务数据规模都是全球最大的,能够将这些问题处理好,拿出国外就是最佳实践,崇拜某些外国公司没有太大意义,要知道,这些公司成功的背后,也是巨大的投资,并不是表面上看着这样简单的。淘宝为了去掉IBM,Oracle,EMC,投资了好几亿进行改造,在支付宝核心交易事务这一块仍然不敢完全放弃掉Oracle,当然外围业务系统很多都采用巨额改造后的开源解决方案了,结果改造后我就碰上过重复扣款的问题,为此阿里巴巴每笔重复扣款都要支付数百元的赔偿。

          铁路行业对系统质量的要求是非常高的,不了解的可以看看EN50128规范,指针,多态这些都是不准用的。电子票务系统虽然不需要遵守这个规范,但铁路部门对质量的要求是深入骨髓的。而软件外包业空谈技术不重质量的名声很出名,所以人家不将项目外包很正常。

          了解关系事务数据库对一致性的处理可以参考任意一本数据库的说明书。学习数据库的一定要了解这个原理,了解了这个原理才能理解一致性保障的艰巨性。推荐参考PostgreSQL的用户手册,中文版英文版皆可。

          关键词(Tags): #每单位成本#PostgreSQL#EN50128通宝推:华恩,悠悠又见西山,杨微粒,niuph,潮起潮落,铁手,icedshining,jent,我偏要折腾,崇山彩云,暗香疏影月黄昏,cindia,廣雅疏證,李根,修身齐家,springisok,兰山,
          • 家园 不能满足最终用户需求的话,算再多成本有意义吗

            铁道部和开发者究竟把最终用户放到哪个位置?作为开发者,提升客户的Value,解决客户的问题(当然还要"顺便"赚点钱)才是第一位的吧。如果这个主要目标都做不到,其它的说再多有什么用?如果主要目标根本做不到,也许项目本身就不应该立项。

          • 家园 这段说的太棒了!!!

            经常有一些专家级的人物,上门推荐自己做什么什么软件都没有问题,看看我们用的软件都能说出一堆问题,这个落后了,那个不合适,应该改造了,只需要n个万元就足够了.....一旦你信任了他,就陷入无群无尽的麻烦,开始他还很积极修改,过了一个月,找都找不到人。

            我们需要的不是什么先进的东西,是好用能用的东西。

          • 家园 这个要顶

            其实很多工业届用的东西都是不敢改的。比如IBM的那些数据库,里面老程序,谁也不敢碰,40年前的东西一个字符都不能改。最多在上层改一改。

            记得看过Bjarne Stroustrup的一个有关嵌入式编程的ppt。上面放一个战斗机的照片,下面写上你程序错了慢了是要死人的。(现在F35里面三千多万行的代码改起来很痛苦。F22程序不收敛摔飞机的录像到处都能看到)记得Stroustrup老兄一上来写到的铁律是嵌入式编程不许用new,malloc和calloc等等,原因是这些操作有不确定的结果。

            大公司的系统一般都是又老又旧的东西。而且都是自己培养人写程序。比如沃尔玛核心IT程序员三千人。加上部分长期外包的更多。核心数据都是mainframe/cobol的。网站和各店铺收款台的吞吐能里比亚马逊高很多。全公司里里外外大概有几百万个数据库表(各个店铺里面的机器的重复的只计算一次),每个店铺里面服务器的自己写的程序就有超过六千个。很多程序70-80年代就写成了,一直在用。店铺里面AIX系统换成Linux换了大概整整两年的时间。本来包给accenture做,结果做不下去了。后来只好沃尔玛的人亲自做,一个一个程序到现场手工测试(不是所有东西都可以自动测试的)。

            nosql,大数据啥的搞搞海量日志统计比较适合。真正需要严格一点的地方都不敢用。

          • 家园 很精彩

            为任何一个行业做软件,重要是了解行业流程和需求,正常软件从业者都该有这种觉悟。

          • 家园 逻辑有问题啊

            互联网软件行业拍脑袋技术方案是十分危险的,这些拍脑袋技术方案严重的损毁了中国软件从业人员的信誉,所以很多女子不愿意嫁软件男。

            不愿意嫁码农(如果为真),肯定不是因为什么从业信誉。常识来讲,肯定是因为收入和工作福利的关系嘛。

            大气候影响小气候,这个年头,技术民工就是苦逼的代名词。现在都向往土豪了嘛。

            我不是行家,上面的术词和系统大多不了解,对铁路售票系统更没关注过。就我的常识,业务和技术是两个大方向,要求码农人人懂业务,是小作坊的方式。大的系统,需求分析和架构设计是专门人员负责,有架构师,技术总监的晒。

            至于不能用指针多态,多态。和要求非常高没有必然关系的。这个更多是从软件工程角度,经济效益角度的要求。在应用软件层面,用起来不划算。

            从帖子看,似乎你只接触过行业软件,对通用软件,系统软件不大了解。一杆子打倒软件男要不得啊。虽然我已经不做码农很多年。

            BTW,西河现在政治氛围太浓了。站队太多了。虽然这里本来也不是技术论坛。

            中国的软件业比不上老美,这是不需要讨论的。毛主席说,比不上就比不上嘛,有什么关系呢。

          • 家园 业务和技术互喷,好吧我说问题在钱上

            没钱说个jb。。

            上了网站看了一下,2000万里面有1900万去买了硬件,剩下的50万内部吃喝请嫖去掉了。最后50万准备来做个系统。然后里面集成了一套流行开源产品。而且我也不觉得质量来的是“深入骨髓”的水平。国内平均档次吧。

            好吧,当然用开源也不是什么大问题,问题是要懂在哪里用,用什么开源也是要花钱的。而且开源一般通用型的,说实话这里只能无关紧要的地方用用。

            所以

            所以没钱说个jb。。

            • 家园 从投资收益率ROI的角度看

              铁路方面做的还是不错的。不过他们没有互联网系统从小做大的机会。

              几乎上线没多久,就碰上了互联网公司十几年才能辛辛苦苦发展来的交易规模。而时间没有给他们慢慢修改逐步适应交易量的机会。

              阿里巴巴的交易系统先后用了4套架构,从早期的LAMP到Oracle到分布式到现在的自建架构,用了10年时间,还碰上了大大小小的问题。

              铁路上线不到一年,就碰上了春运,然后发现原来的需求估计严重不足。

              说实话,99%的公司,你给他2000万,他们只会做的更差

              • 家园 如果这都估计不到

                俺只能说铁道部活该挨骂。他们根本就没把最终用户放在心上。对用户流量不论从理论上计算还是从实际情况出发模拟都不是什么大问题。

              • 家园 我觉得这是管理的问题

                那也有短期内爆发式增长,也能应付的来的网站

                10年前业界对大数据访问没有经验,10年后已经有一定的积累,不太可能再从0开始,这个成本不得了。

                应该说可以从业界拿到一定的数据标准然后做负载测试,然后发现这个问题。

                解决办法其实非常多。我只是觉得他们可能从需求到最后的测试都没有或者有意忽视这个问题。

                应该说,业界比较知名的公司会告诉你2000万可以做什么,不能做什么,而不是拿了钱拍完胸脯忽悠完了最后再搞钓鱼工程。

          • 家园 把数据库事务,以及acid吹的太离谱了。

            互联网并不是不用事务,所有交易相关的都少不了的。

            从事务的角度否定完全采用nosql有一点道理。

            另外这些如银行用自己的队伍开发更多是业务知识积累,这只能说不同行业的软件开发需要不同行业的业务知识,外包若没有充足的业务知识累积可能造成灾难。

            关键还是具体问题具体分析。

分页树展主题 · 全看首页 上页
/ 13
下页 末页


有趣有益,互惠互利;开阔视野,博采众长。
虚拟的网络,真实的人。天南地北客,相逢皆朋友

Copyright © cchere 西西河