Slide 1

Slide 1 text

Nowcast, Inc. © 2020 Nowcast,Iinc. Snowflake×dbt×Terraformでモダンなデータ基盤開発してみた 2023/5/17 Nowcast データエンジニア ⼤野巧作 (Kevinrobot34) 1

Slide 2

Slide 2 text

© Nowcast, Inc. ⽬次 ● ⾃⼰紹介・会社紹介 ● 背景① ● Snowflake 関係 ● Terraform 関係 ● 背景② ● dbt 関係 ● 今後の展望 2

Slide 3

Slide 3 text

© Nowcast, Inc. ⾃⼰紹介 ⼤野巧作 ● けびん と呼ばれています ● 2020年ナウキャスト新卒⼊社 ● データエンジニア・データサイエンティスト ○ POSデータのパイプライン作成・運⽤ ○ 社内の新規データ分析基盤構築 ● Twitter等はKevinrobot34 ● 略歴 ○ 東京⼤学⼤学院理学系研究科にて、素粒⼦理論を専攻。 在学中いくつかのITベンチャーでインターンを経験し、機械学習を⽤いたプロジェク トに従事。2020年3⽉に⼤学院修了後、ナウキャストへ⼊社。POSデータを取り扱う パイプラインの作成・運⽤と、全社のデータ分析基盤の作成に取り組んでいる。 趣味はAtCoderやKaggleのコンペ参加。KaggleではCompetition Masterを獲得した ほか、複数のコンペで受賞歴あり。 3

Slide 4

Slide 4 text

© Nowcast, Inc. 会社紹介 ナウキャストはAlternative Dataを利活⽤を進めている会社 4 オルタナティブデータとは、元々は⾦融領域の⽤語で、 伝統的に使われてきた財務情報や経済統計のようなデータ (Traditional Data)に対して、これまで利活⽤の進んで こなかったビッグデータのことを指します。 データ利活⽤が活発なアメリカでは、様々な種類のオルタ ナティブデータがサービスとして実際に提供されています。 参考) オルタナティブデータとは

Slide 5

Slide 5 text

© Nowcast, Inc. 会社紹介 データの保有側・利⽤側の双⽅に価値を提供するオルタナティブデータの Two-Sided Platformを展開します 5

Slide 6

Slide 6 text

© Nowcast, Inc. 背景 ナウキャストでは新しい基盤システムを構築中 既存のシステムやチーム体制にある課題を解決するために、 ナウキャストでは最近プラットフォームチームを⽴ち上げ、 新たなデータ分析基盤システムを構築中 ● 細かな論点は過去の弊社のイベント (DataOpsNight) でも発表しているので是⾮ご覧ください︕ ● 分析基盤として Snowflake を中⼼に、 dbt などの モダンデータスタックを使うことにしている ○ 今⽇はこちらについて紹介します 6

Slide 7

Slide 7 text

© Nowcast, Inc. 背景 新分析基盤の全体像 各種ツールを以下のように利⽤ Snowflake ● リソース運⽤の課題の解決 Terraform ● リソース管理の課題の解決 dbt ● データ利活⽤の課題の解決 7

Slide 8

Slide 8 text

© Nowcast, Inc. 背景 既存の環境・問題点① ● 多くのパイプラインが1つのAWSアカウント に載っており、リソースやクォータの⾷い合 いがあった ○ Athena DML のクォータ等 ● 本番環境しかないパイプラインも存在 ● 強めの権限で作業しがち ↓ Snowflake で適切にリソースを分けて作成するこ とで解決 8

Slide 9

Slide 9 text

© Nowcast, Inc. Snowflake関係 Snowflake のリソースの切り分け ● Database は環境(dev / stg / prod) ごとに分ける ● データソースごとに以下を作成 ○ Schema と stage などの その他 schema objects ○ Role ○ Warehouse ○ Role も Warehouse も Schemaに 紐づく粒度で切り分けるイメージ Snowflake では Warehouse (計算資源) と ストレージが分離されているのでリソースの⾷い合 いなどが起きない設計が可能︕ 9

Slide 10

Slide 10 text

© Nowcast, Inc. Terraform関係 Terraform の⽤語 ● Terraform ○ IaC (Infrastructure as Code) ツール ○ AWS や GCP のリソースを Terraform で管理している⼈は多いと思うが、 Snowflake のリソースも Terraform で宣⾔的に管理することが可能 ● Terraform module ○ 複数のリソースのセットのこと ○ 例えば dev / stg / prod で同じ設定を 再利⽤したい時に便利 ● Atlantis ○ Terraform の plan / apply を Github の PR ベースで実現する OSSのツール ○ 要は GitOps な Terraform の CI / CD 10

