データベーススキーマの変更
最新のソフトウェアは、データベースレイヤーを備えていることが一般的です。通常、データとデータの構造の両方を保存するリレーショナルデータベースが使用されます。継続的デリバリープロセスでは、そのデータベースの変更が必要となることがよくあります。リレーショナルデータベースの変更の処理には特別な考慮が必要であり、アプリケーションバイナリをデプロイする際とは異なる課題が発生します。通常、アプリケーションバイナリをアップグレードする場合、アプリケーションを停止し、アップグレードを実行し、その後再起動します。アプリケーションの外部で処理されるアプリケーションの状態を気にする必要はありません。
データベースをアップグレードする場合は、データベースには多くの状態が含まれながら比較的少ないロジックと構造が含まれているため、状態を考慮する必要があります。
変更が適用される前後のデータベーススキーマは、異なるバージョンのデータベースとして見なす必要があります。Liquibase や Flyway などのツールを使用してバージョンを管理することができます。
一般的に、これらのツールは、以下の方法に類似したものを採用しています。
-
データベースのバージョンを保存するテーブルをデータベースに追加します。
-
データベースの変更コマンドを追跡し、バージョン管理された変更セットにそれらを束ねます。Liquibase の場合、これらの変更は XML ファイルに保存されます。Flyway は、わずかに異なる方法を採用し、変更セットは独立した SQL ファイルとして扱われるか、より複雑な移行のためには独立した Java クラスとして扱われる場合もあります。
-
Liquibase は、データベースのアップグレードを要求されると、メタデータテーブルをチェックし、最新のバージョンを使用してデータベースを最新化するために実行する変更セットを決定します。