クラウド コンピューティング: インフラストラクチャの原則からベスト プラクティスまで: クラウド コンピューティングのパフォーマンスとスケーラビリティ

著者: 禅とコンピュータープログラミングの芸術

1. 背景の紹介

概要

クラウドコンピューティングは、ネットワークを介してさまざまなITリソース(サーバー、ストレージデバイス、アプリケーションなど)を集約、共有、管理、処理するサービスの一種です。インターネットの発展に伴い、近年ではクラウドコンピューティングも注目を集めています。クラウド コンピューティングの価値を認識し始めている人が増え、クラウド コンピューティング サービスを購入して利用する人が増えており、大企業から中小企業まで、この波に積極的に参加しています。クラウド コンピューティングが真に本来の役割を果たすためには、クラウド コンピューティング インフラストラクチャ (つまり、基盤となるハードウェアとソフトウェア) の設計、展開、運用と保守、監視と管理を十分に準備する必要があります。クラウド コンピューティング プロバイダーは、ユーザーが完全で高品質のサービスを享受できるように、信頼性が高く、スケーラブルで効率的なインフラストラクチャを提供する必要があります。この記事では、クラウド コンピューティングの 2 つの側面、パフォーマンスとスケーラビリティについて説明します。クラウド コンピューティングのパフォーマンスとは、コンピューティング リソースに対するユーザーのニーズを満たし、高い応答速度と安定性を維持するクラウド コンピューティング プラットフォームの能力を指します。クラウド コンピューティングのスケーラビリティとは、クラウド コンピューティング プラットフォームがビジネスの成長、市場の変化、競争圧力などの要因に応じてコンピューティング リソースの規模を自動的に調整し、パフォーマンス レベルを最大化できることを意味します。

クラウドコンピューティングのパフォーマンス

クラウド コンピューティングのパフォーマンスとは、クラウド コンピューティング プラットフォームがユーザーに提供できるコンピューティング能力を指します。クラウド コンピューティング プラットフォームは通常、仮想化を使用してコンピューティング リソースを割り当て、共有し、各仮想マシンには異なる量の CPU、メモリ、ストレージ、ネットワーク帯域幅を割り当てることができます。これらの仮想マシンは、さまざまなデータ センター、ラック、さらにはクラウド領域に分散されており、高速かつ低遅延のネットワークを通じて相互に接続されています。したがって、クラウド コンピューティング プラットフォームのコンピューティング パフォーマンスは、基盤となるインフラストラクチャのパフォーマンスに依存します。

ハードウェアレベルのパフォーマンスの最適化

クラウド コンピューティング プラットフォームのハードウェア レベルのパフォーマンスの最適化には、基盤となるサーバーの構成、アーキテクチャ、展開方法、およびネットワーク インターフェイスが含まれます。以下の図に示すように、一般的なクラウド コンピューティング プラットフォームのハードウェア コンポーネントには、ホスト サーバー、スイッチ、ストレージ デバイス、ネットワーク デバイスが含まれます。その中でも、ホスト サーバーの構成はクラウド コンピューティング プラットフォームの全体的なパフォーマンスを決定するため、ホスト サーバーの構成を最適化することが非常に重要です。いくつかの構成ポイントを次に示します。

1.CPU: CPU 構成を最適化すると、クラウド コンピューティング プラットフォームの全体的なパフォーマンスが向上します。サーバーを選択するときは、同じハードウェア条件下でより優れたコンピューティング パフォーマンスを得ることができるように、コア数が多いサーバーを選択する必要があります。同時に、CPU のキャッシュ サイズも重要であり、I/O 集約型のアプリケーションの場合は、CPU キャッシュを十分に大きく設定する必要があり、コンピューティング集約型のアプリケーションの場合は、CPU キャッシュを小さく設定する必要があります。

