9

クラウドベースのシステムのベンダー ロックインのリスクを軽減する最善の方法を理解したいと思います。

たとえば、Amazon EC2 や Windows Azure などに多数の異なるシステムをデプロイしたいと考えていますが、必要に応じてそれらのシステムを代替のクラウド ベンダーに移行するコストを最小限に抑えたいと考えています。

少なくとも、ベンダー固有のソリューション (Amazon Queue Service など) に依存すればするほど、本質的に閉じ込められているように思えます (少なくとも私はそう思います)。しかし、このリスクをよりよく理解したいと思います。そしてそれ以上。

これを軽減するために使用できるアーキテクチャ戦略はありますか (たとえば、私のスクリプトは別の map reduce クラウド環境に移植できるため、map reduce に依存します)? 他のものよりも優れた O/S やスタックはありますか (Linux、LAMP?)。JClouds の使用は役に立ちますか?

理想的には、たとえば EC2 にデプロイできる仮想システムを設計したいと考えていますが、Azure または App Engine に簡単に移行できます (またはその逆)。

私は通常 Java で書いていますが、Scala と Python (または Jython) を選択的に使用することを検討しており、一般的にはまだ JVM ベースのままでいようとしています。私は多くの並列処理を行う傾向があり、SQL と非 SQL (ただし NoSQL は必要ありません) の両方のストレージとデータ操作テクノロジに依存しています。

前もって感謝します。ここで私が非現実的すぎないことを願っています。

4

4 に答える 4

5

私の意見では、あなたが説明する問題の唯一のアーキテクチャパターンは次のとおりです。抽象化

ストレージ、キューなど、さまざまなベンダーで提供されているリソースの使用に固執するようにしてください。それぞれの抽象化レイヤーを作成します。

お役に立てれば。クラウドプロバイダー間でのサービスのばらつきを考えると、これは非常に簡単な作業ではないと思います。

于 2011-01-08T07:08:28.730 に答える
1

IgoreK に同意します。コードでこれを行う場合、多くの抽象化が必要になります。それだけです。

もう 1 つのオプションは、IaaS クラウド アプローチを採用することです。つまり、仮想マシンの役割のみに基づいてアプリケーションを設計します。ほとんどのクラウド プロバイダーは、Amazon、Azure、Rackspace など、何らかの形式の仮想マシン ロールを提供します。移行とは、コードの変更がはるかに少なくなることを意味しますが、管理者の負担が少し増えます。

于 2011-01-09T00:12:58.030 に答える
0

Microsoft の Customer Advisory Team には、その方法に関する優れたサンプルがあります(プロジェクトはここからダウンロードしたと思います)。そこにはたくさんのコードがあり、物事を「自由」にするための非常に優れた抽象化がいくつかあります。明らかに、他の抽象化と同様に、複雑な新しいレイヤーも導入するため、適用する前にすべてを確認してください。

ほとんどの場合、少ないほど多くなります。また、ロックインは望ましくありませんが、必要に応じて「修正」することはおそらくそれほど難しくありません。しかし、その必要性を今満たすことが重要なのか、それともプロジェクトを終了して後でリファクタリングする必要があるのか​​を自問してください。

于 2011-07-03T18:11:42.160 に答える
-2

正直なところ、あなたの質問は少し間違った前提に基づいています。使用することを選択したプラットフォームを最大限に活用しようとするのではなく、ロックインを回避しようとしています。

この問題に対処するより良い方法は、インフラストラクチャをホットスワップ可能にしようとするのではなく (たとえば、ベンダー ロックインを回避する)、使用する IaaS プロバイダーを実際に決定し、それを最大限に活用することです。おそらくできます。

于 2011-01-09T20:44:32.233 に答える