小規模なWebチームのローカルデータベース開発プロセスを設定する方法
バックグラウンド 私は、約4人のプログラマーと4人のデザイナーから成る小規模なWebチーム向けに新しい開発プロセスの作成に取り組んでいます。将来的にチームを成長させる可能性があることは明らかです。当社の製品は、当社が設計およびホストするクライアントWebサイトを強化する中央アプリケーションです。 以前は、1つの開発データベースを使用して、開発サーバーでFTPを介して作業していました。それは「働いた」*私たちのプロセスを成熟する時間ですので、しばらくの間、私たちは新たな方向に動いています。 Percona Server 5.5を使用していますが、これはデータベースにとらわれず、コストを低く抑えることを考えたものでなければなりません。 目標: 私は、以下を念頭に置いて、データベース開発のための継続的インテグレーション(CI)プロセスの作成を検討しています。 開発者には、開発コードを実行するためのデータのローカルコピーがあります データベース構造を以前の変更セットにロールバックできる 新機能スキーマの変更とスキーマ設計修正の変更を区別できる テストのためにデータベース構造をローカルで変更可能 初期コンセプト SVNとLiquiBaseを使用して以下のプロセスをスケッチしましたが、完全に削除され#4ます。 トランクから「開発」ブランチを作成する 中央の「開発」データベースサーバーは「開発」ブランチから実行されます ローカル開発者は、開発ブランチのスレーブとしてセットアップされます(#1上記を提供) LiquiBaseをチェンジは(この開発サーバーへのスレーブとして動作しているローカルマシンにトリクルダウンします)中央開発用データベースを更新するために、ポストcommitフックを実行する開発ブランチに定期的にコミットしている(LiquiBaseをが提供する#2上で) 機能またはスキーマの修正がQAに進む準備ができたら、DBA(me)は開発ブランチからトランクに適切な変更をマージします。この行為は、ステージングデータベースサーバーに適用するSQLスクリプトを作成します。 ステージングサーバーはTRUNKを反映する必要があります。TRUNKは、本番と同じ構造に加えて、QAにある変更を含む必要があります ステージングサーバーでsqlスクリプトを実行した後、変更に対していくつかのQAを実行します。 すべてが正常に見える場合は、構造にタグを付けます。これにより、DBAによって本番環境で手動で実行される.sqlスクリプトが生成されます(必要に応じてオフピーク時間)。 このプロセスでは、すべての開発者が同じ「開発」ブランチから実行する必要があります。つまり、データベーススキーマのバージョンは常に1つだけです(これが必要かどうかはわかりません)。 また、スキーマへの変更はローカルでテストできず、正しく行わないと他の開発者に影響を与える可能性があります。この環境では、開発者は新しいテーブルを追加するかもしれませんが、既存の構造を変更することはめったにありません。DBAとして、設計修正は私によって行われます。しかし、修正をローカルでテストできないことは、プロセスの最大の問題です。 上記のプロセスを微調整して、ローカル開発を可能にしながら、データの比較的最新のコピーを維持するにはどうすればよいですか(提案されたプロセスの複製によって提供されます)。先週までデータを最新にする必要はありません。 *「働いた」とは、それで十分であるが、PITAだったことを意味します。