2. メモリ: メモリは、アプリケーションの実行速度、遅延、容量に直接影響するため、クラウド コンピューティング プラットフォームの重要なコンポーネントでもあります。メモリ構成では、通常、総メモリ容量と総アイドル容量の比率が約 1:1 ~ 1:2 になるようにする必要があります。そうしないと、システムのパフォーマンスに影響します。さらに、アプリケーションの最適化とスケジューリングによってメモリ消費量を削減できます。

3. ディスク: クラウド コンピューティング プラットフォームのストレージ パフォーマンスも非常に重要です。クラウド コンピューティング プラットフォームで使用されるディスクは通常、比較的安価ですが、同時に巨大な記憶領域という特徴があります。したがって、比較的高速でコスト効率の高い SSD ソリッド ステート ドライブやパススルー SAN (ストレージ エリア ネットワーク) などのストレージ デバイスを選択することが非常に重要です。クラウド コンピューティング プラットフォームのストレージを自動的に拡張する必要がある場合は、ディスクのパフォーマンスとディスク間のアクセス速度を考慮する必要があります。

4. ネットワーク: クラウド コンピューティング プラットフォームは通常、複数のデータ センターで構成され、さまざまな地域に分散されており、ネットワーク パフォーマンスもクラウド コンピューティング プラットフォームの重要な制限要素です。ここで注意すべき点がいくつかあります。まず、できる限り高速で低遅延のネットワーク伝送媒体を選択します。次に、クラウド コンピューティング プラットフォーム上のすべてのデータ トラフィックが最適化されたパスを持つように、適切なネットワーク ルーティング戦略を選択します。 ; 3 番目に、UDP の代わりに TCP/IP などのイントラネット伝送プロトコルを使用して、ネットワークの輻輳によって引き起こされるパフォーマンスの問題を回避します。

要約すると、ハードウェア レベルのパフォーマンスの最適化は、ホスト サーバーの構成、メモリ、ディスク、ネットワーク、その他のコンポーネントに主に焦点を当てており、アプリケーション シナリオに基づいて最適化する方法は、アプリケーションの種類と特性によって異なります。たとえば、コンピューティング集約型アプリケーションの場合は、ハイパースレッディング テクノロジを有効にして無駄なリソース (プロセスなど) の作成を削減し、それによってクラウド コンピューティング プラットフォームの全体的なパフォーマンスを向上させることを検討できます。I/O 集約型アプリケーションの場合は、 IO パフォーマンスを向上させるために、SSD ソリッド ステート ドライブ、より高速な RAID カード、その他の方法の使用を検討できます。

ソフトウェアレベルのパフォーマンスの最適化

ハードウェア レベルでのパフォーマンスの最適化に加えて、クラウド コンピューティング プラットフォームのソフトウェア レベルも最適化する必要があります。ソフトウェアレベルの最適化には多くの方法がありますが、最も効果的な方法はマイクロサービス アーキテクチャの導入です。マイクロサービス アーキテクチャはクラウド コンピューティングのアーキテクチャ モデルであり、複雑なアプリケーションを複数の小さな独立したサービスに分割し、軽量の API を通じて通信します。このアーキテクチャを通じて、クラウド コンピューティング プラットフォームのソフトウェア パフォーマンスを最適化できます。

1. コンテナ テクノロジ: クラウド コンピューティング プラットフォームのコンピューティング集約型アプリケーションは並列性が高いため、コンテナ テクノロジを使用すると、クラウド コンピューティング プラットフォームの全体的なパフォーマンスが大幅に向上します。コンテナ テクノロジを使用すると、アプリケーションを標準イメージにパッケージ化し、OCI 標準をサポートする任意のコンテナ エンジンにデプロイできます。コンテナー イメージは、クラウド コンピューティング プラットフォームでストレージ領域を節約し、展開を高速化するのに役立ちます。さらに、コンテナーテクノロジーにより、リソースの分離と柔軟なスケーリングも容易になります。

