量力而行,聊聊旧系统升级改造那些事儿

本文是聊聊旧系统升级改造那些事儿的第二篇内容,文章分别介绍了改造的三个策划,包括激进策略、稳健策略和保守策略。点此阅读第一篇文章web

对于公司而言,不管是对于既存系统进行改造,仍是新开的项目,必定会有相应的预算和人员配置,架构师须要是立足于公司给出的预算,根据团队的技术水平情况来作出相应的架构设计的,心中的须要创建全流程的成本意识,并与相关人员进行沟通。数据库

咱们看看具体能够采起的策略:缓存

wKioL1dzdd3yVVV2AADoBHxvDOk328.png

量力而为—稳健策略安全

在这样的状况下,你做为架构师能够采用更为激进些的架构策略,对于传统企业,能够采用好比买最好的服务器,雇佣最富有经验的工程师,乃至寻求最专业的公司来帮助升级改造,由他们帮你作更详尽的技术调研,配置强大的团队一同来完成改造,然而土豪毕竟是少数,大多数同行还得苦苦求索,寻找投入与产出的平衡点。服务器

与之相对应的是互联网企业,他们面临的情形大不相同;因为用户增加迅速,系统迭代很是快,业务需求变化巨大,周期也更加短,是难以采用上述这样复杂,周期长的策略来对既有系统进行改造的,更多的时候是在老系统略显疲态的时候就须要开始对下一代系统的技术调研和开发,以小步快跑的姿态逐渐替换掉老系统,达到升级换代的做用,如我公司的商城系统短短两年已经更替三版了。因此行业的不一样也决定了架构师采起具体架构策略的方向,或是成本优先,或是性能优先,亦或是可靠性安全性优先。微信

在肯定好改造的目标后,根据现实的资源配置状况再来肯定架构设计的策略,根据系统面临的主要问题为导向,采用与成本相适应的技术方案,并加以验证。例如上一节的项目中主要问题是运行平台陈旧,运维昂贵,那么迁移到相对价廉物美的Windows平台或者Linux平台就成了优先考虑的方向,进而去寻找目标平台上可以实现的技术方案,即转换IBM COBOL为MF-COBOL,并利用MF的企业套件完成COBOL程序服务化的这一方案,且随着相关技术的特性,展开配套工程(Java web 应用)的开发,最终将整个解决方案完善。网络

这一过程当中采用了商业套件开发,采购了IBM websphere,Hitachi JP1以及MicroFocus企业套件这一些列商业软件,也采起了对外外包开发的策略,总体付出的成本而言也至关客观。但综合来看,所有这些综合改造升级的投入比起原有环境下采购ibm大型机以及运维费用来说却不及其十分之一。架构

有钱才能够任性—激进策略运维

咱们也看到虽然在投入有限的状况下,这个项目仍然采购了诸多成熟的商业软件,而不是使用开源软件来替代,这也体现了对成本和技术风险的平衡,使用商业软件由于有良好的服务,从而避免由于开源软件带来的潜在问题,也算是一种下降技术风险措施。机器学习

与之相对的是,上述项目并不算是一种激进的升级改造策略,仍是比较稳健的,毕竟有钱任性的项目也不是每家公司能够随意开展的。激进的策略是将平台语言所有替换,所有移植到新的平台新的语言,采用更多的新技术,新方案。

例如,IBM公司的GIAS系统的升级改造就是如此,他是一我的寿险核心系统,原先运行于小型机as400环境的,由COBOL,RPG等程序开发的,面临着上述一样的问题,对于IBM这样的企业而言产品的升级换代有着重要的意义,所以投入就很是可观,因此gias系统就直接从COBOL,RPG和jcl等源代码程序经过工具转换为Java,生成各类bean、dao、service等等组件,而后再人工消除一些工具不能作到的细节修改,最终完成平台的移植。

