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
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
【CEDEC2026】ゲームシナリオライターを支援するAIツール開発の実践 ― 設計とプロンプトの工夫 ―
cygames
PRO
1
770
変化の早いClaude Codeを 書籍に落とし込む
oikon48
7
1.3k
MIRU 2026 チュートリアル
keisuke198619
0
860
システム思考で問題に対処する
yussak
0
190
【5分でわかる】セーフィー エンジニア向け会社紹介
safie_recruit
0
53k
Forza Horizon 6 のテレメトリ機能で 自動運転に使えそうな学習データを集める話
henjin0
0
140
AIが自社のTableauを操作する世界へ:Tableau MCP超入門
tbtykk
0
120
20260807_第6回_関東kaggler会LT_claw系bot xangiと始める、"寂しくない" kaggle
sugupoko
0
180
強化学習「理論」入門
enakai00
3
3.6k
【CEDEC2026】グラフィックスエンジニアのためのニューラルシェーディング入門
cygames
PRO
0
120
AI時代の強いチームの作り方
yuukiyo
25
16k
モダンフロントエンド 開発研修
recruitengineers
PRO
3
540
Featured
See All Featured
We Analyzed 250 Million AI Search Results: Here's What I Found
joshbly
1
1.7k
Technical Leadership for Architectural Decision Making
baasie
3
470
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
52
6k
Are puppies a ranking factor?
jonoalderson
1
3.8k
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
32
4.2k
Bootstrapping a Software Product
garrettdimon
PRO
307
120k
How To Speak Unicorn (iThemes Webinar)
marktimemedia
1
520
Highjacked: Video Game Concept Design
rkendrick25
PRO
1
430
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
25
2k
職位にかかわらず全員がリーダーシップを発揮するチーム作り / Building a team where everyone can demonstrate leadership regardless of position
madoxten
64
56k
Music & Morning Musume
bryan
47
7.3k
ピンチをチャンスに:未来をつくるプロダクトロードマップ #pmconf2020
aki_iinuma
128
56k
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