2023 年にクラウドのスケーラビリティを確保する方法

公開: 2023-01-11

コンテンツ

  1. スケーラビリティとは
    • スケーラビリティに特別な注意を払う必要があるのはなぜですか?
  2. スケーリングの種類
    • 垂直方向のスケーラビリティ - スケールアップ
    • 水平スケーリング - スケールアウト
    • 対角スケーリング
  3. 最大のスケーラビリティを確保する方法
    • 負荷分散の実施
    • Web サービスの自動スケーラビリティに目を向ける
    • マイクロサービス コンテナ、クラスタ化
    • キャッシングを実装する
    • CDN サービスを利用する
  4. スケーリングの問題をどのように処理しますか?
  5. 結論
コンテンツ

コンピューティング システムの負荷の一般的な量がますます増大するにつれて、それらは適応し、基本的なアーキテクチャに関してより複雑になります。 パフォーマンス最適化のための新しいソフトウェア ツールと統合の追加、サーバー容量の拡張など。

これらすべてのシステム最適化プロセスは、DevOps エキスパートの重要な専門分野の 1 つであるスケーリングという 1 つの概念によって定義されます。 スケーラビリティとは何か、さらに重要なことは、ほとんどの運用能力がクラウドに集中している特定のビジネスの場合に、それをどのように確保するか? 本題に飛び込みましょう。

クラウドのスケーラビリティ 画像ソース: Static.bluepiit

スケーラビリティとは

スケーラビリティの最終的な定義は何ですか? 基本的に、これは可能な限り合理的な方法でシステムのパフォーマンスを向上させる機能です。 実際には、これは通常、ハードウェアおよび/またはソフトウェアの両方のコンピューティング リソースを追加することによって実現されます。 ただし、ほとんどの場合、既存のコードを書き直すことは非常に抜本的な解決策であるため、10 件中 9 件の企業は、サーバーの数を増やしたり、既存のサーバー システムの機能を強化したりすることをやめています。

スケーリングの必要性が現れるのは、システム全体のパフォーマンスが遅くなり不十分になった場合だけではないことに注意してください。 既存の稼働中のアーキテクチャは問題なく動作する可能性がありますが、ユーザー トラフィックの急速な増加により、ラグがプロセスを妨げる可能性があります。

手持ちのネットワーク プロトコルと Web サーバー リソースがどれだけ効率的に実行されているかを確認したい場合は、利用可能なロード テスター ユーティリティ (たとえば siege など) を使用して、大量のリクエストでサーバーへの人為的なユーザー流入をエミュレートできます。 2 つの重要なパラメーターを追跡する必要があります。n はリクエストの総数を定義し、c は同時リクエストの数を示します。

その結果、サーバーシステムが現在処理できるリクエスト数を示す RPS (1 秒あたりのリクエスト数) の読み取り値が得られます。 これは、ユーザーが一度にサーバーと対話しようとすると、システムがクラッシュする可能性があるユーザーの最大数を反映しています。 このテスト ルーチンは、最終的に何を期待するか、スケーラビリティを考慮したアーキテクチャを確立することがいかに重要かを示します。

一方で、ちょっと考えてみてください。 おそらく、特定のケースでは、いくつかのサーバー構成をカスタマイズし、キャッシング手順を最適化する方が手頃な価格になるでしょう. そうすれば、より良い時期までスケーリングを安全に延期できます。

スケーラビリティに特別な注意を払う必要があるのはなぜですか?

ビジネスが発展し始めたら、可能な限り柔軟で機知に富んだものでなければなりません。 新興企業は、人気と競争力を維持するために、変化するトレンドや市場の状況に迅速に適応できる必要があります。 アプリがスケーラブルであれば、成長が加速し、ユーザー エクスペリエンスが向上し、より多くのユーザーにリーチできます。 本質的に、スケーラビリティにより、アプリケーションをより適切に管理し、新しい要件に適応できます。 ビジネスの成長戦略を構築する場合、スケーラブルなアプリケーションの構築は最優先事項の 1 つです。

スケーリングの種類

主要で最も一般的なスケーリング手順には、次のものがあります。

垂直方向のスケーラビリティ - スケールアップ

垂直スケーリング 画像ソース: Dzone

垂直方向のスケーリングとは、内部サーバー リソース (CPU、メモリ、ドライブ、およびネットワーク容量) のパフォーマンスを向上させることによって、全体的なビジネス能力を拡大することです。 サーバーの基本的な形は変わりません。

水平スケーリング - スケールアウト

水平スケーリング 画像ソース: Dzone

この分野では、スケールアップとスケールアウトという真の闘いが繰り広げられています。 何が良いですか?

特に、デジタルの負荷とトラフィックがますます増大するにつれて、遅かれ早かれ垂直スケーリングはサーバーの技術仕様という形で限界に直面します。 そこで水平スケーリングの出番です。 この用語の基本的な意味は、既存のノードの上に同一のノードを追加することによって計算能力が向上することを定義しています。 水平方向のスケーリングは、調整されたサーバー インフラストラクチャ (特定のケース - データ センター) と、サーバー間の相互作用のスキームが確立されている場合に最も頻繁に解決されます。

対角スケーリング

これは、著者であり Adaptive Capacity Labs の共同設立者である John Allspaw が思いついた比較的新しい用語です。 したがって、対角スケーリングは 2 つの世界の長所を組み合わせ、既存のサーバー インフラストラクチャに既に実装されている水平方向にスケーリングされたノードの垂直方向のスケーリングを定義します。

最大のスケーラビリティを確保する方法

次に、最小限の費用でクラウド コンピューティングのスケーラビリティの手順を最も適切に実施するのに役立ついくつかの実用的なヒントについて説明します。

