WindowsAzureには次のセットアップがあります。
- 独自の「テスト」データベースに接続された「テスト」ホスト型サービス。
- 独自の「本番」データベースに接続された「本番」ホスト型サービス。
ビルドがテストで検証され、本番環境に移行する準備ができたら、本番環境でホストされるサービスで「ステージング」デプロイメントを起動し、簡単なスモークテストを実行して、新しいビルドが完全に壊れていないことを確認します。ステージングインスタンスは、本番環境にデプロイされる正確なビットでデプロイされるため、本番データベースと通信します。ステージングが祝福されたら、「VIPスワップ」ボタンを押すと、ビルドが本番環境でライブになります。すべてが良いです。
問題は、データベースモデルが変更されたときに発生します。コードファーストマイグレーションは完全に機能しています。新しい移行を追加し、パッケージマネージャーコンソールを使用してローカルに適用し、SQLスクリプトを生成して、新しいビルドをテストにプッシュするときにテストデータベースをアップグレードできます。問題は、ステージング/本番デプロイメントと一緒にコードファーストマイグレーションを使用する際のベストプラクティスは何ですか?モデルを変更してステージングに新しいビルドをデプロイすると、そのモデルに一致するデータベースが見つかることが期待されます。しかし、モデルの変更を本番データベースに適用すると、モデルが一致しないため、本番インスタンスは文句を言います。
ステージングスモークテストをスキップしました。ステージングにアップロードしてから、本番データベースを更新し、ほぼ同時に[VIPスワップ]ボタンを押します。次に、生産のスモークテスト。何かが大きく壊れている場合は、「VIPを交換」してデータベースの変更を元に戻します。
これを行うためのより良い方法はありますか、それともそれはほとんどそれですか?
ありがとう!