我們在Azure中有幾個不同的角色。目前,它們各自被部署爲分離實例,以便它們可以單獨擴展(並且在生產中這是我們想要的),但是對於測試來說,這看起來很浪費,我們希望能夠將所有角色部署到單個實例以最小化成本。部署到天藍色角色分裂在不同的配置不同的實例?
我們可以這樣做嗎?
我們在Azure中有幾個不同的角色。目前,它們各自被部署爲分離實例,以便它們可以單獨擴展(並且在生產中這是我們想要的),但是對於測試來說,這看起來很浪費,我們希望能夠將所有角色部署到單個實例以最小化成本。部署到天藍色角色分裂在不同的配置不同的實例?
我們可以這樣做嗎?
角色本質上是在一組Windows Azure VM實例內部運行的定義。根據定義,它們有自己的實例,因此它們不能針對一組實例。
這就是說:沒有什麼能阻止你將來自不同角色的代碼合併成一個角色。您需要確保您的OnStart()
和Run()
負責完成所有必需的任務,以及組合啓動腳本項目。
優勢(您已經猜測):節約成本,特別是在低量運行時(整個應用程序可能能夠在兩個實例中運行,而不是幾個更接近閒置的實例按角色分開)。
一個潛在的缺點:所有合併成一個角色的東西現在將一起擴展。這對你來說可能是也可能不是問題。
另外,請考慮大小。假設你的網站非常滿意,但是你有一些後臺任務需要XL(也許它是一個需要10GB RAM的渲染器)。假設您總是運行2個網站實例,以實現SLA目的。現在,即使音量非常低,您的應用程序也由兩個XL實例組成,而不是2個Small(Web)和一個XL(背景)。現在,您的近空閒系統的成本可能會更高,而不是單獨角色。 這可能並不適用於你 - 只是給一個例子,其中它可能沒有什麼意義結合起來...
添加到大衛的很好的解釋,將東西放在一起,並通過膠合的OnStart他們或運行覆蓋將工作,但你真的正確地測試東西嗎?配置值合併在一起,潛在的內存使用問題,併發性等。當您部署到生產環境時,您不會測試相同的產品。
更好的方法是將超小型實例部署到您的QA環境。他們花費的價格只是中等或大型服務器的一小部分,並提供有意義的測試平臺。