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
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
KDDI SnowVIllage
November 17, 2023
Technology
680
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
人とエージェントが高め合う協業設計
kintotechdev
0
450
ファミコンでPHPを動かす / PHP on the Famicom
tomzoh
2
540
シンガポールで登壇してきます
yama3133
0
300
OpenTelemetryにおけるGoのゼロコード・コンパイル時計装について #fukuokago
quiver
0
170
DatabricksにおけるMCPソリューション
taka_aki
1
310
AI時代のYAGNI:「爆速で無駄になった機能」からの学び / 20260720 Naoki Takahashi
shift_evolve
PRO
3
450
全社でのソフトウェアサプライチェーン攻撃対策をやってみた with Takumi Guard
z63d
0
110
設計レビューとAIハーネスで向き合う AIが生み出した新しいボトルネックの対処法 / Design Reviews and AI Harnesses Against New Bottlenecks Created by AI
nstock
1
230
全員がリーダーである世界へ キリマンジャロ登頂とシェアド・リーダー
jinwatanabe
0
110
「早く出す」より「事業に効く」 ── 顧客の業務サイクルから逆算するAI時代の二重ループ開発と「変化の設計者」 / devsumi2026
rakus_dev
1
510
kaonavi Tech Night#1
kaonavi
0
130
最適な自走を最小限の支援で — M&Aで拡大する組織で少人数SREが挑んだ1年 / SRE NEXT 2026
genda
0
1.6k
Featured
See All Featured
Leo the Paperboy
mayatellez
8
1.9k
The Curious Case for Waylosing
cassininazir
1
430
Abbi's Birthday
coloredviolet
3
8.7k
HTML-Aware ERB: The Path to Reactive Rendering @ RubyCon 2026, Rimini, Italy
marcoroth
3
350
Balancing Empowerment & Direction
lara
6
1.2k
Rebuilding a faster, lazier Slack
samanthasiow
85
9.6k
Kristin Tynski - Automating Marketing Tasks With AI
techseoconnect
PRO
0
370
Chasing Engaging Ingredients in Design
codingconduct
0
240
Designing Powerful Visuals for Engaging Learning
tmiket
1
450
What Being in a Rock Band Can Teach Us About Real World SEO
427marketing
0
1k
Google's AI Overviews - The New Search
badams
0
1.1k
The agentic SEO stack - context over prompts
schlessera
0
850
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