Cloud Ace Tech Blog
👻

【初心者向け】ざっくり解説!Google Cloud Load Balancingとは?仕組みとユースケースを紹介

はじめに

クラウドエース DevSecOps 事業部の羽田です。
今回はGoogle Cloud Load Balancing について初心者でもざっくり理解できるように図解を交えながら紹介していきます。

今回はざっくり解説のため Cloud Load Balancing の種類の解説等はしません。

この記事でわかること

  • Load Balancer が何かわかる
  • Google Cloud の Cloud Load Balancing の特徴がわかる
  • Cloud Load Balancing の具体的なユースケースがわかる

この記事での最終目標は IT 初心者、Google Cloud 初心者の方が、Google Cloud の Cloud Load Balancing がどのようなものか、ざっくりと理解してもらうことです。

しかし、Google Cloud の Cloud Load Balancing を理解するには、まず Load Balancer の基本的な概念を把握する必要があります。
そのため、本記事ではまず Load Balancer について紹介し、その後に Google Cloud の Cloud Load Balancing を解説します。

Load Balancerとは何か?

Load Balancer とは、名前の通り 負荷(Load)を均衡の取れた状態(Balanced)に保つためにリクエストを分散させるものです。
要するに、ユーザーなどからのリクエストを複数のサーバーへ負荷を分散するものです。

より詳しく説明するため、以下で負荷(Load)と均衡の取れた状態(Balanced)について解説します。

負荷(Load)とは

負荷とは 「サーバーがリクエストを処理する量」により発生する負担 を指します。

例えば、テレビなどで紹介されたサイトや商品にアクセスが集中し、サイトに接続できなかったり、表示に時間がかかったりする経験がある方もいるのではないでしょうか。
これは、アクセス数が急増したことでサーバーがリクエストを処理しきれていない状態を表しています。
これがサーバーに負荷がかかっているということです。

均衡の取れた状態(Balanced)とは

均衡とは特定のサーバーに負担が偏らず、均等な状態を指します。

例えば、最近だとスーパーなどでセルフレジがあると思います。
セルフレジでは、混雑する時間帯に店員さんが特定のレジに負担が偏らないように、空いているレジへ誘導している姿を見ることがあります。

Load Balancer の動作イメージ

Load Balancer がどのように動作するのか、イメージを掴むために、リクエストの流れを簡単に説明します。
前提として、ここでいう Load Balancer はその背後に複数のサーバーがあることを想定しています。

  1. リクエストの受信

    • ユーザーからのリクエストが Load Balancer に届きます
    • Load Balancer は、このリクエストを最初に受け取る「入り口」の役割を果たします
  2. サーバーの選択

    • Load Balancer は、複数のサーバー(バックエンド)の中から、最も適切なサーバーを選択します
    • 選択の基準としては、サーバーの負荷状況、ヘルスチェックの結果(正常に動作しているか)、地理的な距離などが考慮されます
  3. リクエストの転送

    • 選択されたサーバーにリクエストを転送します
    • ユーザーは、どのサーバーが処理したか意識することなく、レスポンスを受け取ることができます
  4. レスポンスの返却

    • サーバーからのレスポンスは、Load Balancer を経由してユーザーに返されます
    • ユーザーから見ると、1つのサーバーと通信しているように見えますが、実際には複数のサーバーで負荷分散されています

図でざっくり理解!

Load Balancer がない時とある時の様子を図で解説します。
Load Balancer の重要性が理解できるでしょう。

Load Balancer がない場合:
1台のサーバーにすべてのリクエストが集中し、サーバーに負荷がかかり、処理しきれなくなります。

Load Balancer がある場合:
Load Balancer がリクエストを複数のサーバーに分散させ、各サーバーの負荷を均等に保つことで特定のサーバーに負荷が偏りません。

このように、Load Balancer は「交通整理」のような役割を果たし、リクエストを適切に分散させることで、システム全体のパフォーマンスを向上させます。

Google Cloud Load Balancing とは何か

Google Cloud Load Balancing も、基本的な役割は通常の Load Balancer と変わりありません。
しかし、Google Cloud ならではの特徴もあるため、紹介します。
紹介する内容以外にも様々な機能がありますが、今回は割愛します。

Cloud Load Balancing の特徴

