こんにちは、かびらです。
本日はALBについて解説します。
ALBとは?

ALBは、AWSが提供しているロードバランサーのサービスです。
ユーザーからのリクエストを受け取り、複数のEC2インスタンスやECSタスクに振り分けてくれます。
さらに、HTTPS対応や証明書の管理も可能で、セキュリティ面でも安心して利用できます。

では、このALBがどのようにリクエストを分散しているのか、その仕組みを見てみましょう。
クライアントからのアクセスが一つのサーバーに集中すると、処理が遅くなったり、最悪の場合はサービスが停止してしまう恐れがあります。
そこでALBを挟むことで、リクエストを複数のサーバーに分散し、全体の負荷を均等に分けることができます。
このロードバランシングの仕組みによって、安定したサービス提供が可能になるのです。
ALBを採用した理由

次にLuxucomで、ALBを採用した理由についてです。
Luxucomでは、ECSでコンテナを管理し、スケーラビリティを高めたいと考えていました。
そのため、ECSと組み合わせて利用できるロードバランサとして、ALBを採用しました。
このECSについては、次回詳しく解説します。
ALBと関連するアーキテクチャ

次に、Luxucomで、ALBと関連するアーキテクチャを見ていきます。
クライアントからのリクエストはまずALBで受け取ります。
ALBはHTTPSの終端を行い、ルーティングや負荷分散を担います。
その後、リクエストはECSクラスターにあるWeb用コンテナやWebSocket用コンテナに振り分けられます。
ALBはHTTPSの終端を行い、ルーティングや負荷分散を担います。
その後、リクエストはECSクラスターにあるWeb用コンテナやWebSocket用コンテナに振り分けられます。
ALBを使って良かった点

次に、Luxucomで、ALBを使って良かった点です。
ALBを使って良かったのは、まずコンテナの死活監視、いわゆるヘルスチェックが簡単に実現できたことです。
ECSとの統合もスムーズで、スケールアウトが容易になりました。
さらに、HTTPS対応をALBに任せられるので、アプリ側の実装をシンプルにできたのも大きなメリットでした。
ALBを使って難しかった点

最後に、Luxucomで、ALBを使って難しかった点です。
特に大変だったのは、ALBとECSコンテナを接続する部分です。
ターゲットグループやリスナーの概念を理解するのに時間がかかり、さらにセキュリティグループやVPC設定の調整でも手間取りました。
最終的には動かせましたが、最初はこの接続部分でかなり苦労しました。
さいごに
今回は、LuxucomにおけるALBの仕組みを紹介しました。
リクエストを分散させて、アプリを安定して動かすために欠かせない役割を担っていることが伝わったと思います。
次回は、このALBと組み合わせて使っているECSについて取り上げ、コンテナを活用したスケーラビリティの仕組みを解説していきます。