Slide 1

Slide 1 text

© 2024 Finatext Holdings Ltd. Snowflakeデータ基盤の複数環境構成 株式会社ナウキャスト 大野巧作 / @Kevinrobot34

Slide 2

Slide 2 text

© 2024 Finatext Holdings Ltd. 皆さんのパイプライン・データ基盤は 本番環境一つだけになっていませんか? 1

Slide 3

Slide 3 text

© 2024 Finatext Holdings Ltd. ナウキャストにおける Snowflake データ基盤の 本番・開発環境の構成を 紹介します! 2

Slide 4

Slide 4 text

© 2024 Finatext Holdings Ltd. アジェンダ 1. イントロダクション 2. 環境分離のポイント 3. ゼロコピークローンと環境分離 4. Appendix 3

Slide 5

Slide 5 text

© 2024 Finatext Holdings Ltd. 1. イントロダクション 自己紹介 ● 名前:大野巧作 ○ 大体けびんと呼ばれています ○ X / GitHub / Zenn / SpeakerDeck などは @Kevinrobot34 ● 役職:Data Engineer / Data Platform Engineer @ Nowcast ○ POSデータのパイプライン作成・運用 ○ Snowflake x dbt x Terraform な社内データ基盤構築・運用 ○ 2020年卒の社会人5年目です ● 最近興味のある技術 ○ Apache Iceberg 4 出張でSnowflake Summit に行った時の写真→

Slide 6

Slide 6 text

© 2024 Finatext Holdings Ltd. 1. イントロダクション 会社紹介 データの保有側・利用側の双方に価値を提供するオルタナティブデータの Two-Sided Platformを展開します 5

Slide 7

Slide 7 text

© 2024 Finatext Holdings Ltd. 1. イントロダクション 過去のパイプラインの課題 Snowflake x dbt x Terraform のデータ基盤を作る前のパイプラインには様々な課題がありました ● データのサイロ化 ● CI / CD が整備されていなかったりする ● 一部のデータは AWS アカウントは共有しており、 クォータを食い合っていた ● 本番環境しかない ● Description や Lineage などの メタデータが取得・管理されていない ● 似たようなパイプラインは多いのに、 知見が共有されず似たエラーに皆苦しむ ● … 6

Slide 8

Slide 8 text

© 2024 Finatext Holdings Ltd. 1. イントロダクション ナウキャストのデータ基盤 Snowflake x dbt x Terraform なデータ基盤を運用しており ● POSデータ ● クレジットカードデータ ● 人流(位置情報)データ ● 求人情報データ ● TV広告データ ● … など多種多様なデータを分析できるように しています。サイロ化は解消され、複数の データを組み合わせた面白い分析がやりや すくなりました! データ基盤の構成の全体像については、 右の資料で詳しく解説しています! 7 https://speakerdeck.com/kevinrobot34/multi-data-product-platform-with-snowflake-dbt-terraform

Slide 9

Slide 9 text

© 2024 Finatext Holdings Ltd. 1. イントロダクション ナウキャストのデータ基盤 Snowflake の権限管理・コスト管理のためのロール・ウェアハウス構成については以下の資料を ご覧ください! 8 https://speakerdeck.com/kevinrobot34/multi-data-product-platform-with-snowflake-dbt-terraform

Slide 10

Slide 10 text

© 2024 Finatext Holdings Ltd. 1. イントロダクション 過去のパイプラインの課題(再掲) Snowflake x dbt x Terraform のデータ基盤を作る前のパイプラインには様々な課題がありました ● データのサイロ化 ● CI / CD が整備されていなかったりする ● 一部のデータは AWS アカウントは共有しており、クォータを食い合っていた ● 本番環境しかない ○ 開発しにくく、技術負債は放置されがちだったり、顧客影響がでるリスクが高い環境 ○ 開発のスピードも出にくくなっていた ● Description や Lineage などのメタデータが取得・管理されていない ● 似たようなパイプラインは多いのに、知見が共有されず似たエラーに皆苦しむ ● … ナウキャストの新しいデータ基盤ではどのように複数環境を用意し、運用しているか紹介します! 9

