私が取り組んでいるプロジェクトは、データベースとコードをアジャイルにし、一緒に構築してデプロイできるようにするためのソリューションを考え出そうとしていました。
アプリケーションはコードとデータベーススキーマ、およびデータベースコードテーブルの組み合わせであるため、コードと一緒にバージョン管理されたデータベースがない限り、アプリケーションの完全なビルドを実際に行うことはできません。
アジャイル/スクラム環境でコードと一緒にデータベース開発を行うための優れたアジャイル手法をまだ思い付くことができていません。
これが私の要件のいくつかです:
- システムの完全なビルドに対応するsvnリビジョン#を使用できるようにしたい。
- データベースのソース管理にバイナリファイルをチェックインしたくありません。
- 開発者は、コードを継続的インテグレーションサーバーにコミットし、システム全体とデータベースを一緒に構築できる必要があります。
- ビルドサーバーで元のビルド以外の再構築を行わずに、さまざまな環境への展開を自動化できる必要があります。
(更新)もう少し説明するために、ここにいくつかの情報を追加します。
膨大な量のコードを含むレガシープロジェクトであるため、OR/Mツールはありません。アジャイルデータベースの設計情報を読みましたが、そのプロセスは単独で機能しているようですが、アクティブなコード開発と組み合わせることについて話しています。
これが2つのシナリオです
開発者は、データベースの変更を必要とするコード変更をチェックインします。自動ビルドが失敗しないように、開発者はデータベースの変更を同時にチェックインできる必要があります。
開発者はDBの変更をチェックインします。これにより、コードが破損するはずです。自動ビルドを実行して失敗する必要があります。
最大の問題は、これらのものがどのように同期するかです。「データベースの変更をチェックインする」などのことはありません。現在、DB変更の適用は、コード変更が絶えず行われている間、誰かがしなければならない手動プロセスです。それらは一緒に作成され、一緒にチェックされる必要があります。ビルドシステムはシステム全体をビルドできる必要があります。
(更新2)ここにもう1つ追加します:
本番環境を停止することはできません。パッチを適用する必要があります。本番データベース全体を再構築することは受け入れられません。