这个工具的开发就很是重要,也是很是复杂的,从技术难度上,从成本上来说普通公司是难以付出这样的成本的,况且IBM经过这样的项目移植升级后还能够对其客户的系统提供相应的升级服务,把投入的钱再赚回来,传统企业在IT上的投入不多又能提供对外服务把自身的IT投入再赚回来的可能的。

在有限的预算下,技术团队水平尚可的时候,经过自身的努力,对既存系统进行改造是咱们大多数架构师面临的状况。在完成对系统环境,业务流程乃至系统升级目标作出详尽的分析以后,架构师内心就应该有相应的蓝图了,根据预算给出相适应的架构策略,亦或激进,亦或稳健,亦或保守。

看米下锅–保守策略

激进和稳健的策略咱们都讲过,而保守的策略其实大多数是在预算寥寥,人员有限和团队技术水平有限的状况下不得不采起的策略。这样的状况下,更多的是通过前面的系统调研,对主要问题了解清楚以后,选取最重要的一个问题点进行局部升级改造,同时注意其改造过程当中是否存在能够经过系统改造,好比加缓存,使用最新版本性能更好的服务器,增长系统带宽,使用CDN,优化数据库服务器等外部手段来提高系统性能,以解决瓶颈问题。若是是新的相对独立的功能开发,在不得不依赖原有系统的基础上,视状况而定作出从新开发亦或是改造的决定。

例如咱们在原有商城的改造的过程当中所作的,原有系统是购买的某公司的一套商城系统,咱们针对咱们的业务需求改造了其原有业务逻辑,这一过程当中发现其源代码各类混乱,业务逻辑与页面逻辑相互交织,性能也不佳。与此同时,咱们团队刚组建,人员技术水平良莠不齐,老板要求上线的时间紧迫,使得权衡利弊之下,于保守的策略来说,就是只作功能改修,而不是彻底推翻重来,以下降项目风险。何况,咱们IT团队分布于重庆上海两地,沟通协做也带来了诸多困难。

这样的状况下,咱们难以一开始就采用激进亦或是稳健的策略,只能采起保守的作法。但,在咱们开发微信版商城的时候,就由于原有系统过于繁杂,难以在其基础上一下支持不一样平台,就只是使用了他的数据表,全新开发了微信商城的相关功能,经过前面一阶段的功能改修,锻炼了团队,使其明确了商城系统的各个模块,相关业务流程,因而在微信商城的功能开发上,进度和质量都有着不错的提高,其性能效果各方面都优于原有系统。

在改造的技术上,咱们针对该商城业务特色,将系统进行集群化改造。经过使用分布式缓存Memcache来下降数据库压力和提高页面反应速度。使用Tomcat集群,并修改原有系统的用户Session管理,作到用户状态与他访问的具体服务器无关,在访问量大的状况下,集群的负载能力获得大幅提高。在外部支撑上,使用阿里云CDN来缓存页面资源下降IDC带宽的压力,提升全国各地用户访问速度。CDN的使用使得咱们系统的负载能力获得有效提高,由于创业公司支付不起更为充裕的带宽,在现有条件下,结合自身须要,使用外部云服务算一个不错的选择。好比,开展一些活动的时候,将活动程序独立开发并部署到云服务上,来解决自身IDC资源有限,不足以应对短期大量服务请求的问题。

纵然保守的策略是最为无奈的选择,但如同有大牛提到的,架构最终是妥协的产物。在系统构建,维护升级过程当中,架构师须要跟需求妥协,跟时间跟团队技术水平妥协,甚至跟用户使用习惯妥协,保守的策略更可能是对成本的妥协,花最少的钱办更多的事架构师此刻要作的就是锱铢必较,力求精打细算,以最大努力挖掘系统的潜力,硬件的潜力,以达到更好的用户体验。

做者介绍

王巍,涟拓网络架构师,先后就任于Achievo、IBM、HP,关注前沿技术,分布式系统架构,组件化系统开发,机器学习和大数据,如今创业公司负责系统架构,乐于与你们一块儿聊聊架构

相关文章
相关标签/搜索