複数のクラウドが関与する可能性のあるクラウドコンピューティング用のアプリケーションを設計する方法

StackOverflow https://stackoverflow.com/questions/1619650

  •  06-07-2019
  •  | 
  •  

質問

この質問を見終わったばかりです: https://stackoverflow.com / questions / 753122 / which-cloud-computing-platform-should-i-choose

ただし、安全エンジニア向けのアプリケーションを設計する際に何をすべきかは定かではないため、高い稼働時間が重要です。

したがって、アプリケーションがSQL Serverを使用してASP.NETで記述されている場合、Azure向けに設計するのが最善の策と思われますが、Amazonのソリューションは良い選択でしょうか?すべてを同じシステム上に置くべきなのか、AmazonのクラウドとAzure上のASP.NETにデータを置くべきかをどのように判断しますか?

私が取り組んでいる別のアプリケーションは、水道と電気に関するユーティリティ情報を処理するものです。そのため、使用量と請求情報があり、SQL Serverを使用してPHPで作成されました。これはおそらくクラウドコンピューティングに適したアプリケーションでしょうか? AmazonのソリューションはPHPに最適なソリューションと思われるので、私の唯一のオプションですが、提供するサービスのどの部分を使用するかをどのように決定しますか?

基本的に、私の質問はアプリケーションアーキテクチャに関するものです。ホスティング用の設計は簡単ですが、クラウドコンピューティングは新たな課題を追加します。

私の主な関心事は、純粋にアプリケーションの設計です。

言語を決定した場合、クラウドソリューションに縛られますか?

データベースをアプリケーションとは異なるクラウドに配置したいのはいつですか?

LIFTフレームワーク(Scalaで記述された)を使用したい場合、必要なものをインストールできますか?

役に立ちましたか?

解決

Amazon AWSでかなり大規模な金融サービスSaaSを実行しています。

ここでは、アプリケーションアーキテクチャとクラウドプラットフォームサービスという2つの一般的な問題があります。

アプリケーションアーキテクチャは、社内の仮想マシンまたは実際のハードウェアに展開する場合と基本的に同じであることがわかりました。ほとんどのオープンソースツール(Java、Spring、Hibernate、MySQL、Terracottaなど)を使用して、かなり標準的なn層アプリケーションを作成しました。高可用性/エラートレラントデータベース(ハードウェアベースのオプションが利用できないため)に関しては、いくつかの考慮事項がありますが、それ以外の点では、実際には「ターゲット」になりません。特定のクラウド実装。

Cloud Platform Servicesはまったく別の問題です。つまり、次のようなものです:

  • インスタンスの起動/停止/監視/管理/スケーリング
  • 可用性/冗長性(例:Amazonにはアベイラビリティーゾーンがあります)
  • インスタンスのデプロイ/初期化/設定
  • ファイルのバックアップ/リカバリ
  • セキュリティ(ファイアウォール制御など)

その分野では標準化はほとんどありませんが、活発な関心のある分野です。

大まかに言えば、クラウドに依存しない方法でアプリケーションを設計することをお勧めしますが、非常に具体的な運用手順を作成します。

プレゼンテーションとDBを異なるプロバイダー間で分割することについては、次の理由により提案しません。

  • いずれかのプロバイダーがダウンした場合、ダウンしています
  • インターネット経由のデータ転送は、1つのクラウドプロバイダー内でのデータ転送よりも遅く、高価で、安全性が低くなります。

複数のクラウドプロバイダーをより適切に使用するには、アプリケーションのコピー全体を2つ以上に展開し、2つで負荷を分散するか、プライマリがダウンした場合にホットスタンバイに1つを配置します。ただし、トランザクションデータをキャプチャする場合は、スタンバイ環境でキャプチャしたデータを調整する戦略が必要になります。アプリケーションの性質に応じて、実行できる場合と実行できない場合があります。

通常、仮想サーバーには好きなソフトウェアをインストールできますが、Azureの具体的な経験はありません。 AWSまたは同様のサービスを使用する場合、LIFTのインストールは問題になりません。

他のヒント

言語を決定しても、プロバイダーに縛られることはありません。ただし、Windows上で実行するように設計することはできます。 Windows仮想化は、Linux仮想化よりもはるかに狭い市場です。 Xen、Linode、Slicehostなどが使用するテクノロジーは、Windowsを2回以上仮想化しません。

Windowsを対象としたアプリケーションでは、選択肢が明らかに薄くなります。私の市場では、AmazonがWindowsに対応していることを知っています(Azureも同様です)。ただし、当社やSlicehostのようなより費用対効果の高いソリューションはそうではありません。Windowsにはプレミアムがかかります。

クラウドの分離に関して:アプリケーションを複数の「クラウド」に分割する主な理由アプリケーションの信頼性を提供することです。確かにクラウドはダウンします-確かに、めったにありません-1つのバスケットにすべての卵を入れると、高可用性が必要なアプリケーションのコストがかかります。ただし、データベースをアプリケーションとは別のクラウドに配置すると、インターネット経由でSQLを実行する際に遅延が発生します(さらに、SSHトンネルやSQL Serverが提供するプロトコルレベルの暗号化など、トラフィックを保護するためのアーキテクチャが必要になります[本当にわからない、私はPostgreSQLの男です])。

クラウドホスティングはホスティングとまったく異なるという考えに陥らないでください。実際、それらはほとんど同じです。私の会社では、クラウドホスティングは同じ「オールホスティング」についての新しい考え方に過ぎないと考えています。魔法ではありません。

クラウドホスティング用に設計するには、アプリケーションにシャーディング機能が必要であり、ノードはいつでも追加または削除される可能性があることに注意してください。それをどのように設計するかによって、それを説明するのはそれほど難しくありません。通常、負荷分散アプリケーションのみがクラウド固有のセマンティクスを認識しています。

「クラウドコンピューティング」の夜明けそして、そのような発生と同様に、競技者は彼らの「マウストラップ」を敷設しています。できるだけ多くをキャッチしたいと考えています。プレイヤーが共通の基盤(つまり、何らかの形式の標準)を定義するまでに時間がかかり、それまでは、「差別化」の武器が強制的に側面を選択します。

これはあまりにも「ビジネス指向」だと思います。投票は拒否されます。しかし、ちょっと、テクノロジー/言語ののビジネス面について考えます。結局のところ、お金を稼ぐことになります。

クラウドコンピューティングベンダー(SaaS / PaaSタイプとIaaSタイプベンダーがさらに進んでいる)にロックされていないを考えている人は、ゲームの早い段階で、大きな驚き。撃退!

免責事項:私は、あらゆるタイプ(SaaS、PaaS、IaaS)のクラウドコンピューティングベンダーを代表していません。私に投票した人たちは、彼らの忠誠心を特定することに気を遣うでしょうか?

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top