いくつかの背景...
私たちは初めてAzureに参入し、赤ちゃんのステップでそれを実行しようとしています。今のところ、最初のアプリは、リクエストを処理するためのキューを監視するワーカーロール(メールの送信や画面のスクレイピングの実行など)であり、オンプレミスのMVCアプリとWCFサービスからキューに挿入するだけです。後でMVCアプリとWCFサービスをAzureに移動します。
私たちの開発ワークフローは基本的に次のようになります(重要でない方法で多少変更されています)。
- ローカルおよび一部の共有サーバーで開発します。ソース管理にチェックインします。
- 15分ごとに、ビルドサーバーがビルドされ、「開発」環境にデプロイされます(CIを兼ねて、ローカル以外の「開発」環境に到達する必要がある場合に備えます)
- テクニカルテスターは、ビルドサーバーを手動でトリガーして、最後に成功した「開発」ビルドをテスト環境にデプロイします(または、データベースを含む/除外する以前にデプロイされたテストビルド)。
- テクニカルテスターとビジネステスターは、ビルドサーバーを手動でトリガーして、最後に成功した「テスト」ビルド(または、データベースを含む/除外する以前にデプロイされたテストビルド)をQA環境にデプロイします。
- ある時点で、QAが展開を承認したチェンジセットをマージします。
- その後、本番ビルドサーバーはこのバージョンをステージングにデプロイし、その後本番環境にデプロイします(並列/独立環境でN回ホストします)。
お分かりのように、本番環境に到達する前に内部サポート担当者が攻撃するために、内部でホストされているバージョンのアプリがいくつかあります。これらのAzureへの依存度をかなり低くしたいと思います。サーバーの依存関係を完了する必要がないため、Azure Queuesやその他のメカニズムを引き続き使用しますが、ビルドサーバーをAzureにデプロイする必要はありません。これらの環境のすべてに対して(あるいは、すべてのホスティングに対して料金を支払います)。
では、Azureにデプロイされるコードを実際にテストする方法で、オンプレミスでワーカーロールを合理的にホストするにはどうすればよいでしょうか。
提案されているオプションの1つは、ラッパー/ファサードとしてワーカーロールを作成し、クラスライブラリ内ですべての実際の作業を実行することです。これが私たちの計画でした。ただし、これを「ホスト」できるようにするためのフォローアップは、スケジュールされたタスクまたはウィンドウとして実行できる方法で、ワーカーロールと同じ作業を実行する2番目のラッパー/ファサードアプリケーションを作成することです。サーバ。最終的に、プロジェクト全体がステージングに到達するまでテストされないため、このオプションは好きではありません。
実際に参照するクラスライブラリを呼び出す代わりにRun()
、ワーカーロールの関数を呼び出す2番目のラッパー/ファサードアプリケーションを作成する場合と同様のことを行うことは可能ですか?