Cloud Load Balancing の一般的な Load Balancer との違いと、Google Cloud ならではの特徴として、以下の 4 点が挙げられます。

  • フルマネージドであり実機の設置などが一切不要
  • 用途に合わせて種類を選べる
  • フルマネージドのため、Load Balancer 用の実機や入口の増減を自分で用意・調整する必要がない
  • グローバル負荷分散への対応が容易

以下でそれぞれ説明します。

用途に合わせて種類を選べる

Google Cloud の Cloud Load Balancing は用途に応じて種類を選べます。
主に以下の観点で選択できます。

  • トラフィックの種類: HTTP/HTTPS、またはTCP/UDP
  • 通信の範囲: インターネットからのアクセスに対応する外部 Load Balancer か、Google Cloud 内部で利用される内部 Load Balancer か

用途に悩んだ際は以下のステップで判断すると良いでしょう。

  1. どこからのアクセスか?(外部 or 内部)
    アクセス元がどこかを考えましょう。

    • 外部: インターネット経由で不特定多数のユーザーがアクセスする場合
    • 内部: Google Cloud内(VPC内)のサーバー同士など、プライベートなネットワーク内でのみ通信する場合
  2. どんな通信内容か?(HTTP/S or その他)
    通信のプロトコルを確認しましょう。

    • アプリケーション(HTTP/S): WebサイトやWebアプリなど。URLに応じた振り分けや、SSL(証明書)の管理も必要となる場合。
    • ネットワーク(TCP/UDP): ゲームの通信、メールサーバー、データベースなど、HTTP/S以外のプロトコルで高速な処理が必要な場合
  3. どこまで広げるか?(グローバル or リージョン)
    サービスの展開規模で選びましょう。

    • グローバル: 世界中のユーザーに最も近い拠点からレスポンスを返したい場合や、世界規模のサービスの場合。
    • リージョン: 特定の地域(東京リージョンのみなど)だけで安定して動かしたい場合。

トラフィック増減への対応

Cloud Load Balancing はフルマネージドのサービスです。Load Balancer 用の実機を用意する必要はありません。

入口でのトラフィック受け付けは、Google Front End(GFE)など Google が管理する基盤が担います。ここはマネージドの領域なので、利用者が Load Balancer の増減を設定したり意識したりする必要はありません。

トラフィックに合わせて増減させたいのは、多くの場合 Load Balancer の奥で動くサーバー(VM など) です。Managed Instance Group などと組み合わせると、サーバーの台数を自動で増減できます。サーバーを増やすときは、起動に時間がかかることがあります。

自動スケーリングのメリット

  • トラフィックに合わせてサーバーの台数が増減する。ピーク時用に常に多めの台数を確保しておく必要がない。
  • サーバーの追加・削除を手動で行う必要がない。運用の手間が減る。

料金についてはこちらの公式ドキュメントを参考にしてください

具体例

  • 平日の昼間はトラフィックが少ないが、夜間や週末に急増するサービスでは、Managed Instance Group などでサーバーの台数が自動で増減する。
  • テレビ CM や SNS でアクセスが急増したときは、処理用サーバーの台数やオートスケールの設定が重要になる。

グローバル負荷分散への対応が容易

従来のオンプレミス環境の Load Balancer では、物理的な機器が特定の場所に設置されていることがほとんどです。
そのため、海外からの大量のリクエストがあった際に、Load Balancer が負荷分散を行っても、物理的距離によって遅延が発生します。
しかし、Cloud Load Balancing では、世界中の Google のインフラを入り口として利用することができるため、物理的距離による遅延をほぼなくすことができます。

グローバル負荷分散の仕組み
ユーザーからのリクエストは、最も近い Google の拠点に到達するよう設計されています。
Cloud Load Balancing は、ユーザーの位置とバックエンドサーバーの位置を考慮して、最適なサーバーを選択します。
これにより、物理的な距離による遅延を最小化し、世界中のユーザーに高速なレスポンスを提供できる仕組みとなっています。

具体例

  • 日本のユーザーがアクセスした場合:東京リージョンのサーバーに振り分けられる
  • アメリカのユーザーがアクセスした場合:アメリカリージョンのサーバーに振り分けられる
  • ヨーロッパのユーザーがアクセスした場合:ヨーロッパリージョンのサーバーに振り分けられる

つまり、世界規模で高速かつ低遅延な通信を実現できます。

Cloud Load Balancing のユースケース

ここでは、Cloud Load Balancing が実際にどのような場面で使われるのか、具体的なユースケースを紹介します。