2. クラウド プラットフォーム スケジューラ: クラウド コンピューティング プラットフォームのスケジューラは、クラウド コンピューティング プラットフォームのリアルタイムのニーズを満たすために、コンピューティング リソースを動的に割り当てることができます。クラウド プラットフォーム スケジューラは、キュー モデル、マルチテナント モデル、または予測モデルを使用して、現在のワークロードに最適なコンピューティング リソースを割り当てることができます。

3. クラウド プラットフォーム サービス グリッド: クラウド コンピューティング プラットフォームのサービス グリッドは、サービス間の通信に使用されるインフラストラクチャ層です。サービス メッシュは、サイドカー プロキシを使用してマイクロサービス間のデータ トラフィックを傍受し、トラフィック ルーティング、サーキット ブレーク、電流制限、マイクロサービスの監視を管理します。サービス メッシュを通じて、クラウド コンピューティング プラットフォームは、高可用性と低遅延のサービス コールを提供できます。

4. クラウド プラットフォームのログ分析: クラウド コンピューティング プラットフォームのログ分析は、クラウド コンピューティング プラットフォームの内部動作状況を理解し、パフォーマンスのボトルネックを発見するのに役立ちます。ログ データは収集、分析、保存、取得できます。ログ分析は、問題を迅速に特定して解決するのに役立ちます。

5. クラウド プラットフォームの自動運用および保守ツール: クラウド コンピューティング プラットフォームの自動運用および保守ツールは、管理者がクラウド コンピューティング プラットフォームを迅速かつ正確に管理するのに役立ちます。自動化された運用および保守ツールは、システム構成エラーを検出して修正し、バックアップ、回復プロセス、ソフトウェアのアップグレード、その他の操作を実行できます。

上記の方法を通じて、クラウド コンピューティング プラットフォームのパフォーマンスも大幅に向上させることができます。さらに、機械学習に基づく予測モデル、異種コンピューティング リソース プールの利用、マルチテナント モデルのサポートなど、クラウド コンピューティング プラットフォームのパフォーマンスを向上させる他の方法もあります。ただし、上記の方法はいずれも、ハードウェア レベルおよびソフトウェア レベルでのクラウド コンピューティング プラットフォームのパフォーマンス最適化に代わるものではなく、ある程度までしか改善できません。

クラウドコンピューティングのスケーラビリティ

クラウド コンピューティングのスケーラビリティとは、クラウド コンピューティング プラットフォームがビジネスの成長、市場の変化、競争圧力などの要因に応じてコンピューティング リソースの規模を自動的に調整し、パフォーマンス レベルを最大化できることを意味します。

クラウド プラットフォームの柔軟なスケーリング

スケーラビリティはクラウド コンピューティングの重要な機能です。クラウド プラットフォームの柔軟なスケーリングの目標は、ビジネスの成長や緊急のニーズに対応するために、コンピューティング リソースの規模をいつでも自動的に調整することです。エラスティック スケーリングでは、現在のビジネス使用状況、負荷の増減、市場の変化などの要因に応じてコンピューティング リソースの規模を調整できます。柔軟なスケーリング メカニズムにより、クラウド プラットフォームのコンピューティング リソースを自動的に調整して、システム リソースの過剰な占有、ビジネス ニーズを満たせないこと、または価格の割引を防ぐことができます。

垂直方向の拡張

垂直スケーラビリティとは、ユーザーのニーズに応じてクラウド コンピューティング プラットフォームのハードウェア リソースを増減することを指します。垂直方向の拡張の過程で、メモリ、CPU、ストレージ、ネットワークなどのコンポーネントの数を増やすことができます。ユーザーの使用量が増加すると、クラウド コンピューティング プラットフォーム上のリソース割り当ての問題が発生します。このとき、垂直方向の拡張が必要になります。垂直方向の拡張は主にコンピューティング集約型アプリケーションで発生します。

横展開

