《数据开发平台架构实践 - 数据开发的生产环境隔离.pdf》由会员分享,可在线阅读,更多相关《数据开发平台架构实践 - 数据开发的生产环境隔离.pdf(34页珍藏版)》请在三个皮匠报告上搜索。
1、数据开发的生产环境隔离演讲人:崔博雯小米数据工场研发负责人2023 背景思考&选型落地路径业务实践背景小米数据平台发展历程多平台统一数据平台开发在线化建设201920212022各平台覆盖度各异账号与权限体系不同缺乏统一的业务视角统一的元数据/权限/调度支持多种引擎/多数据源覆盖离线/实时开发场景开发生产环境隔离标准化开发流程WebIDE建设小米数据平台发展历程201920212022统一数据平台:数据工场Alpha数据开发两大挑战:安全 与 质量个人信息保护法2022数据安全的要求下,数据隔离的需求愈发强烈国内GDPR数据安全法海外影响区域隔离角色隔离数据脱敏禁止跨地区访问数据国内开发&海外
2、运维开发人员只能使用脱敏后的数据政策规范数据开发两大挑战:安全 与 质量数据反哺线上业务,数据质量异常重要起夜率居高不下集团统一数仓支撑研产供/销服/IoT/手机等业务线复杂度高,交付压力大缺少生产与开发环境的隔离测试流程缺失代码测试不充分CodeReview环节缺失测试流程不规范测试流程污染线上数据测试代码被误发布至线上缺乏生产环境隔离的产品方案隔离需求各异满足个性化需求满足强质量需求同一套方案,解决多场景需求没有统一方案时,业务方有各自的局部方案目标思考&选型生产开发环境的3大目标数据隔离规范流程提升效率 聚焦离线数据开发场景 用户无感的隔离方案 设计开发生产流程,提供产品化支撑 覆盖全集
3、团数据业务场景 完善在线化开发调试流程 提供交互式开发体验,提升开发效率数据隔离方案对比完备的测试环境通过采样、脱敏、仿真等方式生成数据常用的两种隔离方案物理隔离重点关注“写”数据隔离允许读线上数据逻辑隔离数据隔离方案 物理隔离数据源种类多,多数据源多集群难以维护数据源替换难度高,上线负担大代码可复用性不足若仅需部分表局部测试,上游表梳理、测试数据同步等工作复杂权限管控、测试数据生命周期管控流程繁琐业务维护意愿不强,难以落地物理隔离方案屏蔽了所有数据的访问对于低资产、低安全等级数据来说,没有必要业务灵活性物理隔离方案灵活性不足代码可复用性测试数据可维护性业界的逻辑隔离方案通过对上下文的替换即可
4、完成一套代码开发生产环境数据隔离,不需要任何产品化支撑通过指定库表来进行隔离以最常见的SQL脚本为例:通常包含多个读表、一个写表库表可通过上下文决定数据逻辑隔离方案-挑战多存储引擎下的联邦查询SparkFlinkPresto统一元数据服务(MetaCat)HiveIcebergDoris背景 多套存储引擎 catalog.db.table 联邦查询能力挑战 多个业务库、存储引擎 SQL使用完整三级结构 无法通过上下文切换数据逻辑隔离方案例如:将Hive数据写入Iceberg,需要完整三级结构我们在SQL中引入命名环境变量$phone会在生产环境下解析为phone,开发环境下解析为phone_d
5、ev环境变量方案数据隔离开发环境产品化支撑由于采用了数据逻辑隔离方案,所有操作都在生产集群上进行。用户如何感知到哪些环节属于开发环境,哪些环节属于生产环境?开发上线流程的设计创建测试表数据开发测试验证CodeReview上线审批发布上线开发者审核人自动化生产开发环境隔离下的开发效率挑战协同编辑、上下游影响、上下线影响逻辑审核、正确性验证测试表构建、测试数据生成开发效率协作效率review效率生产开发环境隔离下的开发效率动作下游影响分析、工作流草稿锁定版本对比、智能检查、冒烟测试、上线阻断测试表生成、血缘提取、数据抽样&脱敏开发效率协作效率Review效率落地路径功能落地路径-MVP为了保证产品
6、开发过程中每个阶段都能够及时获得用户反馈并取得阶段性成果,我们采用了MVP(最小化可行产品)的研发方式。具体分为以下五期来进行:1.版本比对:将多种作业类型以及工作流的版本比对统一抽象为代码比对、表单比对2.最小化引入开发流程:通过工作流最新版本实现草稿版本,启用版本实现上线版本3.数据隔离:实现命名环境变量在不同环境下的解析4.上线审核:实现上线审批流程,并在审批环节进行Code Review5.智能检查:SQL静态扫描、血缘依赖检查、自测流程检查在引入新的开发流程时,应该同时考虑相应的工具和技术来提高工作效率,避免数据研发对新流程的抵触情绪。产品推广路径集团数仓业务线数仓运维中心版本比对新
7、增概念,且改变了业务流程增量功能,不影响流程针对不同的业务团队采用逐步灰度的手段测试表草稿上线.逐步灰度数据安全逐步完善识别高敏高密级数据高等级表读写权限限制到个人人人+场的权限控制场的权限控制开发&运维角色分离运维角色构建脱敏测试表开发人员与隐私数据隔离开发人员与隐私数据隔离开发环节使用个人账号生产环节使用空间账号人员变动不影响生产可用性人员变动不影响生产可用性开发生产账号分离高等级表控制到人高敏感数据脱敏交互式开发由于过去数据平台的定位是生产调度平台,业务通常没有在数据平台上进行开发的习惯。然而,随着开发流程逐渐转移到数据平台上,一些交互体验不佳的问题开始浮现。其中最常见的问题是在开发试运
8、行阶段缺乏交互式反馈。调度器执行机调度执行手动触发作业下发调度器异步触发,缺乏反馈机制依赖检查资源检查MQ作业从触发到提交至执行机运行,经过多个排队检查环节环节,延迟达到分钟级别变量替换MQ交互式开发执行层MQ状态变更订阅提交解决方案是抽象出新的执行层试运行阶段直接提交至执行层,延迟更低执行层发布状态变更事件和提交日志事件,供数据平台订阅,从而实现及时的交互反馈日志输出生产开发环境能力全景图为了进一步提升开发效率和用户体验,以WebIDE为终态演进代码调试代码编辑器团队协作作业试跑文件管理片段执行多语言执行自动化测试语法校验代码补全全局搜索代码重构版本管理协同编辑经验总结与调度器解耦:在具体实
9、施生产环境隔离的过程中发现,数据平台和调度器的耦合程度过高,一方面平台本身的迭代受限于调度器自身的能力,另一方面调度器频繁更新迭代,也对数据生产的质量带来了负面影响。如果考虑完善数据平台的开发流程,应该尽早与调度器解耦。逻辑隔离并不完全适用于实时开发:和离线数据开发不同,实时数据开发测试需要考虑资源的隔离,而资源隔离的最佳实践是物理隔离。好在是实时数据的依赖一般不复杂,比较容易实施全链路的测试。存量历史作业替换环境变量:依赖SQL解析&改写的能力,目前通过提供脚本工具实现了历史作业按需替换,未来可以集成至自动化测试环节中:检测到写表没有环境变量,提供提示并一键替换。实时作业的隔离思考逻辑隔离:
10、基于线上流式数据源采样构建测试链路,包含用户行为日志、CDC数据源等物理隔离:基于测试、仿真设备上报日志构建全链路测试环境未来规划逻辑隔离:无限流-有限流,离线测试-上线实时,复用离线逻辑隔离方案目前的业务实践业务实践生产开发环境的使用范围应用情况约 90%的业务使用了生产环境隔离隔离级别超过 20%的业务使用了最严格的数据隔离流程应用已超过 7 万次上线审批测试数据测试表的总数量超过 4500 张解决了流程导致的质量问题全面推广开发生产环境隔离后,集团数仓中因流程不规范导致的起夜次数大幅度降低2022Q42023Q1141流程问题次/季度下降90%可配置化的生产开发环境配置配置类配置项生产表安全控制禁止直接变更禁止直接写入智能检查阻断配置数据表隔离检查数据表一致性检查冒烟测试检查发布上线审核发布表审核发布作业审核满足不同团队的上线质量要求,可配置的上线和数据隔离流程业务实践案例集团数仓、国际业务等业务方,基于生产开发环境制定了各自的上线协作流程规范谢谢