2012-03-01 66 views
0

我們公司正在考慮轉向雲計算。我們是否仍能滿足我們目前的所有要求(如下)。我們希望能夠在未來高成本的情況下輕鬆擴展。我可以將我的asp.net應用程序移動到雲端嗎?

  • 5個ASP.net 4.0網站上運行(使用SQL數據庫,見下文)
  • SQL Server 2008 Express的(8個數據庫在此)
  • 2運行調度服務(通過電子郵件發送如新訂單晚間報道在DB)
  • 的MongoDB和Memcached的也安裝在服務器上

目前該網站是從出於安全原因,該數據庫服務器的單獨服務器上。

我們在考慮Windows AzureAmazon Web Services (AWS)作爲供應商,哪種最符合我們的要求?

我們需要考慮其他因素嗎?

+1

如果您可以支付價格,您當然可以將所有內容移至Amazon EC2實例。從小而便宜的東西開始,建立起來會很容易。 EC2實例是雲中完全可遠程控制的虛擬機。非常酷的東西。 – 2012-03-01 21:09:43

+1

如果你已經在.NET中做了所有事情,那麼Azure可能會是一個更好的選擇,因爲它對開發人員來說會更自然。我正在從IIS遷移到Azure,這非常酷:如果您不想利用Azure的獨特功能(例如AppFabric進行緩存),那麼實際上很少有改變。 – frenchie 2012-03-01 21:13:05

+0

我可以使用天藍色輕鬆運行Windows服務嗎? – 2012-03-01 21:24:19

回答

2

回覆:Windows Azure上的SQL數據庫:這將映射到SQL Azure。成本從5美元/月開始,最高可達100 MB實例 - 並且一直達到150 GB - 超過聯盟的水平。

Re:5 ASP.net 4.0網站運行:這些映射自然成了Windows Azure Web Roles。 「小」實例爲0.12美元/小時/實例,並且通常需要兩個實例(以避免幾個方案出現單點故障)。根據您的負載,您可能可以將所有5個站點放在同一個實例上。如果您的使用率很低,請考慮$ 0.05 /小時/實例「超小」實例。

回覆:目前網站是從數據庫服務器的單獨服務器上出於安全原因:當然這也是可行的。

Re:2調度程序服務正在運行:運行Windows服務沒有問題。

回覆:通過電子郵件發送每晚報告db中的新訂單:沒問題,雖然沒有直接燒入Windows Azure,但有很多簡單的方法可以做到這一點(即使是免費的,例如通過SendGrid)。

回覆:我們希望能夠輕鬆擴展到未來的高成本:您需要根據您的實際成本來計算數學,但Windows Azure肯定可以擴展。

Re:MongoDB和Memcache也安裝在服務器上:這些都可以在Azure上運行。查看MongoDB的https://github.com/mongodb/mongo。此外,Azure緩存服務也可用(爲您管理)。

回覆:我們一直在考慮Azure和Amazon作爲提供商,它們最符合我們的要求:這些功能非常相似(在功能和成本方面),但有一些值得注意的差異。

  1. Windows Azure是平臺即服務,這意味着您不必擔心虛擬機,而是應用程序。換句話說,您將(基本上)壓縮的應用程序包上傳到雲中執行。藉助亞馬遜,您將自己處理虛擬機。在Azure中,您將獲得爲您管理的Windows Server 2008副本,但是如果需要,您還可以對其進行管理。如果您的應用程序是一種舊式凌亂的安裝,但這種安裝不太乾淨(儘管可能不是一個好的高價值雲端應用程序),這種優勢遠不會那麼有利。
  2. Windows Azure有一個效果很好的模擬器--F5直接使用Visual Studio來處理存儲系統和虛擬機以及更多流行功能。

回覆:是否還有其他因素需要我們考慮:是的。使用任何雲應用程序,您需要做好準備來處理擴展(不是up),處理瞬時重試(您可能需要重試對雲服務的操作 - 任何雲服務)。這樣做的好處是更好(更具成本效益)的可擴展性和更高的可靠性(當您跨節點運行時,您沒有單點故障)。一定要了解虛擬機上的存儲何時/何處存在,而不是暫時的。有更多的考慮,但這些是主要的。

