2011-08-28 24 views
5

我正在嘗試爲我公司的應用程序套件遷移到Azure提供一個有效的開發/測試/ QA環境。但是,我正在執行對我們的限制,即我們的dev/test/qa /等。環境實際上是託管在本地,並通過構建服務器(如CC.NET,TeamCity,Jenkins等)進行部署。這是一個有效且可能的Azure QA環境嗎?

在這樣的「測試環境」中,我們需要能夠觸發部署未發佈代碼(和數據)的特定快照,供QA和業務專業團隊測試技術測試和業務驗收測試。顯然,所有這些人都不會在Visual Studio中編譯和打F5來做這個測試,所以我們需要一個部署環境。在我們的SDLC中,我們實際經歷了〜4個這樣的環境,然後才進入舞臺和製作。總之,我們需要低開銷(自動化部署)和易於重現的流程。

在規劃這個環境時,「如何承載Azure服務」的問題顯然是最難的部分。那麼讓我們來看看Azure的每個部分。斜體的選項是我們想要的選項。

  • Web角色好,IIS可以更多或更少的處理這些對我們(至少夠開發/測試的情況 - 所有,但真正負載測試,明確我們不得不在Azure中,這很好)。
  • 工人角色我們在這裏有兩個選擇,看來。首先是擁有一個Windows服務的「包裝應用程序」,我們可以使用它來託管我們的工作人員角色所要求的DLL功能(畢竟,我們真正的工作人員角色項目不應該只是一個配置文件和調用DLL工作的〜4行代碼)。該選項有效,但需要一些非常不同的應用程序代碼和部署代碼管理/維護。 第二種選擇是使用Azure計算模擬器。只要您的角色工作人員不需要監視外部端口或任何東西,就可以工作。在我們的例子中,我們的工作角色只需要監視隊列,然後訪問各種資源。此問題涉及不同的構建腳本,因爲將自動部署到Azure模擬器的唯一方法是在承載Azure Emultor的計算機上運行CSPackCSRun,該計算機可能不是您的構建服務器。正因爲如此,你將不得不做一些遠程腳本來完成這一點。
  • VM角色我們真的不關心這些,所以我完全忽略了測試的這一方面。
  • 隊列在這裏,我們有3個選項。首先是使用MSMQ。因爲這需要我們沒有的完全不同的代碼庫(或者至少圍繞不同的代碼庫進行抽象),所以我沒有考慮這個選項。其次是讓隊列保持在Azure中,因爲它們很小/便宜。我們實際上暫時這樣做直到我們可以嘗試第三種方案。 第三個選項是使用Azure存儲模擬器。我不確定,但我相信這個選項只會允許在本地機器上運行的服務訪問存儲對象。對於隊列,我們​​的應用程序代碼是實際「部署」隊列的代碼,所以只要我們的應用程序代碼實際在承載Azure存儲模擬器的服務器上運行,就應該沒問題。
  • 在這裏,我們有3個選項。第一個是我討厭的,那就是使用數據庫並在其中創建一個表來訪問這些表。我沒有考慮這個選擇。其次是將表保存在Azure中。我不喜歡這樣,因爲對於那些可能存儲大量數據(每條記錄高達1MB)的數據來說,這是很多來回的。雖然Queues非常輕巧便宜,但桌面成本可以很快加起來。 這使我們可以使用Azure存儲模擬器進行第三種選擇。我不確定,但我相信這個選項只會允許在本地機器上運行的服務訪問存儲對象。我仍然不明白模擬器中的所有優點/缺點表。
  • Blob在這裏,我們真的有2個選項。第一個是糟糕的,這是讓他們在Azure。這些很可能是相當大的文件,所以這是不明智的。 所以第二個選項再一次是使用Azure存儲模擬器。我認爲這是我們需要做的。

所以我們既然已經MVC應用程序(Web角色),WCF Web服務(Web角色),隊列,表,斑點和工作者角色由隊列,但訪問表,斑點觸發,WCF網絡服務,這似乎是一種合理的方式來託管我們的內部QA(和類似)環境嗎?除了使用遠程腳本CSPack和CSRun部署到Azure模擬器的一些煩惱之外,這是否可以通過構建服務器合理地自動調整?

回答

10

恕我直言:你跳過了太多的箍,無需部署到Azure Dev & QA環境..爲什麼不在同一時間部署和測試您的部署腳本?使用xtra-small實例來降低成本。

存儲模擬不是/很好。有很多細微的差異會讓你的測試不可靠。你也沒有測試負載平衡 - 會發現任何計劃外的會話狀態問題

+0

我開始考慮您的&andriys關於在Azure中執行所有操作的建議。但是,這只是我感覺不對。目前,我們在生產中已經有2套「應用套件」,但也將在Azure中額外增加6套「我們的套件」。這看起來很浪費。我們甚至爲我們的生產環境(更便宜和更快)使用超小型實例,因此最多有6個副本最終以非常快的速度增加成本。是否有已經制作的工具可以讓非技術人員輕鬆地啓動和停止計算實例套件,還是需要定製? – Jaxidian

+0

您可以通過[Windows Azure管理門戶](http://msdn.microsoft.com/zh-cn/library/gg433078.aspx)管理託管服務的各個方面:「...您可以創建,部署,運行,使用管理門戶暫停和刪除託管服務......「。因此,根據需要啓動/停止託管服務是一件容易的事。當情況下降時,你不會爲他們收費。 – andriys

+0

@Andriys:對於非技術QA人員來說,這不是一個真正可行的解決方案。這也要求他們有管理權限,這不是我不願意做管理員的人員所願意做的事情。 – Jaxidian

7

關於Azure我得到的最有用的建議之一是「儘快測試Azure」。它將幫助您在開發生命週期中儘早解決真正的Azure和仿真器之間的差異,並且有很多。其次,您的替代解決方案聽起來像只有很多工作才能擁有測​​試環境。我認爲在Azure上託管會更具成本效益。最後,在發佈產品之前,您仍然需要在Azure上進行測試。