2012-07-03 12 views
13

コードファーストの移行とステージング環境でテストするためのベストプラクティス:アズール:私は、Windows Azureの中で次のセットアップを持っている

  • 「テスト」独自の「テスト」データベースに接続ホスティングサービス。
  • "本番"ホストサービスが、それ自身の "本番"データベースに接続しています。

ビルドがテストに検証し、生産に行く準備ができているとき、私たちは生産ホスティングサービスでは、「ステージング」の展開をスピンアップし、新しいビルドがないことを確認するために迅速なスモークテストを行います完全に壊れた。ステージング・インスタンスは、本番環境にデプロイされる正確なビットでデプロイされるため、本番データベースと通信しています。ステージングが祝福されたら、「VIP Swap」ボタンを押して、ビルドを本番稼働中に実行します。すべてが良いです。

データベースモデルが変更されると問題が発生します。 Code First Migrationは完全に機能しています。新しい移行を追加し、パッケージマネージャコンソールでローカルに適用してから、新しいビルドをテストするためにテストデータベースをアップグレードするSQLスクリプトを生成することができます。問題は、ステージング/プロダクションの展開と一緒にコードファーストマイグレーションを使用する場合のベストプラクティスは何ですか?モデルの変更を含むステージングに新しいビルドをデプロイすると、そのモデルに一致するデータベースが見つかることが予想されます。しかし、モデルの変更を本番データベースに適用すると、そのモデルが一致しないためにプロダクションインスタンスが不満を持ちます。

私はステージングスモークテストをスキップしました。ステージングにアップロードしてから、本番データベースを更新し、同時に「VIPスワップ」ボタンを押します。その後、生産についての煙検査。何かが重大に壊れている場合は、「VIPを交換」を元に戻し、データベースの変更を元に戻します。

これを行うには良い方法がありますか、それともそれほどですか?

ありがとうございます!

+0

幸運いくつかがあれば、私は今考えることができる唯一のことは、「最新にアップグレードする」自動を無効にする、または自分のDbMigratorを広げていますステージングとプロダクションを区別する方法です。最善の方法は、ステージングデータベースをターゲットにしてアップグレードすることができ、別のDBをターゲットに交換するときです。しかし、スワップするときに何も起こらないので、どうしたらよいのか分かりません。 – FRoZeN

+0

これは本当に壊れています。ステージングと移行は互換性がありません。スワップする前にステージングWebサーバーを移行しウォームアップする方法はありません。運用Webサーバーは、移行が適用されるとすぐに停止します。私はエンティティフレームワークが漸進的な変更(例えばテーブルの追加)を処理できると仮定します。これを行う唯一の方法は、別のステージングデータベースを使用することです。 –

答えて

0

ベストプラクティスは何も見つかりませんでした。ユーザーが自分のプロジェクトに最適なものを使用していると思われ、そのために働いているようです。 1つのシナリオでは、前述のソリューションと同様のソリューションでしたが、プロダクションDBが空でステージングデータベースがEFコードで最初に作成され、移行が適用されています。テストが完了したら、スクリプトは後で本番環境に接続された別のデータベースに転送されました。

+0

ありがとうございます。私は行方不明だった魔法があると思っていたが、そうではないようだ。 – ManicBlowfish

0

私はAzure、EFなど、あなたのような話題に取り組んできました。私は現時点でどのようなシナリオがベストプラクティスであるのか分かりません。しかし、TFSやGithubの継続的な統合ツールを使用することは、展開のリスクを最小限に抑えるためには理にかなっていると思います。次の記事があなたに視点を提供することを願っています。

Click here

私は同じ問題を抱えている

関連する問題