首发在聊聊架构 ,发到这里备份一下:

因为常常在聊聊架构群里看到有很多朋友在问旧系统升级改造的一些原则与经验,大家面临着各种各样的问题,于是在这里跟跟大家聊聊我经历的那些旧系统改造的那些事儿。

本文是整个系列的第一篇内容,文章以使用COBOL语言开发于70年代的某日本公司W系统的改造升级为例,来介绍系统升级改造的整体思路。

当系统日益臃肿,状况频出,难以满足公司业务发展的需要,运维感到压力山大,但公司出于保护投资的动机,又不能完全抛弃现有系统,另起炉灶。那么对该系统进行升级改造呢就不得不提上日程,因此我们首先要做的是直面系统所存在的问题,明确系统升级所需要达到的目标,再根据目标提出相应的架构解决方案。

我们来看一个案例:某日本公司W系统使用COBOL语言开发于70年代,运行在IBM 的Mainframe 大型机上,数据存储使用VSAM(Virtual Storage Access Method),结构上采用C-S架构,用户使用仿真终端工具远程登陆主机;批处理使用JCL(Job control language);在使用了30多年后,公司不得不进行改造升级。首先我们应当分析其存在的问题:

1、运行平台维护困难,成本高昂。

该系统运行于IBM Mainframe大型机系统,诞生于1964年的S/360,系统为OS 360,后面陆续推出OS 370,OS390,最新的是IBM Z13大型机,以其强大的计算能力,极高的可靠性(年维护时间不超过5分钟)以及其安全性深受各个行业所信赖,尤其广泛应用于银行金融等关键领域。但购置费用极其昂贵(注:2014年Z10 报价2000万美元,最便宜配置也是500万,听说近来降价了), 其运维成本更是十分巨大,运维人员费用昂贵大家都知晓,其他仅机房空调电费一项就非常可观,不是土豪用不起啊。

在30多年前性能强安全稳定的服务器屈指可数,价格昂贵自然是情理之中,但如今各种架构服务器价格已经亲民许多,因此在服务器上已有足够多的选择,采够相对实惠的硬件可以将有限的预算花到其他更需要的地方;尤其是对于企业而言,如何将预算使用的更加高效是每天都要面对的问题;因此成本概念不仅仅是公司老板和财务经理需要,作为架构师也是需要具备成本成本意识,关注软件架构在各个阶段的成本。

2、数据和代码维护困难,难以跟其他企业信息系统进行数据交换

COBOL语言还属于面向过程的高级语言,有着严格的代码格式,位置写错了都编译不过,在主机上debug极其不便,基本只能靠log文件输出查看数据;况且这些代码都用了近30年,当时比我年龄都大,也是历经多次更改,具体业务也几经变迁, 当年写代码的程序员只怕是都退休了,维护极为困难。使用了CICS(Customer Information Control System)中间件,由于IBM 主机系统的封闭性,该系统与其他企业信息系统进行数据交换困难,COBOL 调JAVA,COBOL调C 等异构程序间的数据交互的开发非常繁琐,对人员技术要求较高。数据存储采用了 VSAM,是一种文件存储方式,远远不能满足当今数据存储的要求;在对数据分析挖掘的需求日益增多的今天,更是无法满足这些新需求的需要。

3、主机终端资源有限,同时在线用户数难以扩容

在C-S架构下,使用系统是通过终端设备连接至主机系统,由于主机资源有限,各系统同时终端连接数是固定的,因此当需要进一步扩大同时在线用户数量则受到诸多限制;毕竟主机资源昂贵,开一颗CPU核心也是需要付出不菲的美刀的。

针对上述三个主要矛盾点,我们发现主要的问题在于平台架构和运行环境所带来的桎梏使得非改不可。所以就这样的需求而言,解决方案就非常直接:

1、平台整体移植至windows,数据存储由vsam向数据库迁移。

