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
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時代のコスト管理を考えよう〜明日から使える実践AWSノウハウ~
yoshimi0227
0
330
2026TECHFRESH畢業分享會 - AI 時代的人生存檔點
line_developers_tw
PRO
0
1.3k
iOS アプリの「これって不具合ですか?」を AI に調べてもらう
miichan
0
110
現場のトークンマネジメント
dak2
0
140
2026TECHFRESH畢業分享會 - 原生還是跨平台? App 開發踩坑實錄
line_developers_tw
PRO
0
1.3k
SONiCのLinuxベースを活かしたZabbix監視
sonic
0
230
白金鉱業Meetup_Vol.24_「AIエージェントは分けるほど良い」は本当か? / Is it true that “the more you divide AI agents, the better”?
brainpadpr
1
420
脆弱性対応、どこで線を引くか
rymiyamoto
1
420
クラウドファンディング版StackChan 3体(4体)をインタラクティブな体験型作品にして展示もした話 / スタックチャンお誕生日会2026
you
PRO
0
100
秘密度ラベル初心者が第1歩でつまづかないための「設計・運用」ポイント
seafay
PRO
0
310
FPC(フレキシブル)基板にZephyr実装してみた。
iotengineer22
0
130
データサイエンスを価値につなげるプロジェクト設計 〜 DS一年目が現場で得た気づき 〜
ysd113
1
290
Featured
See All Featured
Navigating Algorithm Shifts & AI Overviews - #SMXNext
aleyda
1
1.3k
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
47
8.2k
Mozcon NYC 2025: Stop Losing SEO Traffic
samtorres
1
260
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
37
6.5k
SEO for Brand Visibility & Recognition
aleyda
0
4.6k
Being A Developer After 40
akosma
91
590k
Dealing with People You Can't Stand - Big Design 2015
cassininazir
367
27k
Google's AI Overviews - The New Search
badams
0
1k
The Language of Interfaces
destraynor
162
27k
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
9
1.4k
B2B Lead Gen: Tactics, Traps & Triumph
marketingsoph
0
160
Why Mistakes Are the Best Teachers: Turning Failure into a Pathway for Growth
auna
0
160
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