Upgrade to Pro — share decks privately, control downloads, hide ads and more …

ソフトウェアエンジニアリングの知見を活かして データ基盤をいい感じにする on Snowfla...

ソフトウェアエンジニアリングの知見を活かして データ基盤をいい感じにする on Snowflake [MIERUNE BBQ #10]

MIERUNE BBQ #10 in 札幌時計台
でのLT資料です。
https://mierune.connpass.com/event/321230/

k.muguruma

July 24, 2024
Tweet

More Decks by k.muguruma

Other Decks in Technology

Transcript

  1. © 2024 Finatext Holdings Ltd. アジェンダ 1. イントロ 2. ナウキャストにおけるデータ基盤

    3. データ基盤を構築・運用時に適用できるソフトウェアエンジニアリング 4. まとめ 1
  2. © 2024 Finatext Holdings Ltd. イントロ; 自己紹介 自己紹介 六車 光貴

    (Muguruma, Koki) X: @mt_musyu • 株式会社ナウキャスト データエンジニア&データプラットフォームエンジニア (2023/09~) • やっていること: データエンジニアリング(データ分析基盤の設計・構築など) ◦ 社内のデータ基盤の開発・運用、顧客向けデータ基盤構築支援 • 元々はweb engineerだったため、Software engineeringの知見をData Engineeringに応用するのが好き。 最近はSnowflake, BigQuery, Airflow, dbt周りをよく使っている • 前職はITコンサル、Web屋さん(検索エンジン作ってました) • 山登りとスキーとお酒(日本酒・ウイスキー)が好き 2
  3. © 2024 Finatext Holdings Ltd. イントロ; 会社紹介 会社紹介 3 オルタナティブデータとは、利活用の進んでいないビッグデータの総称

    オルタナティブデータとは、元々は金融領域の用語で、伝 統的に使われてきた財務情報や経済統計のようなデータ (Traditional Data)に対して、これまで利活用の進んで こなかったビッグデータのことを指します。 データ利活用が活発なアメリカでは、様々な種類のオルタ ナティブデータがサービスとして実際に提供されていま す。 参考) オルタナティブデータとは
  4. © 2024 Finatext Holdings Ltd. イントロ; 会社紹介 会社紹介 5 データ利用者に応じた様々なプロダクトを展開

    日銀黒田元総裁講演資料で引用 日本銀行の金融緩和の決定など、 政策意思決定にも活用されています。 レジャー消費、 EC消費がわかる数少ない指 標として、 260件以上のメディア、調査レ ポートで引用されています WBS等多くのメディア露出
  5. © 2024 Finatext Holdings Ltd. イントロ; ナウキャストの組織構造 6 自社データプロダクト提供と顧客支援と2つのビジネスを推進しています Data

    Service Business ビッグデータを用いたプロダクトを提供する事業。 Data & AI Solution Business データとAIで顧客のDXを支援する事業。 Data Service Platform Unit 事業横断でデータ基盤の高度化、R&Dなどを行うチーム。 Investment Research Unit 機関投資家向けに ビッグデータ分析 SaaSを提供 Real Estate Unit 商圏分析や売上予 測モデルによる店 舗物件の診断サー ビスを不動産会社 に提供 Data Holder Unit 提供元からデータを受領し、データパイプラインの構築を行うチーム。 Engineering Team データエンジニアリングと生成AI活用に 精通したエンジニアリングチーム。 Consultant Team データとAIを用いたDXに特化した コンサルティングチーム。 Economic Research Unit ビッグデータから 計算したマクロ指 数を金融機関・官 公庁等に提供
  6. © 2024 Finatext Holdings Ltd. イントロ; データエンジニアリングとは そもそもデータエンジニアリングとは データエンジニアリングとは、生データを取り込み、分析や機械学習などの下流のユースケースをサポートする高 品質で一貫性のある情報を生成するシステムとプロセスの開発、実装、保守のことである。

    データエンジニアリングは、セキュリティ、データ管理、DataOps、データアーキテクチャ、オーケストレーショ ン、ソフトウェアエンジニアリングの交差点です。 データエンジニアは、ソースシステムからのデータ取得に始まり、分析や機械学習などのユースケースにデータを 提供するまでのデータエンジニアリングライフサイクルを管理します。 7 ref: データドリブンな世界を支える: データプラットフォームエンジニアリングの役割と影響 Joe Reis and Matt Housley, Fundamentals of Data Engineering
  7. © 2024 Finatext Holdings Ltd. イントロ; Snowflakeについて Snowflakeとは • データのモビライゼーション、重要ワークロードの強化、シームレスなコラボレーションを実現する単一のグ

    ローバルプラットフォーム ◦ AIデータプラットフォーム 8 ref: プラットフォームの概要 • 個人的Snowflake推しポイント ◦ データ共有プラットフォームとして良い ◦ UI/UXが良い ◦ サポートが良い ◦ ワンプラットフォームでデータ収集・可視化で きる
  8. © 2024 Finatext Holdings Ltd. ナウキャストにおけるデータ基盤 9 • DWHはSnowflake •

    Snowflake のリソース管理 ◦ table / view → dbt ◦ udf / proc / SiS→ Snowflake CLI ◦ それ以外 → Terraform • Airflow から ECS task を呼び dbt build を定期実行 Snowflake x dbt x Terraform の基盤の全体像 • dbt モデルはモノレポで管理 ◦ boilerplate の用意 ◦ GitHub Flow なブランチ管理 ◦ projects/環境ごとにdirを分け、それぞれCI/CD • [WIP] OpenMetadata でメタデータ管理 ◦ Snowflake からメタデータ取得 ◦ dbt artifact を連携する仕組み Snowflake x dbt x Terraform マルチデータプロダクト基盤 [DataOps Night #4] - Speaker Deck
  9. © 2024 Finatext Holdings Ltd. データ基盤を構築・運用時に適用できるソフトウェアエンジニアリング データエンジニアリングを支えるソフトウェアエンジニアリング データエンジニアリングを行うにあたってソフトウェアエンジニアリングのノウハウは役にたつ • ネットワーク、認証認可、オーケストレーション、CI/CD、IaC,

    etc. 大事な資産であるデータをガバナンスを効かせながらアジリティ高く取り扱えるようにする 閑話休題・・・ • データエンジニアリングの黎明期(2000-2010年)低レベルのフレームワークで作業、MapReduceジョブ、開 発、Hadoopkクラスタ管理など • データエンジニアリングで使用するツールはよりマネージドサービス、SaaSを使うことが多くなってきた • ただ、ソフトウェアエンジニアリングのベストプラクティスを実践できることは競争優位性をもたらす ◦ 使っているOSSのバグを見つけたらさらっとコントリビュート!など ◦ SQL, Python, JVM言語, bash, HCL(Terraform)あたりをよく使う 10
  10. © 2024 Finatext Holdings Ltd. データ基盤を構築・運用時に適用できるソフトウェアエンジニアリング 例: Snowflake上で動くデータアプリケーションのCICDパイプラインの構築 • SnowflakeではSnowflakeに閉じた環境でデータアプリケーションを作成できる機能がある

    ◦ Snowpark Container Services (SPCS); Snowflake上のマネージドKubernetesのようなもの ◦ Streamlit in Snowflake (SiS); StreamlitアプリをSnowflake上で構築・展開・共有できる 11 Snowflake CLIを利用したStreamlit in Snowflakeアプリの開発、GitHub Actionsを用いたCICD • SiSのCI/CDパイプラインを構築 ◦ localで開発、GitHub Actionsでtest, SiSにdeploy ◦ Snowflake CLI (2024年2月にV2がリリースされたツール) を使って構築 ◦ 安全かつアジリティを持ったデータアプリケーションの構 築を実現
  11. © 2024 Finatext Holdings Ltd. データ基盤を構築・運用時に適用できるソフトウェアエンジニアリング 例: TerraformによるSnowflakeリソースの管理 • Snowflake上のtable,

    view, udf, データアプリケーション以 外のリソースは全てTerraformで管理 • moduleを使ってリソースの作成を効率化 ◦ roleとwarehouseを作成するmodule ◦ schemaとschema objectを作成するmodule ▪ この二つのmoduleを組み合わせてschema, schema objectの権限管理を行う 1212 外部テーブルに必要な情報 マスターや公的統計スキーマには 読 み込み権限 warehouse のサイズ POSのスキーマには書き込み権限 DATAHUB_DEV.POS_A スキーマに 必要なオブジェクト・権限設定は 全てこれだけで作られる Snowflake x dbt x Terraform マルチデータプロダクト基盤 [DataOps Night #4] - Speaker Deck
  12. © 2024 Finatext Holdings Ltd. データ基盤を構築・運用時に適用できるソフトウェアエンジニアリング データ基盤をIaCで管理するのは優先度が高い • データ基盤は様々なバックグラウンドの方がアクセスする基盤になりがち ◦

    一つの環境にデータが集まっている方がデータ利活用がしやすい。全社共通データ基盤。 ▪ BTW; データメッシュという考え方もある ◦ ex) マーケティング部門、Aアプリ開発チーム、Bアプリ開発チーム、人事、etc.様々な方がデータ基盤に アクセスする ◦ ⇔webアプリを構築するAWSアカウントへのアクセスは基本アプリの開発者・管理者・運用者しかアク セスできない • 一つの環境できめ細やかな権限管理が必要 ◦ ex) Aアプリ開発チームはアプリ関連のlogのデータしか見えない(逆に他のユーザーにAアプリのデータ は見えないようにしたい) ◦ この管理を手運用で行うのは危険⚠ • IaC(Terraform)によるリソースの管理できめ細やかな権限管理を安全に行うことができる ◦ 属性ベースのアクセス制御(ABAC)もやりやすい • その上でTerraformのコードがSSOTになるようにCI/CDパイプラインを構築することも大事 13
  13. © 2024 Finatext Holdings Ltd. まとめ • データエンジニアリングとは生データを取り込み、分析や機械学習などの下流のユースケースをサポートする 高品質で一貫性のある情報を生成するシステムとプロセスの開発、実装、保守のこと •

    データエンジニアリングをする上でソフトウェアエンジニアリングのノウハウは役にたつ ◦ ネットワーク、認証認可、オーケストレーション、CI/CD、IaC, etc. ◦ データ基盤をIaCで管理するのは優先度が高い 14
  14. © 2024 Finatext Holdings Ltd. 15 データエンジニア絶賛募集中! データエンジニアがまだまだ足りていません! ナウキャストで •

    モダンなデータ基盤を作ったり、 • その上で様々なデータを分析したりパイプライン作ったり、 • お客様のデータ基盤構築・生成AI活用支援したり、 しませんか! • 会社紹介 ◦ 「ナウキャスト SpeakerDeck」で検索してみてください ◦ https://speakerdeck.com/finatext/nowcast-are-hiring ◦ https://speakerdeck.com/finatext/nowcast-data-and-ai-solution • 募集中のポジション ◦ 「ナウキャスト Herp」で検索してみてください ◦ https://herp.careers/v1/finatexthd/Zed_DMxiz8cY など 気になることがあればXで @mt_musyu に気軽にご連絡ください!