首先是决定将IBM COBOL代码通过转换使其运行在Windows平台的Micro Focus Net/Enterprise Server Express服务器上,解决了硬件昂贵的问题,毕竟相对于主机而言,Windows服务器的购置成本和运维成本仅仅是主机的九牛一毛,从而使系统运维成本大幅下降,运维人员也更易招募。其次,变VSAM文件存储为Oracle数据库,解决数据管理和使用上的种种障碍,毕竟在二十一世纪了,数据库较文件存储不知高到哪里去了(+1s)。最后,将批处理代码由JCL迁移至BAT脚本,调度控制采用了Hitachi JP1 server,由这主要的三步将平台全部代码完整迁移至Windows平台。当然,同语言的异平台间的迁移的项目在日常工作当中难以见到,但给了我们一种思路,就是不要被底层运行环境所限制了思想,跳出来反而能获得新的收获。

2、系统由C-S架构转向B-S架构

将用户界面做整体转换,由之前的UI由CICS实现的LMAP页面转换为Java web 应用,由于采用了流行的BS架构,之前由于终端数量限制的问题则得到解决。由于,CICS系统本身有较多页面控制功能,因此我们采用Java自行实现了其前端框架的主要功能,如前后端数据转换与传输,页面显示及跳转这些基础功能。

因为客户公司要求界面及控制方式要与原有系统一致,保证完全的界面及功能与原有系统相同,从而减少对原有员工的培训和适应期,保证系统的顺利切换,避免因此带来的风险。当然这个跟日本的文化或者是人的特质决定的,他们在这方面要求比较古板,甚至显得十分令人难以理解的迂腐,但他们做事情的严谨态度还是值得学习。

3、将COBOL程序服务化

通过Micro Focus Net Express为COBOL 程序配置web service接口定义,并生成相应的Java 接口代码,并将转换后的COBOL源代码部署至Micro Focus Server Express ,Java /.NET工程通过SOAP 调用web service,由server express传递数据给相应 COBOL服务。通过服务化将原有封闭的COBOL程序转变成web服务,使其不仅可以使得现有程序可以调用,也使得第三方程序在需要的情况下可以有接入的可能,转封闭为开放。

从以上三个对策而言,从根本上解决了原有的三个主要问题,使旧系统焕发了新的活力,不再收到昂贵硬件平台的限制,采用现有的廉价平台就能满足之前系统的全部功能,同时还提供了种种新特性满足各方面新的需要,兼顾了降低了企业的运维成本,保护了既有投入,在方案当中也完全符合现有用户使用习惯,避免了新老系统切换过程中用户出现不适应的情况,更是将人员培训成本降到最低,会使用浏览器就能使用新系统。当然以上方案的实施并非我描述的这般简单,当中有着各种各样的挑战,在克服这些挑战的同时,这样的移植升级项也花费了近200个人月的成本。最终呈现的系统架构如:

对于这样陈旧的系统的移植升级改造,有着如下流程:

1、首先做好技术调研,拿典型的程序做好技术的试点验证(所谓pilot)。

异构系统,在选则移植方案的时候,首先要做的就是要尝试手动做一次程序移植,把关键技术点解决掉,使得方案可行性得到足够的验证。在这个过程当中搞清楚两个系统间的异同,从环境到代码,采用到的各种技术都要形成完整的文档。如果选定的典型程序移植后,功能和数据验证通过,才能进行下一步的扩大规模的尝试移植升级。比如说,我这个案例当中提到的这个项目,在pilot阶段,就完成了Java web框架,把CICS系统当中的页面控制,数据传输的95%的功能都完成了;更是验证了IBM COBOL程序转换为MF-COBOL的规范,制定了相应的转换规则,也通过MicroFocus Net xpress 实现了COBOL代码的服务化。后面会讲到的如何制造和使用工具一节,起到关键的作用,有了转换规则才能编写工具去完成代码转换。