Slide 11

Slide 11 text

© 2024 Finatext Holdings Ltd. アジェンダ 1. イントロダクション 2. 環境分離のポイント 3. ゼロコピークローンと環境分離 4. Appendix 10

Slide 12

Slide 12 text

© 2024 Finatext Holdings Ltd. 2. 環境分離のポイント どのレベルで環境を分けるか? Snowflake の何で環境を分けるかいくつか選択肢があります。 これらを踏まえ、ナウキャストではデータベースレベルで環境分離を行っています → .. 11 メリット デメリット アカウント ● 明確に本番環境と開発環境を分離できる ● コスト・権限管理しやすい ● 環境間でのデータ連携が面倒 (要Replication) データベース ● 環境間でのデータ連携が容易 (クローン ) ● log_level など環境内で同じ設定を配布したり しやすい ● スキーマの作り方次第でテーブルの管理が柔 軟にしやすい ● dbt のカスタムスキーマ周りはマクロの設定変 更が必要 スキーマ ● 環境間でのデータ連携が容易 (クローン ) ● DBを共通にできるので管理対象が減り、全体 をフラットに管理者しやすい ● db 単位でしかできない機能があったりする (databasesビュー、replicationなど)

Slide 13

Slide 13 text

© 2024 Finatext Holdings Ltd. 2. 環境分離のポイント 環境はいくつ用意する? Webアプリケーションだと Dev / Stg / Prod と3つ環境を用意したりしますが、 データ系だとストレージコストも計算コストも馬鹿になりません。 ナウキャストでは Dev と Prod の2つの環境を用意し、 後述のゼロコピークローンを組み合わせることでコストを抑えるようにしています。 ※ 多くのプロジェクトで2環境用意するようにしていますが、一部のプロジェクトでは   3環境用意している場合もあったりします。環境はいくつ必要でも大丈夫なように   flexible な terraform module でインフラを管理しています。 12

Slide 14

Slide 14 text

© 2024 Finatext Holdings Ltd. 2. 環境分離のポイント 環境分離 その① 単純に環境を2つ用意し、 パイプラインも2つ動かす。 これだとコストは本番環境のみの 場合の単純に2倍となってしまう 13

Slide 15

Slide 15 text

© 2024 Finatext Holdings Ltd. ゼロコピークローンとはテーブルなどのSnowflakeのオブジェクトをデータそのものはコピーせずに クローンする機能です。 データの本体であるマイクロパーティションをコピーする のではなく、「どのマイクロパーティションでテーブルが 構成されているのか?」というメタデータだけをコピー するため高速で安価です。 詳細は右の記事を ご覧ください! 2. 環境分離のポイント ゼロコピークローンについて 14 micro partition 1 micro partition 2 micro partition 3 micro partition 4 original_table cloned_table create table cloned table clone original_table https://zenn.dev/finatext/articles/snowflake-zero-copy-clone より

Slide 16

Slide 16 text

© 2024 Finatext Holdings Ltd. アジェンダ 1. イントロダクション 2. 環境分離のポイント 3. ゼロコピークローンと環境分離 4. Appendix 15

Slide 17

Slide 17 text

© 2024 Finatext Holdings Ltd. 3. ゼロコピークローンと環境分離 環境分離 その② ゼロコピークローンでうまくやりくりしてコストを抑える。 1. Prod から Dev にクローン 2. Dev で dbt build (開発) a. full refresh は一度だけ 3. Dev から Prod にクローン 4. Dev と Prod で dbt build (定期実行) a. どちらも差分更新 b. dev はいらなくなったら止める 16

Slide 18

Slide 18 text

© 2024 Finatext Holdings Ltd. 3. ゼロコピークローンと環境分離 環境分離 その② ゼロコピークローンでうまくやりくりしてコストを抑える。 1. Prod から Dev にクローン 2. Dev で dbt build (開発) a. full refresh は一度だけ 3. Dev から Prod にクローン 4. Dev と Prod で dbt build (定期実行) a. どちらも差分更新 b. dev はいらなくなったら止める 17

Slide 19

