* プロモーションの引き換えに関する規則と条件をご覧ください
水平スケーリングでは、システムにマシンを追加し、負荷を分散します。垂直スケーリングでは、単一のマシンの CPU、RAM、ストレージがアップグレードされます。どちらを選ぶかは、システムアーキテクチャとアプリケーションのニーズによります。
通常、アプリケーション・プログラミング・インターフェース(API)の需要は静的ではありません。時間の経過とともに増減します。トラフィックが急増するホリデーシーズンなど、一部のケースでは、API が他の時期よりもはるかに多くのリクエストを処理する必要があります。このようなトラフィックの増加に対応するためには、API の使用をスケールアップする必要があります。API をスケーリングするにあたり、システム管理者には 2 つの選択肢があります。水平スケーリングによってクラスターに API インスタンスを追加するか、垂直スケーリングによって API をサポートするマシンのコンピューティングキャパシティを追加するかです。この記事では、この 2 つの違いと、API のスケーリングに最適なのはどちらかについて説明します。
水平スケーリング
水平スケーリング(「スケールアウト」とも呼ばれる)は、追加の仮想マシン(VM)を展開し、負荷の増加に対処するための API キャパシティを増やすプロセスです(キャパシティの縮小は「スケールイン」と呼ばれます)。必要な容量が増えた場合、システム管理者がクラスターに VM を追加することができます。ただし、API コールの負荷を管理し、クラスター内の適切な VM インスタンスにルーティングして、バランスを維持するためには、専用のリソース管理ソフトウェアが必要です。
垂直スケーリング
垂直スケーリングとは、単一のノードにリソースを追加するプロセスです。これは、ノードを追加する水平スケーリングとは対照的です。垂直スケーリングは、スケールアップまたはスケールダウンとも呼ばれ、中央処理装置(CPU)のキャパシティ、メモリー、ストレージなどのリソースをサーバーに追加することを意味します。API の場合、垂直スケーリングでは通常、API をホストする VM にコンピューティングキャパシティを追加します。
例えば、1 つの CPU コアと 512 MB のランダム・アクセス・メモリ(RAM)が割り当てられた VM 上で API がホストされている場合に、その API をスケールアップして、コア数と RAM を倍増させるとします。その API には 2 つの専用 CPU プロセッサコアと 1,024 MB の RAM があることになります。この新しい設定では、API は約 2 倍の負荷を処理できるはずですが、ネットワーク帯域幅やストレージ速度の制約などの要因により、垂直スケーリングの効果が軽減される可能性があります。垂直スケーリングにはリソース管理の課題もありますが、通常は専門的なソフトウェアで対処できます。
API がステートレスであることがスケーリングにおいて重要である理由
API は通常、ステートレスになるように設計されています。つまり、リクエストデータを保存したり、セッション間で情報を保持したりしません。スケーリング方法を検討する際には、このステートレスという性質が極めて重要です。ステートレス API では、インスタンス間でデータを複製する必要がないため、水平スケーリングの方がより効率的かつ容易に実行できます。API クライアントは特定のサーバーインスタンスに依存せずに機能するため、システム管理者は API の運用に影響を与えることなく、必要に応じて VM を追加または削除できます。
ステートフルであることは、悪いことではありません。実際、目的のアプリ機能を実現するために不可欠である場合があります。ただし、ステートフルアプリの場合、水平スケーリングを実行することは非常に困難です。これを行うためには、保存されているデータを元のバージョンのアプリから新しいインスタンスにコピーする必要があります。
一方、ステートレスアプリや API は、リクエストデータを保存しないアプリや API です。メモリー内にセッションデータを保持しません。セッションが開始されるたびに、アプリはクライアントに初めて会ったかのようにふるまいます。セッションが終了すると、セッションの記憶がなくなり、「さようなら」となります。
ステートレスアプリでは、どの VM が API コールに応答しているかは重要ではないため、水平スケーリングが可能です。API クライアントは API をホストしている無数の VM を呼び出すことができるため、それは問題になりません。システム管理者は、API の動作に影響を与えることなく、必要な数の VM を追加または削除できます。
API に最適なのは水平スケーリング
API がステートレスであることを考えると、API に適したスケーリング方法は水平スケーリングです。VM を追加してキャパシティを増やすことは、ステートレス API に効果的です。管理者は、API の需要の増加に応じてスケールアウトする VM クラスターを作成できます。
さらに言えば、API の垂直スケーリングは可能ですが、水平方向のスケーリングが望ましいです。なぜなら、リソース割り当ての問題があるため、垂直スケーリングを行うのは比較的困難であるのに対し、API では水平オートスケーリングが機能しやすいからです。システム管理ツールは、API トラフィックの急増を検知すると、VM を自動的に追加して、クラスター内の API のインスタンスをより多くホストすることができます。垂直スケーリングの場合、オートスケーリングがうまく機能しないため、これはやや困難です。
API の需要は、時間の経過とともに必ず変化します。そのため、API のキャパシティを増減させる必要があります。API では、水平スケーリングと垂直スケーリングのどちらも選択できます。しかし、ステートレスという API の性質と、水平オートスケーリングの相対的な容易さが相まって、API をスケールアップするための適切なアプローチとしては水平スケーリングが好ましいです。
分散システムとマイクロサービスアーキテクチャ
マイクロサービスアーキテクチャに API が含まれる分散システムでは、水平スケーリングが特に好都合です。特定の負荷と要件に基づいて、各マイクロサービスを個別にスケーリングできます。このモジュール式のアプローチにより、リソースの使用効率が向上します。また、1 つのマイクロサービスで障害が発生しても他のマイクロサービスに影響しないため、耐障害性が向上します。
さらに、マイクロサービスアーキテクチャにおいて、水平スケーリングは、さまざまなサービスが複数のノードに展開される分散システムの原則に合致しています。これにより、システムはさまざまな負荷に対応し、ピーク時でも最適なパフォーマンスを維持できます。
スケーリング戦略によるダウンタイムの最小化
サービスが中断すると収益の損失や顧客満足度の低下につながる可能性があるため、API をスケーリングする際にはダウンタイムが重大な懸念事項となります。水平スケーリングでは、システム管理者が API の可用性に影響を与えることなくサーバーを追加または削除できるため、ダウンタイムが最小限に抑えられます。一方、垂直スケーリングでは、サーバーの再起動や一時的なオフライン化が必要になる場合があり、サービスが中断する可能性があります。
API プロバイダーは、水平スケーリングを活用することで、特に計画的なメンテナンス時や予期しないトラフィックの急増時に、継続的な稼働を確保できます。水平スケーリングによって負荷を複数のサーバーに分散することで、アップグレードや修理のために個々のサーバーをオフライン化する必要がある場合でも、API の応答性と可用性を維持できます。
よくあるご質問
垂直スケーリングでは、単一のサーバーのリソースをアップグレードしてパフォーマンスを強化します。これにより、より強力なサーバーで高い負荷を処理できるため、API リクエストの処理速度が向上します。ただし、垂直スケーリングでは効果が減少する可能性がある点に注意することが重要です。1 台のマシンのアップグレードには限界があります。一定の水準を超えると、パフォーマンスの向上が投資に比例しなくなる可能性があります。
水平スケーリングと垂直スケーリングを検討する場合は、潜在的なメリットとリスクを比較することが重要です。Rest API セキュリティへの影響などを考慮し、システムが障害に対する回復力を維持できるようにしてください。
水平スケーリングと垂直スケーリングの違いを理解して、それぞれをどのような場合に使用するかを判断することが重要です。
次の場合には垂直スケーリングを使用します。
- Web アプリケーションが初期段階にあるか、負荷が軽く、単一の強力なサーバーで効果的に処理できる場合。これは、API コールの需要が低い場合に特に当てはまります。
- アプリケーションや API が分散コンピューティングを適切にサポートしていない場合。アーキテクチャや設計が水平スケーリングの原則に沿っていない場合は、垂直スケーリングが適しています。
次の場合には水平スケーリングを使用します。
- アプリケーションが拡大し続けており、需要が急増する可能性がある場合。水平スケーリングにより、必要に応じてサーバーを追加することで、インフラが負荷の変化に適応できるようになります。
- 高い可用性と冗長性を確保する必要がある場合。水平スケーリングは冗長性をもたらすため、障害に対するシステムの回復力が向上し、1 台または複数台のサーバーがダウンしても稼働を継続できるようになります。
水平スケーリングと垂直スケーリングのコスト効率は、アプリケーション固有の要件、展開規模、全体的な需要などの要因によって異なります。垂直スケーリングではスケーリング時に新しいコンポーネントを 1 つか 2 つしか購入しないため、通常は垂直スケーリングの方がコスト効率が高くなります。しかし、サーバーのキャパシティの限界に近づくと、コスト効率が低下します。
Akamai が選ばれる理由
Akamai は、オンラインビジネスの力となり、守るサイバーセキュリティおよびクラウドコンピューティング企業です。市場をリードするセキュリティソリューション、優れた脅威インテリジェンス、そして世界中の運用チームが、あらゆるところで企業のデータとアプリケーションを多層防御で守ります。Akamai のフルスタック・クラウドコンピューティング・ソリューションは、世界で最も分散されたプラットフォーム上で、パフォーマンスと手頃な価格を両立します。安心してビジネスを展開できる業界トップクラスの信頼性、スケール、専門知識の提供により、Akamai は、あらゆる業界のグローバル企業から信頼を獲得しています。