所以pilot阶段是做好系统移植和升级的最重要阶段,要完成整个项目的绝大部分技术难点的调研。只有做好了这个阶段,才能往下做较大规模的展开改造,因为即使这个阶段失败了,发现方案有缺陷,连最基本的程序都完不成转换的话,这个方案基本上就可以否决,这样一来通过试错,来验证方案的可行性,为未来的整体工作打好基础,与此同时也降低了项目风险。

2、通过pilot阶段后,需要做进一步的较大规模验证。

在pilot阶段成功后,只是说明方案可行,但离实际应用还有一段距离。切不可掉以轻心,认为基本方案验证了就没有了问题。所以在全面铺开前再做中等规模的方案验证,将完整流程再验证一番,进一步排查出pilot阶段未发现的各种问题。这个阶段尤其重要,我们在这个阶段进一步完善了工具,完善了Java Web框架,把新系统中运行的各种部署问题都一一化解,为最终的大规模铺开奠定坚实的基础。把系统从转换到开发,测试以及部署的完整链条全部打通。也在此阶段培训新人加入项目,因为pilot阶段,项目人很少,在此阶段后,在中等规模和全面铺开的阶段需要完成对人员的培训,各种规范的实施和监督,确保完成移植的代码满足项目制定的需求。

3、大规模铺开前,人员培训和规范至关重要

这个属于管理问题,建立文档,项目开发流程代码规范等,在后面的文章里面会详细讲到。培训则是同意全体成员的认识,确保工作成果不走样,建立基本的质量保证。

言而总之,不管是对既存系统的升级改造,或是新创建业务系统,对于架构而言,选择什么样的技术方案,都需要预先做好技术调研,了解好方方面面的问题。比如选择微服务非常火,很多人就想是不是全部整成微服务?在做这样的决定之前,一定要了解你既有系统的情况,根据你的业务场景来判断,是不是适合做成微服务?做成微服务后如何部署管理等等后续措施是不是能够跟上?等等问题都需要在调研阶段给出答案。大胆尝试,小心验证,是不会错的。

作者介绍

王巍,涟拓网络架构师,前后就职于Achievo、IBM、HP,关注前沿技术,分布式系统架构,组件化系统开发,机器学习和大数据,现在创业公司负责系统架构,乐于与大家一起聊聊架构

转载于:https://blog.51cto.com/pavehawk/1787895

