P2P网贷系统重构过程中的数据迁移
在软件的生命周期中,若当前运行的系统在架构、性能、配置等方面,或无法满足功能扩展的需要,或无法符合业务发展的需求,或无法达到降低成本的要求,公司一般会选择系统重构。
系统重构是在不改变软件功能的前提下,对软件内部结构进行调整。直白的说,系统重构就是在原有系统的基础上,进行二次开发,既要承接现有的业务,又要兼容兼容老业务,并将旧系统的业务数据迁移至新系统上。
受业务影响,系统重构更关注的是功能模块的实现逻辑,和模块之间的业务关系。
系统重构首要处理的任务是系统迁移。系统迁移包括数据资源整合、新旧系统迁移、新系统运行监控。
系统迁移过程中,安全、平稳过渡是第一位。我们要保证新系统正常运行、保证原有业务在新系统中的独立性。
一方面要保证新系统的稳定性,一旦新系统无法稳定运作,快速切换回旧系统。比如导入借款人的数据格式错误,导致访问标的详情抛系统异常,可以切回旧系统操作。
另一方面要保证新系统的兼容性,旧系统产生的数据,可以在新系统操作查询。比如查看出借人的历史交易流水、提现记录、充值记录、投资记录、红包明细等。
系统迁移首要解决的问题是数据迁移。数据迁移一般是在存储层面、数据库层面和系统层面对基础数据、纯历史数据、变化较大的历史数据、流程性数据等进行迁移。
数据迁移面临着技术、成本、安全三方面的问题:技术上要解决数据异构性、在线迁移的问题;成本上要解决重复工作、资源占用的问题;安全上要解决迁移失败、系统容错的问题。
以某P2P网贷系统重构为例:我们需要将原来的第三方支付托管系统,切换为银行存管系统,涉及新功能开发、接口改造、数据迁移等方面。比如开通红包账户、开通服务费账户、批量存管开户、标的登记、自动投标授权、自动债转授权、单点登录、用户数据迁移、业务数据迁移等。
但目前该P2P网贷系统的数据量,已经达到千万级别的体量。如何正确、快速地实现新旧系统间的数据迁移,是我们亟待解决的问题。若数据迁移处理不当,可能导致新系统启动异常,运行缓慢,数据冗余或数据丢失。
数据迁移分为三个阶段:数据迁移前的准备、数据迁移的实施和数据迁移后的校验。我将从数据迁移的三个阶段说一下,在新旧P2P网贷系统重构过程中,如何做数据迁移。
数据迁移的准备
数据迁移前,我们会做充分而周到的准备工作。比如成立数据迁移小组,设计数据迁移方案,拟定数据迁移计划,采取组内讨论的头脑风暴,制定应急措施和备份策略。
产品人员侧重了解原系统的业务范围、业务流程、数据流程等。从业务逻辑和处理流程的角度,对新旧系统的原有业务和现有业务进行差异分析,并输出《P2P(存管)数据迁移业务梳理》和《P2P(存管)数据迁移实施方案》。
开发人员侧重了解原系统的网络结构、数据结构、数据库表结构、接口逻辑等。对新旧系统的数据结构和代码数据进行系统分析,并输出《P2P(存管)数据迁移详细说明》和《P2P(存管)系统切换方案》。
测试人员侧重了解原系统的数据迁移范围、统计迁移数据类型等。从功能模块和信息流转的角度,对旧系统的历史数据进行质量分析,并编写《P2P(存管)数据迁移测试计划》和《P2P(存管)数据迁移测试案例》。
数据迁移的实施
数据迁移的实施是数据迁移中最重要的一个环节,关系到系统切换的成功与否。一般会从数据迁移小组中,安排一名负责人统筹原系统分析、系统设计、数据整理、数据转换、系统切换等过程的实施。
首先,我们会准备数据迁移环境,对环境做充分的调研,了解数据迁移涉及的业务场景和影响范围。
其次,将原系统数据整理为系统转换程序能够识别的数据,对照表的要求进行转换,并写入到新系统。
最后,在当月末凌晨资金对账跑批完成后,对系统进行切换。在保证迁移过程不停机、系统持续服务的情况下,准备回退和应急方案。确保网络临时中断或系统临时停机时,可以完成数据备份、保存日志和系统回退等操作。
数据迁移后的校验
数据迁移到银行存管系统后,我们会安排负责AB角色的4名测试人员,对迁移后的数据进行校验。
一方面与旧系统数据库中的数据进行比较,验证新数据库中数据的正确性。另一方面是使用质量检查工具或编写Python脚本,检查相关功能模块数据的准确性。
在SIT阶段,我们侧重对数据迁移进行验证性测试。在UAT阶段,我们侧重对数据迁移进行监测性测试。
因为P2P网贷系统涉及到存管开户、充值、提现、授权签约、投标、自动投标、债权转让、放款、还款等业务,所以我们会加大业务流、信息流、资金流的测试力度。我们会进行三轮以上的业务逻辑和数据模拟测试,以确保迁移过来的数据的有效性、一致性、可用性。
在灰度发布阶段,我们会把系统交付给运营、客服、风控和市场部门的相关人员。在宣导完数据迁移相关操作的注意事项后,会让他们采取盲目和暴力的操作方式进行验收。记录每一步的验收记录,以便更好的发现问题时,及时反馈,及时解决。
经过三个月的系统重构,数据迁移顺利完成,系统逐渐平稳运行,获得了公司内部和平台用户的一致好评。我们也组织了迁移小组进行项目复盘,从中总结经验。
本文首发于微信公众号 产品经理朱学敏(ID:pm_zhuxuemin),如需转载,请联系原作者。