2018年度个人总结

时光如梭,2018年转瞬即逝,2019年如约而至。

2018年是云南人保后百亿时代的第一年,是我在人保完整工作的第一年。这一年是重要的,公司党委为后百亿时代做布局谋划,进行了众多人事调整,应总部对百亿规模公司的要求,单独设立大数据中心,进一步加强大数据应用工作。我也因此从信息技术部调入了大数据中心。

数据驱动,逐渐成为众多行业的一项重要的发展战略,毋庸置疑,数据是蕴含着重大价值的。从传统商业分析(BI),到数据挖掘(DM),再到近几年日趋火爆的人工智能(AI),都是以日积月累的海量数据为基础,发掘商业价值,助推模式创新。数据成为各行各业一项重要的资源,甚至成为企业的护城河,成为企业进一步发展的重要基石。

2018年,是云南人保大数据中心单设的第一年,也是比较艰难的一年。

2018年3月底我调入单设的大数据中心,接手了信息技术部运行已久的多个BI系统,之后就开始了和这些系统的艰苦、持久的斗争。

大数据中心刚成立,各方面资源比较有限,在公司规模日渐扩大的趋势下,开发运行多年的BI系统显得日渐老迈,主要有这么几个问题:

  1. 基于传统关系型数据库做数据处理,处理效率不高,在保费规模不断增长的客观因素下,能预见的天花板就在不远处。
  2. 多年的开发积累,分析主题日渐增多,数据处理的后台任务纷繁复杂。
  3. 没有版本控制机制,任务执行脚本散落各处。
  4. 没有比较规范的开发模式,脚本编写大多比较随意,加大阅读理解难度。
  5. 任务调度机制比较简陋,在很多情况下难以持续自动化,增加人工运维成本。

刚接手的这段时间,大部分时间都花费在对这些系统的日常运维中,与此同时其他部门也在提出新的开发需求,比较紧急的是车险部提出需求要开发与总部车险管理者门户口径相同的签单保费分析和车险续保率分析报表。无法从繁杂的日常运维工作中脱身,新需求的开发也就一再拖延,最后只能靠加班来进行新需求的开发工作。在领导的带领下,经过5月、6月加班加点的研究总部提数程序、核对基础清单,终于完成这个新需求的开发。

私下想着新需求开发完成,也许能轻松一段时间了,没想到,银保监会为限制车险手续费率进一步消除不正当竞争,发布了“报行合一”新规后,6月到7月,业务量增大,使用已久的本地回传库,回传故障率提升,经常出现回传严重滞后甚至停止的问题,而以前后台提数任务没有相应的检测机制,提数遗漏、任务重复、报表更新不及时、统计结果有误的问题持续出现。工作艰苦,再加上一些私事的烦扰,这几个月的工作不是一句“心累”能说完的,有时候晚上睡觉都在思考着改进的方法。

2017年底帮张世华副总做了营销管理系统数据回写Informix库的工作,机缘巧合的接触到ETL工具Kettle,当时只做了简单的Oracle→Informix的表映射更新,没有深入了解,但是对Kettle这个开源项目的整体设计是觉得非常的棒。Kettle使用Java编写,采用了插件式的开发框架,这让Kettle的扩展性非常强,现在版本升级到8.0,已经有非常丰富的组件可以使用,插件式的开发框架也让自己可以开发出非常个性化的组件来完成数据处理。
在客观条件暂时无法得到改善的情况下,只能硬着头皮往前走,一边运维老系统,一边进一步学习研究新技术。去年学习研究最多的就是Kettle,对于老系统的几个问题,Kettle都能在不同程度上有所改善:

  1. Kettle的任务中,多个转换过程,比如多个SQL查询是可以并行的,相比Shell脚本的串行,整个处理效率会提升不少。
  2. 部署资料库服务器PentahoServer后,Kettle开发的ETL任务都存储在资料库服务器中,方便管理。
  3. ETL任务都是由一个个组件组成的,处理任务有一定的规范,基本思路都是输入→转换→输出,在对组件理解的基础上,对开发的ETL任务理解也就容易很多。
  4. Kettle开发的自由度很高,转换(Transform)可以作为一些模块来开发,类似软件开发中的类、函数,就可以很方便复用,比如任务的触发判断、依赖判断等,基于这个特性,我设计了一个任务调度机制,由主任务ETL_MAIN来判断哪些任务达到了执行条件,从而开启这些任务。

8月份,信息技术部计划进行数据切割,要将历史数据迁移到历史库中,而在生产库中做相应的删除。这无疑会对南中心数据回传本地造成影响,回传一旦有问题,从本地库提数的程序执行也就无法正常完成。领导们研究讨论决定,尽量保证手机管理者门户首页的保费收入和签单保费指标及时更新。保费收入数据从HDR提取,不会受到回传问题影响,而当时签单保费还是基于从RSS提取的保单清单来汇总,我开始尝试用Kettle重新开发签单保费指标的任务。经过前几个月的学习研究,对Kettle的理解更深入,也因为运维老系统过程中阅读过提数程序,对指标汇总的过程比较熟悉,仅用了周末两天的时间就完成了签单保费指标的ETL改造,也因为Kettle执行效率高,历史数据也很快跑完。这让我对Kettle更加充满信心,也对工作改进开始有了一些希望。

9月份,我决定对为车商部开发的车商星级评定做ETL改造,一是因为原先做的星级评定程序使用Java开发,执行效率慢,解决问题和新需求开发也比较复杂,二是我希望试试Kettle能不能进行复杂数据处理。车商星级评定现在已经是比较复杂的计算过程,各个地市公司可以制定自己的评级政策,也可以制定自己的星级类型,后来又应昆明公司需求,实现了送修比、赔付率对星级的二次调整,用Java来开发都需要做很复杂的判断,如果能用Kettle实现车商星级评定,那毫无疑问Kettle就能胜任大部分的数据处理工作了。

没有意外,在10月份,我完成了车商星级评定的ETL改造,经过一段时间的测试,任务运行非常稳定,而且效率非常高,以前Java开发的星级评定,需要运行20~30分钟,而Kettle开发的星级评定,仅用不到10分钟就能完成整个评级过程。

2018年是忙碌的一年,也是收获的一年,忙碌的工作,也让我学习到了很多新的技术,提升了自己。工作之外,也在去年底完成了自己的人生大事,结婚,进入了人生的下一个阶段。作为一个程序员,深知一个道理,人生就像程序,永远会遇到无法预料的问题,但是只要用心努力,问题总会迎刃而解。