負荷分散の実施

負荷分散とは、1 つのソケットまたはクラスターに集中している複数のハードウェア/ソフトウェア リソース (ドライブ、CPU、または個別のサーバー) 間でコンピューティング ネットワーク プロセスを分散するための一連の作業を意味します。 ここでの主な目標は、コンピューティング能力の支出を最適化し、ネットワーク出力を高め、ネットワーク要求の処理中の時間支出を削減し、特定のサーバーが素晴らしい瞬間に DDoS に応答する可能性を下げることです。

さらに、(1 つのノードを完全に活用するのではなく) 複数のノード間で負荷を分散することにより、会社が提供するサービスのアクセシビリティが向上します。 特に、サーバー数が多すぎて、一部の稼働ユニットが故障した場合でも、自動交換の準備が整っています。

バランシングの手順は、ネットワーク、トランスポート、およびアプリケーションの OSI モデル層にそれぞれ対応する一連のアルゴリズムとメソッドの助けを借りて実装されます。 実際に実現するには、Nginx Web サーバーに似た特殊なソフトウェアと共に複数の物理サーバーを採用する必要があります。

Web サービスの自動スケーラビリティに目を向ける

自動スケーリングは、クラウド サービスのコンテキストにおける動的スケーリング (つまり、ネットワークの負荷量に応じてコンピューティング能力をカスタマイズすることを意味するスケーリング) に対する特別なアプローチです。 特に、自動スケーリング手順を含むサービス (Amazon Web Service、Google Cloud Platform、および Microsoft Azure が最も有名) のユーザーには、必要に応じて追加の仮想マシンが提供されます (クラスターまたはコンテナーから自動的に除外できます)。トラフィックとリクエストの強度が落ち着くにつれて)。

このようなアプローチにより、企業はアクセシビリティの向上、運用失敗時の機能、および究極の予算節約の機会を得ることができます。 このようなサービスを使用すると、その時点で必要なだけのサーバー パワーを使用できます。 高価なハードウェアを購入してさらに維持する必要がある場合、物理的なスケーリングとは対照的に、これは非常に有利なオプションです。

クラウドの自動スケーラビリティは、常に負荷分散ソリューションと連動していることに注意してください。

マイクロサービス コンテナ、クラスタ化

サービスをコンテナーにラップし、これらのコンテナーをクラスターにまとめる、リソース効率が高く、パフォーマンスを向上させる手順を採用できます。 クラスタ化に続いて、必要に応じて不足しているリソース (インスタンス) を追加するか、リソースの割り当てを最小限に抑えて過剰を回避するスクリプトを定義します。

キャッシングを実装する

水平方向のスケーリングでは、単純なメモリ キャッシュを一度に複数のノードに実装することはできないため、最適化する必要があります。 特に、Memcached や Redis などのストレージは、アプリケーションの反復間でキャッシュ データを組み合わせて分散するために使用できます。 これらのツールはさまざまなアルゴリズムに従って動作するため、キャッシュ データの量が削減されます。 キャッシュ ストレージは、レプリケーションやデータ ストレージ エラーからも十分に保護されています。

キャッシュ ストレージを使用する場合、異なるアプリ イテレーションがキャッシュされていないデータを同時に要求する状況を防ぐことが重要です。 そのためには、アプリのパフォーマンス フローの外部でキャッシュ データを更新し、それらをアプリ内で直接使用する必要があります。

このように、適切なアプローチにより、キャッシングは、システムが集中的な負荷を処理し、最適な出力を達成するためのクラウド スケーリング機能を取得するのに役立ちます。

CDN サービスを利用する

CDN は、コンテンツをサービス ユーザーに転送する、物理的に離れたコンピューターのネットワークです。 つまり、分散ストレージとキャッシュの採用です。 通常、CDN への移行は、Web サービス、Web サイト、または本格的なアプリケーションが、複数の国の領土全体に分散しているユーザー オーディエンスを対象としている場合に最も適切です。 CDN の価格は、サービスを通過するトラフィックの量に直接依存します。

あるいは、TA が広い地域に分布しているにもかかわらず、特定のユーザーが集中してローカライズされている場合、CDN は採算の取れないソリューションになる可能性があります。 つまり、TA の約 60% が米国、30% がロンドン、残りの 10% が世界中に散らばっているとします。 このような場合、CDN を使用することは、後者の 10% にのみ合理的な決定となります (他の場所では、新しいサーバーをインストールする必要があります)。

スケーリングの問題をどのように処理しますか?

現在、社内の専門家によって実施されているスケーリングの最も明るい例には、AWS、Microsoft Azure、Google Cloud、Digital Ocean などのパブリック クラウド ストレージ用の高スケーラビリティ アーキテクチャの構築が含まれます。 クラウド インフラストラクチャの作成、管理、および構成のための次世代システムである Terraform を使用して、自動化された環境デプロイ スクリプトを採用しています。 当社のサーバー クラスターは、自動スケーリング ソフトウェアの Kubernetes と、それを支援するコンテナー化技術の Docker に基づいています。

結論

クラウド コンピューティング環境でのスケーラビリティ 画像ソース: CDN.Lynda

上記の方法やその他の方法でクラウド コンピューティング環境のスケーラビリティを活用することで、より迅速かつ容易に成長し、常に俊敏性を維持できます。 スケーリングに対して完全に良心的なアプローチのみを採用しようとする場合は、間違いなく専門家に相談する必要があります。 お客様の特定のビジネスに最適なサーバー インフラストラクチャを提供する DevOps スペシャリストを見つけ、あらゆる強度の負荷を処理できるようにします。