Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Snowflake x Terraformに自動テストを導入した話

Snowflake x Terraformに自動テストを導入した話

KDDI SnowVIllage

November 17, 2023
Tweet

More Decks by KDDI SnowVIllage

Other Decks in Technology

Transcript

  1. ©2023 ARISE analytics
    株式会社ARISE analytics
    田畑 幹
    Snowflake x Terraformに
    自動テストを導入した話
    2023/11/10

    View full-size slide

  2. 2
    ©2023 ARISE analytics
    目次
    2
    背景と目的
    1
    3
    4
    自己紹介
    事例紹介
    さいごに

    View full-size slide

  3. 3
    ©2023 ARISE analytics
    目次
    2
    背景と目的
    1
    3
    4
    自己紹介
    事例紹介
    さいごに

    View full-size slide

  4. 4
    ©2023 ARISE analytics
    背景と目的
    背景
     DMP基盤をSnowflakeで構築・運
    用中
     Snowflakeの各種オブジェクトは
    Terraformで構築/構成管理をして
    いる
     その品質担保に自動テストツールとし
    てpytestを導入した
    本日の目的
     Snowflake x Terraformでの構成
    に自動テストツールとしてpytestを導
    入した事例について、経緯や実装概
    要、今後の展望を共有する

    View full-size slide

  5. 5
    ©2023 ARISE analytics
    目次
    2
    背景と目的
    1
    3
    4
    自己紹介
    事例紹介
    さいごに

    View full-size slide

  6. 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基盤構築
    趣味・好きなもの
    旅行、バイク、日本酒、ダイビング

    View full-size slide

  7. ©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名を超えるデータサイエンティストが活躍

    View full-size slide

  8. 8
    ©2023 ARISE analytics
    目次
    2
    背景と目的
    1
    3
    4
    自己紹介
    事例紹介
    さいごに
     なぜ自動テストを導入することになったのか
     なぜpytestを選んだのか
     どのように実装したのか
     実装後はどうなったか/どうしていきたいか

    View full-size slide

  9. ©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
    動作
    検証

    View full-size slide

  10. ©2023 ARISE analytics
    10
    なぜ自動テストを導入することになったのか
    ※ TerraformにてクラウドプロバイダやSaaSプロバイダ、その他のAPIとやり取りするために利用するプラグインのこと
    手作業でのテストがつらい
     試験対象のリソースが大量なので、手作業での確認工数がかかる
     商用環境は、セキュリティ上の理由から、オフィス内の特定の区画で、特定
    端末を用いての操作が必要なので、ハードルが高い
    Snowflake向けの
    Terraformプロバイダ(※)の
    バージョンアップが控えていた
     プロバイダのバージョンアップをしないと、発生する不具合や作成できないリ
    ソースがある
     プロバイダのバージョンアップをすると、ロールに紐づくGRANT設定に関する
    Terraformコード修正を書き換える必要が生じる

    View full-size slide

  11. ©2023 ARISE analytics
    11
    なぜpytestを選んだのか
    Pythonと
    Snowflakeの親和性
     Pythonコネクタが利用可能
     Snowparkも利用可能
     Snowflake公式のブログにもpytest x Snowflakeの利用事例があった
    チームメンバーの
    スキルマッチ
     チーム内にPython&pytestの利用経験があるメンバーがいた

    View full-size slide

  12. ©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に
    て対象環境にアクセスし、挙動を
    確認する

    View full-size slide

  13. ©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

    View full-size slide

  14. ©2023 ARISE analytics
    14
    どのように実装したのか
     Snowflakeへの接続処理を、セッションスコープ
    のfixtureで定義
    • fixtureとは、テストにおける事前処理/事後
    処理を定義できる機能
    • 事前処理・事後処理をどの単位で実施する
    かをscopeという引数で設定可能
     テストケースごとにロールをリセットすることを強制す
    るため、PUBLICロールに切り替える処理を、関
    数スコープのfixtureで定義
     pytestの中で実行されるクエリを区別できるよう、
    接続時にセッションのパラメータとして、クエリタグ
    =PYTESTの値をセット。

    View full-size slide

  15. ©2023 ARISE analytics
    15
    どのように実装したのか
     GRANTでの権限設定周りをメインにpytestを実

     テーブルに対してのSELECTやウェアハウスに対し
    てのUSEなど、テストでの実行に問題がないもの
    については、機能ロールベースで実際に実行して
    動作確認を行う
     parametrizeデコレータを利用することで、同
    一テストケースを、異なる複数のパラメータで実行
    可能

    View full-size slide

  16. ©2023 ARISE analytics
    16
    どのように実装したのか
     タスクやストアドプロシージャなどは、実際にテスト
    内で実行すると、データに変更が入り、テストの事
    後処理が煩雑になるため、実行はしない。
     アクセスロールへの権限付与確認 x アクセスロー
    ルが機能ロールに継承されていることの確認 の掛
    け合わせで機能ロールへの権限確認を実施する。

    View full-size slide

  17. ©2023 ARISE analytics
    17
    どのように実装したのか
     タスクやストアドプロシージャなどは、実際にテスト
    内で実行すると、データに変更が入り、テストの事
    後処理が煩雑になるため、実行はしない。
     アクセスロールへの権限付与確認 x アクセスロー
    ルが機能ロールに継承されていることの確認 の掛
    け合わせで機能ロールへの権限確認を実施する。

    View full-size slide

  18. ©2023 ARISE analytics
    18
    実装後はどうだったか/どうしていきたいか
    あいう
    Try
     テスト観点/方法のブラッシュアップ!
     pytestの並列数増加!
     snowparkやsnowflake-vcrpyなどの活用に
    よる処理高速化!
    Keep
     手作業工数の大幅削減!
     デグレ無しでTerraformプロバイダバージョン
    アップ完遂!(約200のGRANT設定変更)
    Problem
     テストコードに実装不備があると、バグは発生し
    うる…
     テストコードの実行時間は長い…

    View full-size slide

  19. 19
    ©2023 ARISE analytics
    目次
    2
    背景と目的
    1
    3
    4
    自己紹介
    事例紹介
    さいごに

    View full-size slide

  20. ©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名を超えるデータサイエンティストが活躍

    View full-size slide

  21. ©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を用いたデータ基盤に取り組みたい方々や、
    大規模なデータ処理基盤の実装に関わりたい方々など、
    ご興味ある方はぜひ採用ページをご覧ください!

    View full-size slide