背景
本次分享的这个项目是财务系统,众所周知,财务项目的特点是系统复杂、业务繁琐,开发一个完整的财务平台,开发周期长,参与人员多,且每月月初需要产出财务报表以供财务人员分析审核。
所以,财务报表产出越早,问题暴露的越早,留给我们处理问题的时间也就越充裕。
本次系统优化,仅针对结账流程,系统内部的代码优化,不在本次讨论范围。
数据流转
下面来分析下数据流转图,以方便我们分析瓶颈根源。
手工结账
从数据流转图可以看出来,整个流程还是比较复杂的,如果利用手工结账的话则更为麻烦,如:
- 业务数据导入(需要登录 airflow 管理台,输入参数,执行对应的 DAG 任务)
- 物料成本配置(登录数据库服务器执行 sql)
- 财务计算(登录计算引擎服务器,执行 curl 命令)
- 财务凭证汇总(postman 发送请求,执行 jupyter 接口)
- 财务数据备份(需要登录 airflow 管理台,输入参数,执行对应的 DAG 任务)
- 财务报表轧差(需要登录 airflow 管理台,输入参数,执行对应的 DAG 任务)
- 财务报表导出(登录 hue,执行 hive sql 查询导出)
- 财务数据验证(财务人员线下验证数据)
- 对接SAP(登录 sap网关服务,执行 curl 命令)
而且,步骤之间还有依赖关系,只能串行,且步骤之间还有参数依赖等等。
之前负责结账的同事是怎么做的呢?
纯手工一条条执行,而且还需要把本月每个执行的步骤参数记录下来,下个月的时候要用到。
弊端
繁琐
需要登录各个平台环境,复制粘贴参数。
耗时
点击执行按钮或输入 curl 命令后,需要等待它执行完成,除非你一直盯着它,否则它不会在执行完成后自动通知你。
错误率高
因为需要手动记录各个步骤的参数,以便在下个月结账时使用,很容易出错。
监控差
没有一个完善的步骤监听机制,成功或失败时能通知到我们。
总结
从上述描述可以看出来,纯手工执行结账流程,时间都白白的浪费了,若能开发出一套程序自动化执行的机制,则能大大的缩短执行时间。