Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
Snowflake x Terraformに自動テストを導入した話
Search
KDDI SnowVIllage
November 17, 2023
Technology
700
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
320
Other Decks in Technology
See All in Technology
背中から、背中へ ー 社外コミュニティで学んだ「雑に背中を押す」という恩送り ー / easygoing encouragement and pay forward to community
naitosatoshi
0
330
[FECONF-2026] 신대륙을 향한 카카오페이증권 프론트엔드 항해기 (이주승)
l1ghthouse
0
210
正解のない研修に放り出されて / Being thrown into a training program with no right answers
ohnoeight
1
150
AWSセキュリティで活用するAI機能
cmusudakeisuke
1
320
局所最適は悪ではない。壊れているのは指標です。量と質を同時に見る先行指標の設計
recruitengineers
PRO
2
1.2k
Obsidian Vault Architectures
x5gtrn
PRO
0
170
データマネジメント × 法務で作りあげる、 freeeの新しいデータガバナンスへの軌跡
freee
PRO
1
430
【データ横丁主催】AI エージェント時代のTranslytical Data Platform
shisyu_gaku
0
300
「私が一番顧客に詳しい」を捨てる~ 全員が一次情報に精通する開発チームをつくり、PMが次のボトルネックへ染み出すまで
kaminashi
4
2.5k
AIに任せられるFlutterコードベースを作る 〜仕様をコードで表し、ハーネスで守る〜
myohei
1
160
Vue.jsのGitHubから学ぶ意思決定
yut0naga1_fa
1
290
Kiro Crewで「みのるん式」仕事術やってみた
minorun365
PRO
3
1.1k
Featured
See All Featured
Building Experiences: Design Systems, User Experience, and Full Site Editing
marktimemedia
1
640
Un-Boring Meetings
codingconduct
0
460
The Web Performance Landscape in 2024 [PerfNow 2024]
tammyeverts
12
1.3k
The Impact of AI in SEO - AI Overviews June 2024 Edition
aleyda
6
1.2k
ピンチをチャンスに:未来をつくるプロダクトロードマップ #pmconf2020
aki_iinuma
128
56k
The Illustrated Children's Guide to Kubernetes
chrisshort
51
53k
How To Stay Up To Date on Web Technology
chriscoyier
790
250k
ReactJS: Keep Simple. Everything can be a component!
pedronauck
666
130k
Context Engineering - Making Every Token Count
addyosmani
9
1.2k
JAMstack: Web Apps at Ludicrous Speed - All Things Open 2022
reverentgeek
1
650
Stop Working from a Prison Cell
hatefulcrawdad
274
21k
Neural Spatial Audio Processing for Sound Field Analysis and Control
skoyamalab
0
580
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