洞若观火,聊聊旧系统升级改造那些事儿相关推荐

  1. 未雨绸缪,聊聊旧系统升级改造那些事儿

    本文是老系统升级改造的第三篇文章,主要谈老系统改造过程中如何制定规范以及防范技术风险.点击链接,阅读前两篇文章: 洞若观火,聊聊旧系统升级改造那些事儿 量力而行,聊聊旧系统升级改造那些事儿 老话说的好 ...

  2. 社区智慧路灯:基于社区智慧灯杆的老旧小区改造(智慧社区)项目系统解决方案分析

    随着时间的推移,老旧小区公共设施陈旧.监控和路灯等设备维护不当.运营管理效率低等问题日渐显现出来,严重影响到了居民的生活.对老旧小区进行改造升级,不仅是对城市更新的赋能,更能提升居民生活幸福感. 针对 ...

  3. lan8720a自协商启动_惠及18个小区17851户!今年海曙老旧小区改造启动,重点内容包括…...

    4月21日上午,海曙区石碶街道万国新村小区内,工人们正忙着沿小区外墙搭建脚手架,这里即将进行的是建筑外立面改造和屋面防水改造.这也意味着该小区的老旧小区改造正式启动. 万国新村社区正在搭建脚手架 记者 ...

  4. 使用CyberController来将旧手机改造成电脑外挂

    这个是我在哔哩哔哩中发现的感觉比较实用在这里发表一下使用过程中的问题和见解 原作者视频旧手机改电脑外挂-效率或将"提升300%?"_哔哩哔哩_bilibili 参考视频旧手机改电脑 ...

  5. 基于智慧路灯杆的老旧小区改造方案

    方案背景:城镇老旧社区,一般是指建成时间较长.市政配套设施老化问题突出.公共服务缺项较多的住宅社区和小区.老旧社区改造作为新型城镇化的重要内容,不仅事关民生福祉,也是推动城市治理体系建设的重要驱动力. ...

  6. 平塘天眼和大数据有什么关系_聊聊平塘“天眼”的那些事儿,“FAST”到底有多牛?...

    原标题:聊聊平塘"天眼"的那些事儿,"FAST"到底有多牛? 昨日,我省首期"黔灵科普大讲堂"开讲,国家天文台研究员.FAST(500米口径 ...

  7. 系统试运行报告是谁写的_煤矿安全监控系统升级改造验收方案

    Xx煤矿原有安全监控系统型号为KJxxN,根据<煤矿安全监控系统升级改造技术方案>要求,于2018年x月x日开始进行升级改造工作,经过不断完善相应功能,于2019年x月xx日完成了安全监控 ...

  8. 打开新世界?从产品经理角度聊聊“高智商”这件事儿

    和我熟悉的朋友可能知道我的身心状态一直不太好,虽然我有常年运动锻炼的习惯,但总体的感受是近几年身体和心理的小毛病都不少,尤其是在工作压力越来越大的当下. 身体的问题可以通过药物来解决,但心理的问题往往 ...

  9. 学校旧机房改造升级云教室有哪些优势

    随着社会的发展和科技的进步以及教育信息化的推进,以前我们读书时只靠老师在讲台上讲和在黑板上写而学生在课桌上听和记笔记的教学方式已满足不了当前现代化教学的要求.更多是采用电脑教学和多媒体教学和传统的教学 ...

最新文章

  1. 无向图的最小生成树(克鲁斯卡尔算法 Kruskal)
  2. 迪士尼又出黑科技,可将自然语言脚本转化为VR视频
  3. 【Java】Calendar获取年、月、日、时间
  4. 2018 计蒜之道 初赛 第四场
  5. 闪电网络介绍以及试用 (上)
  6. Vue学习(组件的定义及调用、路由)-学习笔记
  7. 火狐查cookie_Firefox 65默认会阻止跟踪Cookie
  8. 读人人都是产品经理__1
  9. kernel部分数据结构列表三(inode)
  10. Android仿探探卡片拖拽,[转]仿探探拖拽卡片效果Vue3实现
  11. 教师计算机专业知识考试试题及答案,信息技术学科教师基本功测试题及答案
  12. CV学习笔记-BP神经网络训练实例(含详细计算过程与公式推导)
  13. bootstrap带图标的按钮与图标做连接
  14. 【追一科技】NLG技术:文本生成技术多样化应用的探索之路
  15. python+opencv人脸识别(用耶鲁大学的Yale人脸库训练cnn)3
  16. 一个dsp最小系统至少要有_DSP最小系统原理图设计
  17. 数据的展现技巧——数据透视表(一)
  18. IR2101自举升压的原理
  19. MOF-74(Zn), CAS:1033723-90-8
  20. 谷歌招聘 变态15题你会做几道?

热门文章

  1. 生产订单可用性检查锁定预留库存的配置
  2. Django基本原理
  3. 手把手教你新建MSP432工程
  4. 和ESP8266 Arduino谈场恋爱
  5. 浅谈游戏中台-我眼中的supercell为何成功?
  6. 万字超强图文讲解AQS以及ReentrantLock应用(建议收藏)
  7. 阿里云PolarDB-X荣获“2022 OSCAR 尖峰开源项目及开源社区”奖
  8. 多少分才能考上重庆计算机学校,中考考多少分才能在重庆上一所普通高中?
  9. NFC 行业应用,一卡通,支付
  10. 万字长文分享,新手小白如何自学Java(方法+步骤)