Slide 19 text

© 2024 Finatext Holdings Ltd. 3. ゼロコピークローンと環境分離 環境分離 その② ゼロコピークローンでうまくやりくりしてコストを抑える。 1. Prod から Dev にクローン 2. Dev で dbt build (開発) a. full refresh は一度だけ 3. Dev から Prod にクローン 4. Dev と Prod で dbt build (定期実行) a. どちらも差分更新 b. dev はいらなくなったら止める 18

Slide 20

Slide 20 text

© 2024 Finatext Holdings Ltd. 3. ゼロコピークローンと環境分離 環境分離 その② ゼロコピークローンでうまくやりくりしてコストを抑える。 1. Prod から Dev にクローン 2. Dev で dbt build (開発) a. full refresh は一度だけ 3. Dev から Prod にクローン 4. Dev と Prod で dbt build (定期実行) a. どちらも差分更新 b. dev はいらなくなったら止める このようにゼロコピークローンで環境間で テーブルをクローンすることでコストを 抑えることができる。 19

Slide 21

Slide 21 text

© 2024 Finatext Holdings Ltd. 3. ゼロコピークローンと環境分離 注意点や今後の課題 ● dev が部分的にいわゆるstg的な運用になっている場合もあり、そういったパターン時には prod 側へゼロコピークローンしたりしています ○ ポイントとしては重い dbt model を full refresh する回数をいかに減らせるか?という話 で、そのために適宜ゼロコピークローンを利用するのが便利です。 ● ゼロコピークローンは便利ですが、権限周りなどの落とし穴はあったりするので、事前に検証は してからの利用がおすすめです。 ● PIIを含むような環境だと無闇にデータをコピーするのはよくないという話がありますが、こう いった機密性の高いデータに関してはそもそもアカウントを切り分け、運用の仕方を少し変えた りアカウントへの権限の払い出しを厳しくしたりしています。詳細はAppendixをご覧ください。 ● 一部結局まだ1環境しかなく、devという名前のDBが実質本番的な運用をされてしまっているパ ターンが起きてしまっており、これをいかに仕組みで防ぐかは今後考えていきたいと思っていま す。 20

Slide 22

Slide 22 text

© 2024 Finatext Holdings Ltd. まとめ ● データの品質を維持しアジリティ高く開発を行うためには、 データ基盤においても本番環境のみでなく、複数の環境を用意するのが大事 ○ ナウキャストでは Dev/Prod の2つの環境を用意し、気軽に変更を試せるようにしている ● 環境分離の仕方はいくつか選択肢があるが、 Snowflake の場合にはアカウントは共通化して おくのがおすすめ ○ ゼロコピークローンを活用することで コストを抑えつつ複数環境の運用が 可能になる 21

Slide 23

Slide 23 text

© 2024 Finatext Holdings Ltd. 仲間を募集中! ナウキャストで Snowflake 使った基盤開発や データパイプライン開発、顧客支援しませんか? 22 エンジニア向けXアカウント https://x.com/FinatextDev TechBlog https://zenn.dev/p/finatext

Slide 24

Slide 24 text

© 2024 Finatext Holdings Ltd. 4. Appendix References ● https://zenn.dev/finatext/articles/snowflake-zero-copy-clone ● https://zenn.dev/finatext/articles/dbt-high-performance-incremental-model ● https://speakerdeck.com/kevinrobot34/multi-data-product-platform-with-snowflake-dbt-terraform ● https://speakerdeck.com/kevinrobot34/privilege-and-cost-management-in-snowflake ● https://speakerdeck.com/tsoshiro/snowflake-x-dbtdezuo-rusekiyuadeaziyairunadetaji-pan 23

Slide 25

Slide 25 text

© 2024 Finatext Holdings Ltd. 4. Appendix Snowflake のアカウントはいつ分けるべきか? データの機密性が違う場合に分けるのが良いと考えています。詳細は以下の資料をご覧ください! 24 https://speakerdeck.com/tsoshiro/snowflake-x-dbtdezuo-rusekiyuadeaziyai runadetaji-pan

Slide 26

Slide 26 text

No content