【フライウェイ】

Flyway とは?

💡 データベースに「Git」を——スキーマ変更をバージョン管理する渡り鳥
📌 このページのポイント
Flyway マイグレーションの仕組み SQLファイル V1__create_users.sql V2__add_email.sql V3__add_orders.sql V4__add_index.sql . 順番に 適用 Flyway バージョン確認 未適用を検出 順番に実行 履歴を記録 データベース users テーブル ✓ email カラム ✓ orders テーブル (NEW) index 追加 (NEW) flyway_schema_history テーブルで適用済みバージョンを管理
Flyway はSQLファイルを番号順にDBへ適用する
ひよこ ひよこ

Flywayって何をするツールなの?

ペンギン先生 ペンギン先生

データベースの構造(テーブルカラム)の変更を、バージョン管理しながら適用するツールだよ。ソースコードGitで管理するように、DBの変更もきちんと順番に追跡できるんだ

ひよこ ひよこ

なんでDBの変更をバージョン管理する必要があるの?

ペンギン先生 ペンギン先生

チーム開発だと「誰がいつどんなテーブルを変更したか」が分からなくなるんだ。開発環境と本番環境でDBの構造がずれて障害が起きることもある。Flywayを使えば全員が同じ手順でDBを更新できるから、そういったトラブルを防げるよ

ひよこ ひよこ

具体的にはどうやって使うの?

ペンギン先生 ペンギン先生

V1__create_users.sqlみたいに「V+番号+説明」の命名規則でSQLファイルを作るんだ。Flywayはファイル番号の順番どおりにSQLを実行してくれるよ。どこまで適用したかはflyway_schema_historyというテーブルで管理されるんだ

ひよこ ひよこ

間違ったマイグレーションを適用しちゃったらどうなるの?

ペンギン先生 ペンギン先生

基本的にFlywayは「前に進むだけ」で、ロールバック機能は有料版(Teams/Enterprise)でのみ提供されているんだ。だから本番適用前にステージング環境で必ず検証するのがベストプラクティスだよ

ひよこ ひよこ

Liquibaseっていう似たツールもあるみたいだけど?

ペンギン先生 ペンギン先生

いい比較だね。FlywayはSQLファイルをそのまま書く「SQLファースト」のアプローチで、SQLに慣れた人にとって学習コストが低いのが強み。LiquibaseXMLYAMLで変更を定義する「抽象化」アプローチで、複数のDB製品に対応しやすいんだ。Java/Spring Bootプロジェクトではどちらも定番だけど、シンプルさを重視するならFlyway、柔軟性を重視するならLiquibaseという選び方が多いよ

ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「Flyway」って出てきたら「DBスキーマバージョン管理ツール」と思えればだいたいOK!
📖 おまけ:英語の意味
「Flyway」 = 渡り鳥の飛行ルート
💬 渡り鳥が決まったルートを飛ぶように、マイグレーションを決まった順序で適用していくイメージから名付けられたよ
← 用語集にもどる