[レポート]BUILD TOKYO ONLINE:Snowflake DevOpsで開発生産性を加速させよ
2024.12.17
さがらです。
2024年12月17日に、Snowflakeの開発者向けのカンファレンスである「BUILD TOKYO ONLINE」が開催されました。
本記事はその中のでセッション「Snowflake DevOpsで開発生産性を加速させよ」のレポート記事となります。
登壇者
Snowflake合同会社
セールスエンジニアリング統括本部
セールスエンジニア
増田 嵩志 氏
内容
- データベース領域におけるDevOpsの課題
- アプリケーション開発とは異なる課題がある
- DevOpsの考えに基づいて自動化をすることで、より生産性を高めることができる
- 既存のGitHubなどのリポジトリと統合可能。EXECUTE IMMEDIATE FROMで、Gitリポジトリ内で定義したコードを実行可能
- CREATE OR ALTER:DevOpsでは宣言的に定義することが必要なので、それに対応できる
- Python API経由でオブジェクトを定義することも可能
- Gitリポジトリと連携して、様々なアセットを実行できる
- SnowflakeからGitプロバイダーのAPIを叩く仕様となっている
- Streamlit、Snowpark Container Services、などのオブジェクトをビルド・デプロイできるCLIツール
- オブジェクトが無いときは新規作成、あるときは設定値の変更だけ行う
- Gitリポジトリまたはステージから直接スクリプトを実行
- Snowflake Python APIは、pip install snowflakeで簡単にインストールできる
- これまで紹介した機能で作れるサンプルアーキテクチャ
デモ
※ここから投影画面が黄色くなっていたため、スクリーンショットの画像が黄色くなっております。(ブルーライトカット機能がスケジュールで有効化されたと推測しています。)
- デモ対象のアーキテクチャ
- 各種オブジェクトを定義
- 作成されたGitリポジトリ
- 連携先のGitHubリポジトリ
- 新しいブランチを作成
- Snowsight上で取得ボタン押すことでPullコマンドと同じことができ、作成したブランチも確認できる
- SnowflakeでSQLスクリプトを実行する際は、Jinjaテンプレートを利用できる
- Jinjaは、Pythonで利用できるテンプレートエンジン
- 変数を埋め込んだり、条件分岐などができる
- 実行するSQLスクリプト(Jinjaテンプレートで構成)
- 指定した変数に応じた、ノートブックが出来る
- SQLスクリプト実行前に、Devスキーマにはなにもないことを確認
- EXECUTE IMMEDIATE FROMコマンドを実行
- USING句で変数の値を指定しているのがポイント
- コマンド実行後、指定した変数に応じたノートブックが出来ていることがわかる
- NotebookとGitの連携
- 編集すると「M」マークが付く
- Notebookの変更をGitリポジトリのDevブランチにプッシュ
- プルリクエストを発行し、Mainにマージ
- Mainブランチにプッシュされたことをトリガーに、GitHub Actionsが動く
- GitHub Actionsのコード内容
- Snowflake CLIを用いて、先程のSQLコマンドの変数を変えてPRODに反映させるようにしている
- 先程のGitHub Actionsのコードにより、SnowflakeにPRODのprefixがついたNotebookがデプロイされた
まとめ
- SnowflakeでのDevOpsの機能を紹介してきた
- 皆様の開発生産性の向上に寄与できると嬉しい