您可能想要查看Windows Azure Pricing calculator

祝你好運!歡迎來到雲端。

0

不是專家,但是因爲Asp.net是微軟的產品,它應該更容易遷移到Azure,儘管從我聽說AWS應該不難。您可能要考慮的另一件事是成本。上次我檢查AWS的成本要低得多,除非你已經支付了MSDN訂閱費用。

1

除了擴展問題和2臺物理服務器之外,您可以將此功能移入托管環境,並且您在技術上將處於「雲端」。這可能是專用的或VPS(虛擬專用服務器),或者如果你很小,甚至可以是共享服務器。

那些可以允許隨着時間的推移增長...你只需要升級你提供的東西。

您也可以使用帶有託管服務提供商的colo服務器,這基本上意味着您將您的硬件放在託管服務提供商機架中,並使用其電力和帶寬。他們根據帶寬使用情況收費。

由於您使用的是SQL Express,請記住每個數據庫都限制爲8GB。所以這會限制你在某個時候的成長。如果你不想重新設計任何東西,這將需要從Express升級到常規SQL。

0

您總結的所有要求都不是在Windows Azure中部署的任何問題。你可以在互聯網上找到很多關於如何做到這一點的信息。

請記住,如果要將服務部署到Windows Azure,則需要對應用程序執行一些代碼審查,以便在Web應用程序上修復會話狀態,輸出緩存等。

由於您想擴展它們,並且它們坐在非粘性的循環負載平衡器後面,所以如果會話狀態保存在機器上,會遇到會話狀態問題。例如,您需要將會話狀態分配給SQL Azure或Windows Azure表存儲。

在Azure中安裝MongoB和memcache是​​不是一個問題,你會發現很多關於如何做到這一點的信息,但它會需要一些設置你的角色和腳本

1

你有沒有考慮AppHarbour?它有Memcached,MongoDB,SQL Serverso on,並且部署速度比Azure更快。我 Azure,但有一個相當的學習曲線,我發現與SQL Azure的連接非常糟糕 - 這意味着重新設計您的DAL使用像SQL Transient Failure Library =現有項目的一個faff的東西。

AppHarbour沒有blob存儲 - 因此,如果您要上傳文件,則需要使用Azure Blob存儲或Amazon S3或一些等效功能。

希望這會有所幫助。

0

codingoutloud給出了非常詳細的答案。在將任何應用程序移動到Azure(或實際上,許多其他雲提供程序)時,我會考慮兩個非常關鍵的考慮事項。

本地狀態
正常天青,它們保留在任何時間,以移動或升級它關閉一個角色中的任何一個實例的權利。這意味着你總是至少需要任何一個角色的兩個實例,並且它們將透明地進行負載平衡。如果您當前的網站當前正在單獨的服務器上運行,那麼它們可能依賴於會話狀態或本地目錄中的文件等。現在,有辦法解決這個問題(比如將會話狀態放入SQL中,使用Cookie提供程序獲取臨時數據,使用共享驅動文件等),或者實際上繞過了Azure的許多好處,並使用他們的「虛擬服務器」概念,這意味着你沒有獲得規模效益等。 但是,嚴重依賴本地狀態的網站可能具有挑戰性遷移到雲端。

時區
所有Azure服務器都在UTC時間運行。如果您習慣於在單個時區爲用戶提供服務的專用服務器上運行,那麼您很可能會使用諸如DateTime.Now()之類的內容,這些內容並不真正對應用戶想要的內容。

我沒有看到上述任何一個作爲Azure的限制,我發現它們非常有用,可以迫使您從一開始就構建全局和可擴展的解決方案。但是,在移植現有應用程序時,即使存在解決方法,上述操作也可能是相當難以適應的挑戰。

也如其他地方提到的那樣,Azure有一條學習曲線,不知怎的,文檔 - 儘管很豐富 - 但由於某種原因似乎不太合適。但是,一旦你「明白了」,我發現Azure真的很棒,並且有一些細微的特性可以幫助你構建可擴展的解決方案,比如整個排隊基礎架構,blob存儲和表格存儲。在某些方面,學習受到太多選擇的阻礙。

祝你好運!

相關問題