2011-01-08 57 views
9

我想了解哪些最佳方法可以降低基於雲系統的供應商鎖定風險。建築戰略,以儘量減少雲鎖定風險?

例如,我想將大量不同的系統部署到Amazon EC2或Windows Azure,但是我希望最大限度地降低將這些系統遷移到另一個雲供應商的成本,如果/必要時。

至少,我似乎越依賴供應商特定的解決方案(如亞馬遜隊列服務),我越是固有地鎖定(至少我是這麼認爲的),但我想更好地理解這種風險以及超越它。

我可以使用哪些架構策略來緩解這種情況(例如,依靠地圖縮小,因爲我的腳本可以移植到另一個地圖縮小云環境)?有沒有比別人更好的O/S或堆棧(Linux,LAMP?)。使用JClouds有幫助嗎?

理想情況下,我想設計可部署在EC2上的虛擬系統,但可以輕鬆遷移到Azure或App Engine(反之亦然)。我通常使用Java編寫,但我正在考慮選擇性使用Scala和Python(或Jython),並且通常仍然試圖保持基於JVM的。我傾向於做大量的並行處理,並且依賴於SQL和非SQL(但不是必需的NoSQL)存儲和數據處理技術。

在此先感謝。希望我在這裏不太不現實。

回答

5

在我看來,唯一的建築格局到您所描述的問題是:抽象

確保堅持使用那些在不同供應商提供的資源,比如存儲,隊列等,爲每個抽象層其中。

希望這會有所幫助。我不認爲它是一項超級簡單的任務,因爲跨雲提供商的服務具有多變性

1

我同意IgoreK - 如果您在代碼中執行此操作,它將需要大量抽象,這就是關於它。

另一種選擇是採用IaaS雲方法 - 僅基於虛擬機角色設計您的應用程序。大多數雲提供商提供某種形式的虛擬機角色 - 亞馬遜,Azure,Rackspace等。遷移意味着更少的代碼更改,但更多的管理員在您身邊。

+0

如果您完全在虛擬機上構建工作負載,那麼您錯過了PaaS的優勢。恕我直言,切換到IaaS只是爲了避免鎖定可能不是正確的方式。針對問題的PaaS解決方案元素的抽象手段是我如何解釋@Igorek響應。例如考慮使用提供者來排隊,即抽象地寫入數據並從隊列中讀取數據。這意味着您需要爲每個雲平臺編寫提供程序,但解決方案在架構上是免疫的。 – 2016-11-02 08:51:18

-2

老實說,你的問題是基於一個錯誤的前提。您希望避免鎖定,而不是試圖充分利用您選擇使用的平臺。

處理這個問題的更好的辦法是,不要試圖讓您的基礎架構是熱插拔(例如,避免廠商鎖定),但實際上讓你想用一個有關的IaaS供應商的決定,充分利用它,儘可能做到最好。

0

微軟的客戶諮詢團隊有一個很好的sample on how to do that(我想我從這裏下載了這個項目)。這裏面有很多代碼,還有一些非常好的抽象,讓事情變得「自由」。顯然,與任何抽象一樣,你也引入了一層新的複雜性,所以在應用它之前確保你真的全部都是這樣。

在大多數情況下,少即是多。即使鎖定不是您想要的東西,但如果需要出現,「修復」可能並不難。但是問問自己,是否重要的​​是現在需要滿足這個需求,或者是否應該完成項目並在稍後進行重構。