[レポート]7年使ったRedshiftから 6ヶ月かけてSnowflakeへ移行した話 〜手の内全部お見せします〜 #SnowflakeDB #SnowdayJapan

2023.02.15

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

この記事は、2023年2月14日開催のSNOWDAY JAPANのセッション『7年使ったRedshiftから 6ヶ月かけてSnowflakeへ移行した話 〜手の内全部お見せします〜』に関するセッションレポートです。

セッション概要

概要

独自のテレビ視聴質データを利用したCM効果分析サービスを提供するREVISIO株式会社が、7年間使用してきたRedshiftからSnowflakeへ移行した際の手法やツール、検証内容や両DWHの差異などについて詳しくお話します。

登壇者

  • REVISIO株式会社 データテクノロジー本部 エンジニアリングマネージャー 片岡 基 氏

登壇資料

自己紹介・会社紹介

  • 片岡氏について
    • 20年ほどエンジニアをしている
    • 今回のプロジェクトでは全体を統括した
  • REVISIO株式会社の事業紹介
    • 「テレビの視聴の質」を測る企業であり、広告主、広告会社、放送局の方に使用されている
    • CMの効果分析のためのSaaS「Telescope」
    • マーケティング分析や、CM制作~出稿サービスも提供している

移行の背景

  • DWHを中心としたシステムアーキテクチャ
    • データ分析そのものがビジネスの根幹である、そのためDWHにどのようにデータを入れてお客様に価値を届けることが、生命線となっている
    • Snowflake圧縮後で15TBのデータ量、BIツールのユーザーも社内で20名

  • 移行前:Redshiftにおける課題
    • ビジネスの拡大に伴う、処理速度・安定性の低下
    • スケールアップするごとにコストアップ
    • クラスター管理やパフォーマンスチューニングの運用負荷も増加
  • 新たなテクノロジーへの期待
    • Snowflakeが高速、安価、ニアゼロメンテナンスと聞いた
    • SnowflakeとRedshift Serverlessを比較検証し、移行することに

移行体制

  • 移行チーム体制:合計9名
    • リーダー:1名
    • データエンジニア:5名
    • データサイエンティスト:2名
    • Webエンジニア:1名
  • タイムライン
    • 2021年10月~情報収集(Snowflake営業の浅野氏からTwitterでDM頂いたことがきっかけ)

移行手順詳細と完了まで

  • トライアル時の確認事項と検証結果
    • コスト比較については、Redshift Provisioned Cluster、Redshift Serverless、それぞれと比較しても、Snowflakeが一番安いという試算が出た

  • Redshift ServerlessとSnowflakeの比較
    • 一番重い日次バッチでも、Snowflakeのほうが時間も短く安く済むという結果が出た
    • Redshift Serverlessは、クラスタ起動までに10秒かかっていた
    • 移行コストはRedshift Serverlessのほうが楽ではあるが、コストや運用面を考慮し、Snowflakeへの移行を決定

  • 移行において問題となるRedshiftとSnowflakeの差異
    • 今日の発表ではすべて説明しきれないため、また機会を改めて公開いただけるとのことでした。(楽しみですね!)

  • RedshiftからSnowflakeのSQL変換するため、自社でSQL変換ツールを開発した
    • 複雑なSQLはツールで完全に変換できないので、まずこのツールで変換して、そのあと人で対応した
    • ツールの中身は、取り込んだSQLを1行1行見て、正規表現使って変換していくような仕様

  • 結果比較ツールも開発
    • RedshiftとSnowflakeで結果が一致しないものがあった。その時にはSQLを都度確認して変換する、ということを繰り返していった。大変な作業だった…

  • 参考:実行速度比較
    • 実際に43個のSQLで比較すると、Snowflakeが39勝だった
    • ただ、Redshiftのチューニングがうまくできていなかったところもあるかもしれない。一方で、Snowflakeはチューニングが楽であることを実感した

  • Snowflakeのパフォーマンスチューニングのキーワード
    • Snowflake社のサポートにも問い合わせを行い、クエリのチューニング対応をして頂いた。社外でも聞くが、Snowflakeのサポートは素晴らしい

  • 全データ移行のプロセス
    • FivetranやAirbyteのサービスを検討したが、手順のシンプルさなどを考慮し、S3経由でRedshiftからエクスポートしてSnowflakeへインポートする方法を採用
    • UNLOADからINSERTまでのコードサンプルも紹介

  • 移行データチェックツール
    • 移行したデータが移行前と合致するかどうかを確認するために、ツールを開発した
    • 数百億行あるので全レコードを対象とした比較は難しいと判断し、1テーブルずつテーブルメタデータを取得し、カラムの型に応じて集計する値を決定し、チェックを行う仕様のツールを開発した

  • RedshiftとSnowflakeの並行稼働期間
    • データが一致しないことが多々あり、調査に追われることがあった

  • 12月8日に、完全移行完了!

移行後の振り返り

  • 移行を終えての感想
    • 高速化・安定化・コストダウン、という一番の目的が達成できた
    • 特に障害なく移行できた
    • 速度やコストはまだ改善できそう
    • 社内の非テック系メンバーからも「非常に早くなって使いやすくなった」と声を頂いた
  • Snowflakeへの今後の期待
    • Snowflake自身によるさらなる高速化・コストダウン
    • Slackへ直接通知できる機能が欲しい
    • Dynamic Table、Unistoreも活用したい

お知らせ

  • 各職種、募集しています!!

  • 今日の発表でお話した各種ツールを、OSSとして公開予定!!(早くて2月末ごろ?)
    • 会場では拍手喝采でした!(さがらの感想ですが、控えめに言って最高ですよね…本当にありがたいです。)

最後に

RedshiftからSnowflakeに移行したいという話は聞くようになってきましたが、あまり具体例がなく、移行をどう進めればよいかわからない方も多いと思います。本セッションではタイムラインから実際に行った各施策や苦労した点も含め、タイトルの「手の内全部お見せします」に類わない素晴らしい内容でした。

また、更に使用した各種ツールをOSSで公開予定というのも本当にありがたいですよね…公開が楽しみです!!