水平スケーラビリティとは、クラウド コンピューティング プラットフォームのコンピューティング能力を強化するためにコンピューティング ノードの数を増やすことを指します。水平拡張の過程で、ノード数、ネットワーク帯域幅、ストレージなどを増やすことができます。水平拡張は、コンピューティング集約型および I/O 集約型のアプリケーション向けに最適化できます。

分散コンピューティング

クラウド コンピューティング プラットフォームの分散コンピューティング アーキテクチャにより、クラウド コンピューティング プラットフォームの設計、展開、およびメンテナンスが簡素化されます。分散コンピューティング アーキテクチャにより、クラウド コンピューティング プラットフォームのコンピューティング ノードを複数のデータ センター、ラック、さらにはクラウド領域に分散でき、リソースを個別に割り当てることができます。このアーキテクチャの設計は、プラットフォーム全体がオンラインであるため、クラウド コンピューティング プラットフォームが単一障害点を考慮する必要がないことを意味します。ただし、このアーキテクチャには新たな複雑さも伴います。分散コンピューティング アーキテクチャでは、データの整合性、負荷分散、災害復旧などの一連の複雑な問題を考慮する必要があります。

柔軟な負荷分散

Elastic Load Balancing は、分散コンピューティング アーキテクチャの重要なコンポーネントです。Elastic Load Balancing は、ユーザーのリクエストを動的に分散して、コンピューティング タスクを複数のノードに分散できます。Elastic Load Balancing は、クラウド コンピューティング プラットフォームのリソース利用率を最大限に高めるために、自動的に負荷を特定してバランスをとることもできます。

クラウドプラットフォームの自動スケーリング

クラウド プラットフォームの自動スケーリング (Auto Scaling) とは、クラウド プラットフォームがインテリジェントな自動拡張機能を備えており、ユーザーの使用状況やシステム負荷に応じて自己展開できることを意味します。自動スケーリングの目標は、クラスターのサイズを継続的に調整することで、クラスターが常に最適なリソース使用状態になるようにすることです。クラスターのリソース使用率が飽和に達すると、自動スケーリングが開始され、クラスターの容量が削減され、不要なリソースが解放されます。

ルールベースの自動スケーリング

ルールベースの自動スケーリングとは、クラウド プラットフォームが特定のルール (平均負荷、CPU 使用率、メモリ使用率、ネットワーク帯域幅使用率など) に従ってクラスターの容量を自動的に調整できることを意味します。ルールベースの自動スケーリングによりリソースを迅速かつ正確に調整できるため、クラウド コンピューティング プラットフォームの全体的なパフォーマンスが向上します。

モデル駆動型の自動スケーリング

モデル駆動型自動スケーリングとは、クラウド プラットフォームが履歴データと機械学習モデルの統計情報に基づいて現在の負荷を予測し、対応する調整を行うことができることを意味します。モデル駆動の自動スケーリングにより、クラスター容量の推奨事項をリアルタイムで生成できるため、クラウド コンピューティング プラットフォームの全体的なパフォーマンスが向上します。モデル駆動の自動スケーリングでは、クラスターのリソース使用状況を監視し、予測結果に基づいてリソースを自動的に割り当てることもできます。

クラウドプラットフォームの災害復旧

クラウドプラットフォームのディザスタリカバリ(Disaster Recovery)とは、クラウドプラットフォームがフェイルオーバー機能を備え、迅速かつ自動的にディザスタリカバリを実行できることを意味します。クラウド プラットフォームのディザスタ リカバリでは、冗長バックアップ、クロスリージョン レプリケーション、マルチリージョンのディザスタ リカバリなどの一連の複雑な問題を考慮する必要があります。クラウド プラットフォームの災害復旧の目標は、計画停止中もユーザーのビジネスが正常に実行できるようにすることです。

おすすめ

転載: blog.csdn.net/universsky2015/article/details/133594483
おすすめ