Slide 11

Slide 11 text

© Nowcast, Inc. Terraform関係 Terraform moduleで50以上のリソースを簡単に作成 ● 先ほど紹介した、 Schema / Role / Warehouse はもちろんのこ と、これらのリソースごとに Grant の設定もしなければならない ○ 右図のように様々なリソース(少なくとも50個)が必要 ● また命名規則も作り、リソース名から⽤途が判別しやすくしたい → まさに Terraform module が使いやすい 11

Slide 12

Slide 12 text

© Nowcast, Inc. Terraform関係 Terraform moduleで50以上のリソースを簡単に作成 ● 実際に module を利⽤するとたった数⼗⾏で 50以上のリソースを簡単に作成可能 12 データソース名と環境名 誰が使えるか︖ Warehouseのサイズ

Slide 13

Slide 13 text

© Nowcast, Inc. Terraform関係 Atlantis による誰でも簡単に Terraform が使える環境 ● Platformチームしかインフラを触れないとい う状況だとスケールしない ● Atlantis を使えば Github で PR を作成し、 Approve をもらわないと apply できない といった機能がある → 権限の追加や、新規データソース⽤のリソース 作成など多くのエンジニアが⾃律的に動ける状況を 実現 13

Slide 14

Slide 14 text

© Nowcast, Inc. Terraform関係 Snowflake Provider を使う際の Tips ● depends_on で明⽰的に依存関係を指定 ● prevent_destroy = true で⼤切なリソースは守る ● grant 関係のオプションはうまく活⽤ ○ enable_multiple_grants ○ on_future / on_all ● Provider のバージョンが⽐較的頻繁に上がるので Github repo を定期的に確認する 14

Slide 15

Slide 15 text

© Nowcast, Inc. 背景 元々の環境・問題点② ● データカタログやデータのリネージュが整備されてない ● AWSアカウントに構築されてきたパイプラインはS3とAthenaをベースとしたものが多い ○ 以下の繰り返し ■ S3 に parquet でデータを配置し、Athena テーブルを作成しておく ■ ECSからAthenaにクエリを投げて適宜 S3 に置く ○ Athena がパフォーマンス的に遅くて困ることが度々あった ● 上記以外にも、PythonでガッツリETLしているパイプラインももちろんある 15

Slide 16

Slide 16 text

© Nowcast, Inc. dbt関係 External Table の設定 ● Athena テーブルが作られているので、 その S3 バケットを外部ステージとして 設定することで、簡単に Snowflake の 世界にデータを取り込める ● またそれをどこからでもスタートできる ○ パイプラインによって全てをいきなり Snowflake へ 移⾏するのは⼤変、という場合には下流の処理から 順次対応が可能 16

Slide 17

Slide 17 text

© Nowcast, Inc. dbt関係 External Table の設定 ● dbt のパッケージ dbt-external-tables を利⽤ することで簡単に設定可能 ● S3のHive形式のpartitionの情報 も適宜 metadata$filename を パースすることで、Snowflakeへ 取り込むことができる 17 外部テーブルの情報

Slide 18

Slide 18 text

© Nowcast, Inc. 今後の展望 ● dbt docs をそのままホスティングするのではなく、 Notion などに載せる ○ Github Action の dbt-docs-to-notion 的なイメージ ● dbt python モデルを便利に使える環境を作ることで、PythonでガッツリETLしてるよう なパイプラインもSnowflakeの世界へ移⾏しやすくする ● Quicksight等のBIツールと繋ぎ込みやすくする ● … などなど、Snowflake と terraform そして dbt をフル活⽤して 分析基盤を進化させていく予定です︕ 18

Slide 19

Slide 19 text

© Nowcast, Inc. ナウキャストでモダンなデータ基盤を作る&使いませんか︕ ⼀緒に働く仲間を募集中です︕ ● 興味ある⽅は是⾮ Twitter でご連絡ください︕ @Kevinrobot34 ● 会社について気になる⽅はこちら ○ 会社紹介スライド ○ 会社説明Notion ● 募集中のポジションはこちら 19

Slide 20

Slide 20 text

© Nowcast, Inc. ありがとうございました︕ 20