作者简介
工业聚,携程高级前端开发专家,react-lite, react-imvc, farrow 等开源项目作者。
乐文,携程高级前端开发工程师,专注于前端工程化和性能优化。
克旋,携程资深前端开发工程师,关注效率和质量,追求用科学的方式解决问题。
林雄,携程资深前端开发工程师,关注前端新技术应用领域。
团队热招岗位:前端开发资深工程师/专家
本文介绍了前端自动化任务中的难题,讲解了Taskhub如何通过拆分核心和辅助模块来应对这些挑战,并结合两个实际场景展示了Taskhub在提升自动化任务排障效率等方面的表现。最后,讨论了Taskhub使用的RPC BFF框架如何提升整体开发效率,并分享了使用RPC BFF的经验。
一、前言
二、平台背景
三、平台目标
四、TaskHub介绍
4.1 TaskHub平台
4.2 TaskHub引擎
五、使用案例
5.1 度假业务自动化数据录入
5.2 复杂业务场景的自动化改造
六、RPC BFF最佳实践
6.1 收敛类型
6.2 原子化过程
七、结语
一、前言
本文讨论的自动化,是指通过代码的方式,将原本人工完成的相关操作由机器代为处理,如此达到释放人力和提升效率等目标。
然而实现自动化的过程不总是那么顺利,自动化后的效果未必那么理想。可能有的团队会发现自动化脚本尽管释放了业务人员,但成本却转移到开发人员身上。他们需要投入大量时间去更新失效的自动化逻辑,出现问题后的排障时间和难度也随之增加。如果自动化任务的成功率低、问题修复速度慢,那么大量的工作将不得不降级为人工处理,自动化的业务价值无从体现。
我们发现,通过完善自动化任务的相关基建(包括任务调度引擎和任务管理平台等),上述问题可以得到显著的控制和缓解。本文将分享携程旅游研发在这方面的尝试和经验,希望能为其他开发者和团队提供参考。
二、平台背景
旅游内部不少业务都有自动化需求,部分团队已经上线了自己的自动化项目,这些项目由不同的团队维护,但均有相似的痛点:
无法及时关闭自动化任务:由于缺乏有效的控制手段,自动化任务一旦重启就难以中断。
排障效率低下:目前大部分自动化任务是前端自动化任务,前端由于站点更新、网络波动、代理异常等常见原因导致任务无法完成,出错的原因很杂,不能复现场景,难以查找根因。
日志查找困难:现有的日志系统以时间为锚点记录日志,没有划分任务的边界。一次自动化任务产生的日志通常是一个普通请求的2到5倍,需要从大量连续的任务执行日志中找到需要的信息,并且随着任务增加,存储的日志的文件数量也随之增长,查找变得更加困难。
复现困难:任务的入参通常和日志柔和在一起,导致复现问题时难以分析。
日志没有权限限制:任何人都可以查看日志,可能导致敏感信息泄露。
三、平台目标
为了解决自动化的共性问题,减少重复开发,我们希望通过创建一个统一的平台来提升自动化效率和可靠性,具体目标如下:
提高排错效率:通过详细的日志记录和辅助工具,低成本快速还原任务场景,便于快速定位和复现。
被动感知任务异常:建立实时监控和通知机制,实时检测并推送任务异常信息,减少人为监控负担,完全释放人力。
聚焦业务本身:让开发者专注于核心业务逻辑,不必担心自动化过程中可能出现的性能问题,通过平台提供的工具确保自动化任务高效、稳定地运行。
基于以上目标,我们设计开发出前端自动化任务平台TaskHub,一个能够帮助自动化提效的解决方案。
四、TaskHub介绍
在TaskHub中,我们把自动化脚本的执行,称为任务。
任务是无状态的,任务与任务之间没有直接关系。任务的设计目标是实现某一特定的自动化功能。
在自动化过程中,核心是确保任务的正确执行。任务执行过程中产生的副作用不应阻碍任务的执行。因此,我们将TaskHub主要分为两个部分:平台和引擎。平台用于记录和管理任务执行过程中的产物,而引擎专门负责任务的执行。
平台:可以方便查看、配置、中断任务。
引擎:负责调度任务执行,是任务执行的核心。
整体设