Skip to main content

Database as Codeバージョン管理。レビュー。デプロイ。監査。

データベーススキーマをバージョン管理に置く。スキーマ変更はプルリクエストと CI/CD を通る — アプリケーションコードと同じ経路で。

Database as Code のアーキテクチャ

2 つのアプローチ。1 つの真実の源。

State ベース (宣言的)

スキーマ全体を 1 つのファイルとしてバージョン管理に置く。ツールがファイルと稼働中のデータベースを差分比較して同期する。真実の源は 1 つで、記述はシンプル。一方でデータマイグレーションは扱いにくい。Infrastructure as Code の標準的な方式。

Migration ベース (命令的)

スキーマ変更をバージョン付きのマイグレーションスクリプトとして書く。マイグレーションは決定的な順序で実行される。変更単位でレビュー可能、CI/CD でリプレイ可能。Database as Code の主流。

Bytebase における Database as Code

スキーマをコードで。変更をガバナンスで。

Bytebase は GitHub、GitLab、Bitbucket、Azure DevOps をデータベースに接続します。スキーマ変更はプルリクエストとして流れます。各変更は SQL レビュー、Lint、ポリシー適用をデプロイ前に実行します。マイグレーション履歴は Bytebase と VCS の両方に自動で記録されます。

1 つのワークフロー。すべてのデータベース。

Database as Code に関する質問

よくある質問。

Database as Code とは何ですか?
Database as Code とは、アプリケーションコードと同じ方法でデータベーススキーマをバージョン管理する運用です。スキーマ定義と変更スクリプトを Git リポジトリに置き、変更はプルリクエスト、コードレビュー、CI チェック、自動デプロイを通ります。結果として、すべてのデータベース変更がバージョン管理され、レビュー可能で、リプレイ可能な履歴になります。
State ベースと Migration ベース、どちらを選ぶべきですか?
Database as Code の主流は Migration ベースです。各スキーマ変更がバージョン付きスクリプトとして順番に適用される — 変更単位でレビューでき、CI/CD でリプレイできます。State ベースはスキーマ全体を 1 つのファイルとして保持し、データベースをそれに合わせて収束させます。これは Infrastructure as Code (Terraform、Kubernetes) と同じ方式ですが、データマイグレーションは表現しにくくなります。多くのチームはハイブリッド方式を採用します — 変更には Migration、真実の源には State ファイル。
Database as Code は既存の CI/CD で動きますか?
はい。アプリケーション CI/CD を回しているのと同じ Git ワークフローが、データベース CI/CD でも動きます。GitHub Actions、GitLab CI、Bitbucket Pipelines、Azure DevOps、Argo CD、Flux のすべてが、デプロイパイプラインの一部としてスキーママイグレーションを実行できます — 通常は適用前に SQL レビューや Lint のステップを挟みます。

データベース開発のスタンダードを体験する