尽早设定全公司的期望
Posted: Thu Jan 30, 2025 6:12 am
上个月,Netlify 的数据团队将数据存储从 Databricks (DBX) 迁移到了 Snowflake。这是全员参与的团队努力,我们重新设计了Airflow数据提取管道,迁移了近 500 个dbt模型,并更新了数十个模式报告和仪表板的定义。本文分为两部分:
我们如何管理迁移,将其分解成小块,并在整个过程中保持团队积极性
我们需要更新的 SQL 函数和分析逻辑的参考列表
我们如何成功完成迁移
Netlify 经常使用“边飞边造”的比喻来描述软件工程工作,迁移数据存储也不例外。这项工作需要充分的沟通、协调、支持和利益相关者管理,同时不会破坏任何现有的数据基础设施或中断任何人的常规数据和 BI 例程。这项持续的工作涉及一个由四名分析工程师、三名数据分析师和一名经理组成的团队;以下是我们的工作方式:
为了让我们有更多空间和精力,业务领导同意在迁移期间,我们将 (1) 暂 美国电报号码数据库 停所有正在进行的数据工作,(2) 不开始任何新的数据工作,以及 (3) 仅执行“保持正常运转”的数据工作。在我们进行迁移期间,业务部门可以继续访问所有仪表板/报告/工具,并可以继续查询 DBX 上存储/转换的新数据。这种安排对于我们的数据迁移项目的成功至关重要。
尽早设定团队期望
在进行迁移时,我们制定了一条铁律:不要重构或优化。 “哦,在迁移时,我会继续清理此 CTE 中的其余代码”的诱惑非常真实,我们认识到了这一点!但是,超出最低限度的重构(“dbt 模型是否在 Snowflake 上成功运行?”)会产生摩擦点:
PR 审查需要更长的时间,因为现在我们不仅要检查 SQL 函数是否已正确迁移,还要检查业务逻辑是否仍能实现相同的输出。
数据比较检查没有那么有用。在迁移模型时,我们会将旧 DBX 模型中的值与新的 Snowflake 模型进行比较,以确保我们的数据仍然相同。如果我们发现数据差异,我们不知道这是由于重构造成的,还是因为我们在基本 SQL 重写中犯了错误。
重构分散了团队的注意力,而团队的注意力本应集中在尽快按依赖关系顺序转移所有 500 个 dbt 模型和数十个模式报告。
我们如何管理迁移,将其分解成小块,并在整个过程中保持团队积极性
我们需要更新的 SQL 函数和分析逻辑的参考列表
我们如何成功完成迁移
Netlify 经常使用“边飞边造”的比喻来描述软件工程工作,迁移数据存储也不例外。这项工作需要充分的沟通、协调、支持和利益相关者管理,同时不会破坏任何现有的数据基础设施或中断任何人的常规数据和 BI 例程。这项持续的工作涉及一个由四名分析工程师、三名数据分析师和一名经理组成的团队;以下是我们的工作方式:
为了让我们有更多空间和精力,业务领导同意在迁移期间,我们将 (1) 暂 美国电报号码数据库 停所有正在进行的数据工作,(2) 不开始任何新的数据工作,以及 (3) 仅执行“保持正常运转”的数据工作。在我们进行迁移期间,业务部门可以继续访问所有仪表板/报告/工具,并可以继续查询 DBX 上存储/转换的新数据。这种安排对于我们的数据迁移项目的成功至关重要。
尽早设定团队期望
在进行迁移时,我们制定了一条铁律:不要重构或优化。 “哦,在迁移时,我会继续清理此 CTE 中的其余代码”的诱惑非常真实,我们认识到了这一点!但是,超出最低限度的重构(“dbt 模型是否在 Snowflake 上成功运行?”)会产生摩擦点:
PR 审查需要更长的时间,因为现在我们不仅要检查 SQL 函数是否已正确迁移,还要检查业务逻辑是否仍能实现相同的输出。
数据比较检查没有那么有用。在迁移模型时,我们会将旧 DBX 模型中的值与新的 Snowflake 模型进行比较,以确保我们的数据仍然相同。如果我们发现数据差异,我们不知道这是由于重构造成的,还是因为我们在基本 SQL 重写中犯了错误。
重构分散了团队的注意力,而团队的注意力本应集中在尽快按依赖关系顺序转移所有 500 个 dbt 模型和数十个模式报告。