IT世界を流れる「水」と「配管」のメタファー — ALBのConnection Drainingから学ぶ

読了 4Infrastructure
IT世界を流れる「水」と「配管」のメタファー — ALBのConnection Drainingから学ぶ

IT用語には、日常的によく耳にする「水」や「流れ」にまつわるメタファーが数多く存在します。特にネットワークや分散システムといった、目に見えないデータの動きを扱う領域では、これらの表現が直感的な理解を助ける重要な役割を果たしています。

本記事では、AWSのApplication Load Balancer(ALB)における「Connection Draining」の仕組みを皮切りに、ITの世界に溢れる水のメタファーと、それを用いたクラウドインフラの理解のコツについて解説します。


1. ALBの「Connection Draining」と水のイメージ

AWSなどでEC2インスタンスやコンテナを保守・アップデートする際、あるいはオートスケーリングで台数を減らす際、いきなり対象のインスタンスを切り離すとどうなるでしょうか? そのインスタンスが処理している途中のリクエスト(例: ファイルアップロードや決済処理など)は強制終了してしまい、ユーザーにはエラーが返ってしまいます。

そこで使われるのが Connection Draining(コネクション・ドレーニング) という機能です。

Connection Drainingの動作フロー

Connection Drainingが有効なロードバランサーは、インスタンスの登録解除(Deregistration)が始まると以下のように振る舞います。

  1. 新規リクエストのシャットアウト: 切り離し対象のインスタンスには、それ以上新しいリクエストを振り分けません。
  2. 既存コネクションの維持(流しきる): すでにそのインスタンスに到達していて、現在処理中のリクエスト(コネクション)は、処理が完了するかタイムアウト(Deregistration Delay)に達するまで維持します。
  3. 安全な切り離し: すべての処理中のコネクションがゼロになった時点で、インスタンスをロードバランサーから安全に切り離します。

水にたとえると?

この「draining」は日本語で「排水」や「液体の水抜き」を意味します。

まるで、 水が流れ込むタンクのバルブを閉めて(新しい水は入れない)、中に溜まっている残りの水だけを蛇口からゆっくりと全部抜ききる(処理中のリクエストを最後まで流す) ようなイメージです。すべての水が抜けきった(接続がなくなった)ことを確認してから、配管を外すことで、水浸し(エラーの発生)を防ぐことができます。


2. ITの世界に溢れる「水」と「配管」の用語たち

Connection Drainingのほかにも、IT分野(特にデータ通信やインフラ)には、水にちなんだ用語が驚くほどたくさんあります。

用語 本来の水・配管の意味 ITにおける意味
Stream(ストリーム) 小川、水の流れ データの連続的な流れ(動画配信、イベントログなど)
Pipeline(パイプライン) パイプの配管、送油管 データを連続で処理する一連の仕組み(CI/CD、CPU命令実行など)
Throughput(スループット) 単位時間あたりの流量 単位時間あたりに処理できるデータ量や件数
Buffer(バッファ) 緩衝材、貯水槽 処理速度の差を吸収するため、一時的にデータを貯めておくメモリ領域
Overflow(オーバーフロー) (水などが)あふれること 割り当てられたメモリ領域を超えてデータがあふれる状態(スタックオーバーフローなど)
Flooding(フラッディング) 洪水、大量流入 ネットワーク上で大量のパケットを全ポートに送出・転送する動作
Drain(ドレイン) 排水する、流しだす コネクションを段階的に切断して排出し、安全にシステムを停止する
Leak(リーク) 漏れる 確保したメモリやリソースが解放されずに漏れ続ける状態(メモリリーク)
Sink / Source(シンク / ソース) 流れ込む先・発生源 データの終点(Sink)と起点(Source)
Backpressure(バックプレッシャー) (配管の)逆圧 下流の処理能力が追いつかない際、上流に流量抑制を要求する仕組み

電気回路のメタファーも

水と同様に、目に見えない流れを表現するメタファーとして「電気回路」に由来するものも広く混在しています。

  • Current(カレント): 現在の・流れている(電流)
  • Bus(バス): 共通配線(複数のコンポーネント間で共有されるデータ経路)
  • Gateway(ゲートウェイ): 門(異なるネットワークを繋ぐ出入り口)
  • Hub(ハブ): 車輪のハブ(中心となる中継機器)

3. インフラ構成を「水道設備」として捉え直す

クラウドインフラや分散システムの仕組みは、水道の配管図に置き換えると、直感的で非常に理解しやすくなります。

  • ALB (Application Load Balancer) = 「分岐バルブ」 流れてくる水を、適切に各パイプ(サーバー)へ等分に分配するバルブです。特定のパイプが詰まったり壊れたりしたら、そちらへのバルブを閉め(Deregister)、残った水を抜きます(Draining)。
  • Queue (メッセージキュー) = 「貯水槽(調整池)」 上流から一気に押し寄せる大量の水を一旦プールしておき、下流のポンプ(ワーカー)が処理できる適量ずつゆっくりと流し出す仕組みです。
  • Auto Scaling = 「自動水量ポンプ調節システム」 水の量(アクセス数やCPU負荷)が急激に増えたら、自動でポンプの数を増やして水圧を維持し、水が減ったらポンプを止めて稼働コストを下げる仕組みです。

まとめ:ドキュメントを読むのが楽しくなる

AWSや各種インフラツール、プログラミング言語のドキュメントを読むときに、 「これは水道設備のどの部品に当たるだろう?」 と考えてみるのは非常におすすめです。

単に難しい英語や略称として覚えるよりも、「水をどう制御し、どう安全に流すか」という配管のイメージを持つことで、技術概念の本質がスッと頭に入ってくるようになります。

次に「Draining」や「Backpressure」という言葉を見かけたときは、ぜひ配管の中を流れる「水」のイメージを思い浮かべてみてください!

関連記事