新しい「クラウドコンピューティング」企業のCEOが今日の金融TV番組で彼の会社について説明しているのを見て、「クラウドコンピューティングは昔ながらのクライアント/サーバーコンピューティングよりも優れている」のようなことを言った。
今、私は混乱しています。誰かがクライアントサーバーとは対照的に「クラウドコンピューティング」が何を意味するのか説明できますか?
私が理解している限り、クラウドコンピューティングは、物理的なハードウェアを所有または維持しないような、ネットワークサービスモデルに近いものです。 「クラウド」はすべてのバックエンドのものです。しかし、その「クラウド」環境と通信するアプリケーションがまだあるかもしれません。また、Webサイトを実行して、ユーザーが入力するフォームを表示し、ページのボタンを押して、Webサーバーによって生成されたレポートを返す場合、それは「クラウド」コンピューティングと同じではありませんか?そして、あなたは私のウェブブラウザを「クライアント」と見なしませんか?
私の質問は「クライアントサーバー」に関する「クラウドコンピューティング」の概念に固有のものであることに注意してください。
これがこのサイトに不適切な質問である場合は申し訳ありません。スタックユニバースの中で最も近いもので、今回が初めてです。私は古いタイマーで、70年代後半のメインフレーム時代からプログラミングをしています。
厳密に言えば、「クラウド」はありません。そのCEOが何を噴出しているのかという意味ではありません。もちろんインターネットがあります。ホストされているサービスがあります。 VPSがあります。コンテンツ配信システムがあります。私たち(技術者)は、特定のホストされたサービスモデルを参照するためにこの用語に適応しています。しかし、消費者向けメディアの「クラウド」は、主に「インターネット」に大まかに翻訳されたマーケティング用語です。多くの場合、これは「月ごとに請求する」ことも意味します。
「クラウド」と「クライアントサーバー」という2つの用語は関連していないという考えは正しいと思います。サービスを「クラウド」でホストしても(そのフレーズを使用した後は、劇的な「dun-dun-daaaaaaa」を常に追加したい)、クライアントサーバーアプリがクライアントサーバーyになることはありません。たとえば、「ウェブ」は主にクライアントサーバーモデルを使用します。 Webブラウザがクライアントです。 Webサーバーはサーバーです。 Webサーバーが「クラウド」でホストされていることは、WebブラウザーとWebサーバーの関係がクライアント/サーバーであるという事実を変更するものではありません。
したがって、クライアントサーバーという用語は、システム内の2つのエンティティ間の関係を定義します。エンティティが物理的にホストされている場所は関係ありません。
基本的に、あなたは正しいです。 2つは比較できません。
「クラウドコンピューティング」は、2つのことを行うことを意図した包括的な用語です。1つ目は、「ファイルサーバー」、「データベースサーバー」などのより具体的な使用例ではなく、単一の用語の背後にあるクライアントサーバーモデルのすべての可能な使用を抽象化することです。 「ウェブサーバー」、「アプリケーションサーバー」など。 2番目に、ハードウェア、トポロジ、場所、さらには所有権の観点から、サーバーアーキテクチャ自体を抽象化します。
今日でも確実に一般的に使用されている従来のクライアントサーバーモデルでは、クライアントは特定のジョブを実行するサーバーに接続します。このサーバーは、データベース、一連のファイル共有、またはWebページをホストする場合があります。クライアントがそのサーバーに接続すると、2つのコンピューター間で行われる通信とデータ伝送のタイプが暗黙的に理解されます。サーバーのハードウェアの機能とその制限について、クライアントまたはエンドユーザーが理解している場合もあります。クライアントマシンとそのサーバー間のこの比較的「緊密な結合」は、メンテナンスのためにサーバーを停止する必要があるシステム管理者に問題を引き起こす可能性があります。このサーバーが提供するリソースに依存するすべてのアプリケーションは別のサーバーを指す必要があり、すべてのアプリケーションとインフラストラクチャがこのタイプの冗長性とフェイルオーバー耐性を考慮して設計されているわけではありません。
クラウドモデルでは、ハードウェア、トポロジ、分業、および関与する実際のマシンの偶数はすべて、単一のエンドポイントの背後で抽象化されます。より静的な古い世代の「ウェブサイト」とは対照的に、現代の「ウェブアプリケーション」にたとえることができます。アプリケーションサーバーとDBサーバーが背後にあると推測する場合もありますが、実際には気にする必要はありません。 Webサーバーは、「エッジ」を越えてユーザーに完全なアプリケーションを提供するジョブの一部として、このフロントドアの背後にある他のマシンによって提供されるすべてのデータとサービスへの制御されたアクセスを可能にする統合エンドポイントを提供します。
要するに、アプリケーションの機能を提供するために単一のエンドポイントが公開されているため、データを取得する場所や、リモートアプリケーションプロセスを呼び出す場所ではなく、アプリケーションのクライアントコンシューマーがこれまでに注意しなければならないことすべてです。 、など;つまり、このクラウド内のサービスプロバイダーの管理者およびアーキテクトは、クライアントが賢くなくても、この「クラウドサービス」のマシン、トポロジ、およびその他の特定の実装の詳細を自由に変更できます。 Facebookが賢明だと思った場合、別のDBMSとすべての新しいサーバーを使用してデータストレージシステム全体をゼロから再構築できます。移行中にサイトが利用可能なままである限り、誰も賢くなりません。実際、Facebookはそれを何度も行っていました。それは、寮の部屋にあるMark Zuckerbergの個人用マシンからホストされていたサイトから、キャンパス外の専用ホスティングに、世界中のいくつかの場所にあるサーバーファームに拡大したためです。
「クラウドコンピューティング」の重要な部分は、デプロイメント管理ツールです。
「クラシック」デプロイメントでは、特定のアプリケーション用に特定のマシンを注文し、完全に固定された構成を行いました。
クラウド環境では、プールに多かれ少なかれ標準化されたハードウェアと、何らかの形式のテンプレートから仮想マシンを作成および構成するAPIがあります。これにより、障害のあるシステムは、ニーズに応じて簡単に交換、拡大、縮小でき、ハードウェアは必要に応じて自動的に割り当てられます。
もちろん、適切な管理者も以前にほとんどのことを行いましたが、純粋なマーケティングに加えて、標準化されたAPI(「プライベートクラウド」用のEucalyptusなどのツールによっても提供されるAamzons AWS API)とツール(つまり、人形)の基盤が出現しています。
「従来の」クライアントサーバーアーキテクチャでは、静的に割り当てられたリソースがありました(または少なくともそのように表示されています-プレクラウド期間の経験がないので、間違っていて、誤ったマーケティングに依存している場合は修正してください)。データベースサーバーはdb.yourcompany.comと呼ばれ、Webサーバーはそれと通信しました。リソースを増やしたい場合は、別の専用Webサーバーを追加して、負荷分散などを提供できます。
一方、クラウドでは、下位レベルの抽象化にストレスがかかり、「サーバー」がどのように構築されるかを示しています。たとえば、あなたは:
ほとんどの場合、実際のサービスは大企業(AmazonやGoogleなど)にアウトソーシングされることを意味しますが、大企業や大学が独自の内部クラウドを展開してリソースをより簡単に管理できるようにする必要はありません。これにより、アプリケーションにリソースを追加し、必要に応じて実行を追加できます。新しい内部スタートアップが成功した場合、サーバーが過負荷になることを心配する必要はありません。ただし、規模の経済が役割を果たすため、通常は特別な要件(セキュリティなど)がある場合にのみ実行されます。
ユーザーの観点から見ると、それは透過的であり、クライアント/サーバーアーキテクチャのように見えません。 Webサーバーは、プレーンな古いHTTPを使用している間、「クラウド内」に存在する場合があります。アイデアの問題と解決策は確かに 50s mainframes にまで遡り、現在、シッククライアントPCとは対照的に、より多くのものが返ってきます。
ただし、これは特定の文の流行語である可能性もあり、会社は動的であり、従業員を有効にする一方でコアコンピテンスに焦点を当てていると述べています。
誰かがクライアントサーバーとは対照的に「クラウドコンピューティング」が何を意味するのか説明できますか?
それはあなたの視点に依存します。 (通常)クラウドコンピューティングは、サービスをサポートするマシンの数に応じて柔軟に対応できるため、優れています。この柔軟性により、応答性が向上し、コストを節約できます。企業は、クラウドプロバイダーにバックアップ、ディザスターリカバリー、物理的セキュリティ、および処理したくない他のすべてのインフラストラクチャーを実行させることも利用できます。これは通常、節約と品質の向上につながります。
消費者の観点からは、接続品質と信頼性の向上は良好です。一部のクラウドプロバイダーは、サーバーの分散を支援して、消費者の待ち時間を支援します。
プログラマーにとって...それは、サーバーが手に入るのが苦痛であり、いくつかの特殊なAPIを時々使用する必要があるクライアント/サーバープログラミングです。