Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Snowflake x Terraformに自動テストを導入した話
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
KDDI SnowVIllage
November 17, 2023
Technology
670
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Snowflake x Terraformに自動テストを導入した話
KDDI SnowVIllage
November 17, 2023
More Decks by KDDI SnowVIllage
See All by KDDI SnowVIllage
SnowVillageでもオープンデータハッカソン出てみませんか?
kddisnowvillage
0
300
Other Decks in Technology
See All in Technology
AIに障害切り分けを全部やってもらった。 。 。 。
estie
0
200
クレデンシャル流出 ― 攻撃 3 時間 vs 復旧 10 時間。この非対称性にどう備えるか
kazzpapa3
3
590
Lightning近況報告
kozy4324
0
220
2026年6月23日 Syncable Tech + Start Python Club にて
hamukazu
0
150
ご挨拶「10周年を迎える共創ラボのこれまでとこれから」
iotcomjpadmin
0
140
「ビジネスがわかるエンジニア」とは何か?
ryooob
0
340
Deep Data Security 機能解説
oracle4engineer
PRO
2
220
脱SaaS!FDEを支えるプロビジョニングと分離設計
knih
0
300
從觀望到全公司落地:AI Agentic Coding 導入實戰 — 流程整合與安全治理
appleboy
0
110
5分でわかるDuckDB Quack
chanyou0311
4
260
事業会社における 機械学習・推薦システム技術の活用事例と必要な能力 / ml-recsys-in-layerx-wantedly-2026
yuya4
0
160
感情と身体を置き去りにしない、エンジニアの生きのこり方 ──いまから、ここから「自分の状態」を扱うという選択
saorimurooka
0
350
Featured
See All Featured
Agile Actions for Facilitating Distributed Teams - ADO2019
mkilby
0
210
Abbi's Birthday
coloredviolet
3
8.3k
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
31
2.8k
How to Ace a Technical Interview
jacobian
281
24k
Why You Should Never Use an ORM
jnunemaker
PRO
61
9.9k
We Analyzed 250 Million AI Search Results: Here's What I Found
joshbly
1
1.4k
世界の人気アプリ100個を分析して見えたペイウォール設計の心得
akihiro_kokubo
PRO
72
40k
Exploring anti-patterns in Rails
aemeredith
3
430
The innovator’s Mindset - Leading Through an Era of Exponential Change - McGill University 2025
jdejongh
PRO
1
210
Utilizing Notion as your number one productivity tool
mfonobong
4
330
Between Models and Reality
mayunak
4
350
Put a Button on it: Removing Barriers to Going Fast.
kastner
60
4.3k
Transcript
©2023 ARISE analytics 株式会社ARISE analytics 田畑 幹 Snowflake x Terraformに
自動テストを導入した話 2023/11/10
2 ©2023 ARISE analytics 目次 2 背景と目的 1 3 4
自己紹介 事例紹介 さいごに
3 ©2023 ARISE analytics 目次 2 背景と目的 1 3 4
自己紹介 事例紹介 さいごに
4 ©2023 ARISE analytics 背景と目的 背景 DMP基盤をSnowflakeで構築・運 用中
Snowflakeの各種オブジェクトは Terraformで構築/構成管理をして いる その品質担保に自動テストツールとし てpytestを導入した 本日の目的 Snowflake x Terraformでの構成 に自動テストツールとしてpytestを導 入した事例について、経緯や実装概 要、今後の展望を共有する
5 ©2023 ARISE analytics 目次 2 背景と目的 1 3 4
自己紹介 事例紹介 さいごに
6 ©2023 ARISE analytics 自己紹介 株式会社ARISE analytics Team Lead 田畑
幹 経歴 Web企業 • Python x Django x AWSのWebアプリ開発をメインで担当。 • Reactを使用したSPA開発にも参画。 ARISE analytics プロジェクト • 店頭端末でのレコメンド機能PoC • 会員向け特典サービスの分析 • Terraform, Kubernetes Kubernetesを使用したアプリ展開・管理基盤 のPoC • BigQueryを中心としたGAアクセスログ集約GCP基盤の構築 • Snowflakeを用いたDMP基盤構築 趣味・好きなもの 旅行、バイク、日本酒、ダイビング
©2023 ARISE analytics 7 ARISE analytics とは? • 社名 •
資本構成 • 営業開始 • 所在地 • 役員 • 社員数 : 株式会社ARISE analytics : KDDI 85% Accenture 15% : 2017年4月1日 : 渋谷区 渋谷2-21-2 渋谷ヒカリエ31F : 代表取締役社長 家中 仁 / KDDI : 152名/業務委託・派遣含め約500名 ※2023年9月1日現在 会社概要 事業領域 国内最大級350名を超えるデータサイエンティストが活躍
8 ©2023 ARISE analytics 目次 2 背景と目的 1 3 4
自己紹介 事例紹介 さいごに なぜ自動テストを導入することになったのか なぜpytestを選んだのか どのように実装したのか 実装後はどうなったか/どうしていきたいか
©2023 ARISE analytics 9 前提 main release develop PRDアカウント STGアカウント
DEVアカウント SnowflakeはPRD, STG, DEVの3面構成(アカウントレベ ルで分離) Snowflakeのオブジェクトは基 本Terraformで管理 Terraformコードのリポジトリは GitHubで管理 リポジトリはGit-flowで開発 各環境に対応するブランチに対し てPR作成をするとplan, マージ をするとapplyされる apply後、実際にSnowsightに て対象環境にアクセスし、挙動を 確認する terraform init terraform plan terraform apply Terraformリポジトリ GitHub Actions 動作 検証
©2023 ARISE analytics 10 なぜ自動テストを導入することになったのか ※ TerraformにてクラウドプロバイダやSaaSプロバイダ、その他のAPIとやり取りするために利用するプラグインのこと 手作業でのテストがつらい 試験対象のリソースが大量なので、手作業での確認工数がかかる
商用環境は、セキュリティ上の理由から、オフィス内の特定の区画で、特定 端末を用いての操作が必要なので、ハードルが高い Snowflake向けの Terraformプロバイダ(※)の バージョンアップが控えていた プロバイダのバージョンアップをしないと、発生する不具合や作成できないリ ソースがある プロバイダのバージョンアップをすると、ロールに紐づくGRANT設定に関する Terraformコード修正を書き換える必要が生じる
©2023 ARISE analytics 11 なぜpytestを選んだのか Pythonと Snowflakeの親和性 Pythonコネクタが利用可能
Snowparkも利用可能 Snowflake公式のブログにもpytest x Snowflakeの利用事例があった チームメンバーの スキルマッチ チーム内にPython&pytestの利用経験があるメンバーがいた
©2023 ARISE analytics 12 どのように実装したのか main release develop PRDアカウント STGアカウント
DEVアカウント terraform init terraform plan terraform apply Terraformリポジトリ GitHub Actions 動作 検証 SnowflakeはPRD, STG, DEVの3面構成(アカウントレベ ルで分離) Snowflakeのオブジェクトは基 本Terraformで構成管理 Terraformコードのリポジトリは GitHubで管理 リポジトリはGit-flowで開発 各環境に対応するブランチに対し てPR作成をするとplan, マージ をするとapplyされる apply後、実際にSnowsightに て対象環境にアクセスし、挙動を 確認する
©2023 ARISE analytics 13 どのように実装したのか main release develop PRDアカウント STGアカウント
DEVアカウント pytestをGitHub Actions の1ステップとして定義 各環境でterraformを実行 後にSnowflake上でオブ ジェクトが構築された状態で pytestを実行 terraform init terraform plan terraform apply Terraformリポジトリ GitHub Actions pytest
©2023 ARISE analytics 14 どのように実装したのか Snowflakeへの接続処理を、セッションスコープ のfixtureで定義 • fixtureとは、テストにおける事前処理/事後
処理を定義できる機能 • 事前処理・事後処理をどの単位で実施する かをscopeという引数で設定可能 テストケースごとにロールをリセットすることを強制す るため、PUBLICロールに切り替える処理を、関 数スコープのfixtureで定義 pytestの中で実行されるクエリを区別できるよう、 接続時にセッションのパラメータとして、クエリタグ =PYTESTの値をセット。
©2023 ARISE analytics 15 どのように実装したのか GRANTでの権限設定周りをメインにpytestを実 装 テーブルに対してのSELECTやウェアハウスに対し
てのUSEなど、テストでの実行に問題がないもの については、機能ロールベースで実際に実行して 動作確認を行う parametrizeデコレータを利用することで、同 一テストケースを、異なる複数のパラメータで実行 可能
©2023 ARISE analytics 16 どのように実装したのか タスクやストアドプロシージャなどは、実際にテスト 内で実行すると、データに変更が入り、テストの事 後処理が煩雑になるため、実行はしない。
アクセスロールへの権限付与確認 x アクセスロー ルが機能ロールに継承されていることの確認 の掛 け合わせで機能ロールへの権限確認を実施する。
©2023 ARISE analytics 17 どのように実装したのか タスクやストアドプロシージャなどは、実際にテスト 内で実行すると、データに変更が入り、テストの事 後処理が煩雑になるため、実行はしない。
アクセスロールへの権限付与確認 x アクセスロー ルが機能ロールに継承されていることの確認 の掛 け合わせで機能ロールへの権限確認を実施する。
©2023 ARISE analytics 18 実装後はどうだったか/どうしていきたいか あいう Try テスト観点/方法のブラッシュアップ!
pytestの並列数増加! snowparkやsnowflake-vcrpyなどの活用に よる処理高速化! Keep 手作業工数の大幅削減! デグレ無しでTerraformプロバイダバージョン アップ完遂!(約200のGRANT設定変更) Problem テストコードに実装不備があると、バグは発生し うる… テストコードの実行時間は長い…
19 ©2023 ARISE analytics 目次 2 背景と目的 1 3 4
自己紹介 事例紹介 さいごに
©2023 ARISE analytics 20 ARISE analytics とは? • 社名 •
資本構成 • 営業開始 • 所在地 • 役員 • 社員数 : 株式会社ARISE analytics : KDDI 85% Accenture 15% : 2017年4月1日 : 渋谷区 渋谷2-21-2 渋谷ヒカリエ31F : 代表取締役社長 家中 仁 / KDDI :152名/業務委託・派遣含め約500名 ※2023年9月1日現在 会社概要 事業領域 国内最大級350名を超えるデータサイエンティストが活躍
©2023 ARISE analytics 21 ARISE analytics とは? • 社名 •
資本構成 • 営業開始 • 所在地 • 役員 • 社員数 : 株式会社ARISE analytics : KDDI 85% Accenture 15% : 2017年4月1日 : 渋谷区 渋谷2-21-2 渋谷ヒカリエ31F : 代表取締役社長 家中 仁 / KDDI :152名/業務委託・派遣含め約500名 ※2023年9月1日現在 会社概要 事業領域 国内最大級350名を超えるデータサイエンティストが活躍 >たばにき これは再掲ですかね。掲載しない予で すかね。 →再掲です!最後ダメ押しでアピー ル予定です! ARISE analyticsはデータアーキテクト職を積極採用中です。 SnowflakeやAWS/GCPを用いたデータ基盤に取り組みたい方々や、 大規模なデータ処理基盤の実装に関わりたい方々など、 ご興味ある方はぜひ採用ページをご覧ください!
None