Chapter 01

はじめに

nagahama
nagahama
2023.04.02に更新

◉本書の目的

本書では、ユーザー、ロール、データベース、スキーマをはじめとするSnowflakeのリソースをTerraformで管理するための方法を行うための方法を紹介します。TerraformのようなIaCツールを使わなくても、Snowflakeのコンソール画面でSQLを直接実行することで同様のことは実現可能です。しかしながら、リソース管理の際の「視認性」や「再利用性」を考えると、コードとしてまとめてリソースを管理し、GitHubなどでバージョン管理しながら変更を確認できる点でTerraformを使うことに大きなメリットがあると考えられます。また、複数のプロジェクトで横断的にソフトウェアを開発するような現場では、特に「再利用性」が求められます。そのような場合には、既存コードを使い回すことによって、圧倒的に効率良く開発を進めることができるでしょう。

◉対象とする読者

本書は、Snowflakeをプロダクト開発で利用している「データエンジニア」や「ソフトウェアエンジニア」を読者の対象としています。

  • 「データウェアハウスとしてSnowflakeの利点を理解はしているが構成の管理方法がわからない」
  • 「データウェアハウスをの変更を管理するためのCI/CDの設定方法で悩んでいる」

といった方が参考にできる内容を執筆しています。

本書を読み進める上で、Snowflakeの基礎的な知識があるとより深い理解に繋がることでしょう。Snowflake社が執筆・管理している公式ドキュメントや、Snowflakeユーザー・コミュニティが発信しているブログなども参考に情報を収集してみてください。

私自身も、開発で得た知見などをブログで発信しているので、それらの記事も参考にしていただければ幸いです。

◉取り扱う内容

本書で扱う主な内容は以下の通りです。

  • Terraform × Snowflake
  • GitHub Actions
  • Golang migrate

本書のタイトルの通り、Snowflakeのリソース管理はTerraformで実行します。実際の現場のようなチームで開発することを前提として、Terraformの実行には「GitHub Actions」を使用します。GitHub Actionsを使うことでTerraformの実行が一箇所で管理できるようになります。
また、Snowflakeのテーブル管理・マイグレーションには、「Golang migrate」を使用します。

本書に掲載する情報をもとに、「Snowflake × Terraform」を使った開発にぜひ取り組んでみてください。