1. ECサイトやWebアプリケーション

ユースケース オンラインショッピングサイトやWebアプリケーションで、大量のユーザーアクセスを処理する場合

なぜ必要か

  • セールやキャンペーンなどで急激にアクセスが増加した際に、1台のサーバーでは処理しきれなくなることがある
  • 複数のサーバーに負荷分散することで、サイトのダウンを防ぎ、快適な購入体験を提供できる
  • 1台のサーバーが故障しても、他のサーバーが処理を引き継ぐため、サービスを継続できる

ブラックフライデーや年末年始のセールで、通常の10倍以上のアクセスが発生しても、サイトが正常に動作し続ける

2. APIサーバーの負荷分散

ユースケース モバイルアプリやWebアプリから呼び出されるAPIサーバーで、多数のリクエストを処理する場合

なぜ必要か

  • モバイルアプリが世界中のユーザーに使われる場合、APIサーバーへのリクエストが集中する
  • Cloud Load Balancing のグローバル負荷分散機能により、ユーザーに最も近いリージョンのAPIサーバーにリクエストを振り分けることができる
  • これにより、レスポンス時間を短縮し、ユーザー体験を向上させることができる

日本のユーザーは東京リージョンのAPIサーバー、アメリカのユーザーはアメリカリージョンのAPIサーバーに自動的に振り分けられる

3. マルチリージョン展開

ユースケース グローバルにサービスを展開し、世界中のユーザーに高速なレスポンスを提供したい場合

なぜ必要か

  • サービスを複数のリージョン(東京、ヨーロッパ、アメリカなど)に展開することで、災害時の可用性を向上させることができる
  • 1つのリージョンで障害が発生しても、他のリージョンでサービスを継続できる
  • ユーザーの地理的な位置に応じて、最も近いリージョンに自動的に振り分けることで、遅延を最小化できる

日本のユーザーは東京リージョン、ヨーロッパのユーザーはベルギーリージョンからサービスを受けられる

4. 内部システム間の通信

ユースケース Google Cloud 内の複数のサーバー間で、プライベートな通信を行う場合

なぜ必要か

  • データベースサーバーやアプリケーションサーバーなど、内部システム間の通信でも負荷分散が必要な場合がある
  • 内部 Load Balancer を使用することで、インターネットを経由せずに、セキュアに負荷分散できる
  • 複数のデータベースサーバーに読み取りリクエストを分散させ、パフォーマンスを向上させる

アプリケーションサーバーからデータベースへの読み取りリクエストを、複数のデータベースサーバーに分散させる

5. ゲームサーバーやリアルタイム通信

ユースケース オンラインゲームやリアルタイム通信アプリケーションで、低遅延が求められる場合

なぜ必要か

  • ゲームでは、わずかな遅延がユーザー体験に大きな影響を与える
  • TCP/UDP Load Balancer を使用することで、HTTP/S よりも高速な通信が可能
  • 複数のゲームサーバーに接続を分散させることで、1つのサーバーに負荷が集中することを防ぐ

例: オンラインゲームで、多数のプレイヤーが同時に接続しても、快適にプレイできる

これらのユースケースからもわかるように、Cloud Load Balancing は単に負荷を分散するだけでなく、可用性の向上、パフォーマンスの改善、グローバル展開の支援など、様々な目的で活用されています。

まとめ

今回は、Google Cloud Load Balancing について、初心者の方でも理解できるようにざっくり紹介してきました。

Cloud Load Balancing には、用途に応じて様々な種類があり、それぞれ異なる特徴や機能を持っています。そのため、初めて触れる方にとっては少し複雑に感じるかもしれません。

しかし、この複雑さこそが Cloud Load Balancing の強みでもあります。なぜなら、要件に合った Load Balancer を選択できるからです。
自分のサービスやアプリケーションの要件に応じて、最適な Load Balancer を選ぶことで、効率的でコストパフォーマンスの良い構成を実現できます。

本記事では、Cloud Load Balancing の基本的な概念や特徴について紹介しましたが、実際に導入を検討する際は、種類が多岐にわたるため、公式ドキュメントを参照し、ご自身の要件に合った Load Balancer を選択してください。

このブログが、Google Cloud Load Balancing を学ぶ初心者の方にとって理解の第一歩となれば幸いです。

Cloud Ace Tech Blog
Cloud Ace Tech Blog

Discussion