「LBについて - ウェブサービスをさらにスムーズに!」に関しての考えをまとめました。
目次
システムアーキテクチャの勉強をしていて、すごいサイトを見つけたんだ!以下のサイトを見てみて! https://github.com/donnemartin/system-design-primer
そこで「短縮URLサービスのシステム構成を考えてみよう」というのがあってさ。 クライアント、Webサーバー、DBのシステムアーキテクチャはオーソドックスだけど、そこに「LoadBalancer」という新キャラが登場! LBって何か知ってる?イマイチピンとこなくて、もっと詳しく調べることにしたよ!
LBって何?
さて、ざっくり説明するとLB(ロードバランサー)って、特定のルールに従って、サーバーの負荷を分散させる仕組みなんだ。 これでウェブサイトに負担がかかりすぎることを防いだり、ドメイン名によってアクセス先のサーバーを変えるのに使ったりするんだよ。 それ以外にも、特定のサーバーに集中的にアクセスが来る場合、LBが「こっちのサーバー使って!」って振り分けてくれるんだって。
ロードバランサーって一言で言うと?
- 複数のサーバーを冗長化し、負荷を分散させることができるんだ!
- ロードバランサーは、アルゴリズムを使ってウェブサイトへのアクセスを上手に振り分けるんだよ。
- load(負荷)と「Balancer(調整役)」って意味だって!
クライアントがLBを通る時の流れ
普通のユーザーがウェブサーバーにアクセスするときの流れはこんな感じだね。
- ユーザーがブラウザからウェブサイトにアクセスするよ。(https://example.comみたいな感じで)
- ブラウザはDNSサーバーからアクセス先のIPアドレスをゲットするよ。
- ブラウザはゲットしたIPアドレスにHTTPリクエストを送るよ。
- サーバーはリクエストに対してレスポンスを返してくれるよ。(ウェブページが表示されるね)
この時、ロードバランサーが絡むのはこっち!
- ユーザーがブラウザからウェブサイトにアクセスするよ。(https://example.comみたいな感じで)
- ブラウザはDNSサーバーからアクセス先のIPアドレスをゲットするよ。
- ブラウザはゲットしたIPアドレスにHTTPリクエストを送るよ。
- でも実は、アクセス先のIPアドレスはロードバランサーを指しているのさ。だからHTTP通信はまずLBにアクセスするよ。(新しいステップだね)
- LBはアクセスされた条件に基づいて、開発者がLBに定義したIPアドレスに振り分けるんだ!(新しいステップだね)
ここでLBが大活躍なんだ。開発者がLBに定義したIPアドレスを持つサーバーをチェックして、負荷をバランスよく振り分けてくれるんだよ。たとえば、サーバーAが忙しすぎたらサーバーBにアクセスをリダイレクトするとかね。
LBは負荷分散のスペシャリストみたいなもんだね!
でもさ、最初にイメージしてたドメインごとのサーバー割り当てってどうなっちゃったんだろう?
Route53はドメインごとに割り当てるよ
それを聞くために、ChatGPTに質問してみたんだ。
「AWSでドメインごとにサーバーを変更させる機能ってあるのかな?」
すると、答えが出たよ!それは「Amazon Route 53」というサービスなんだって。
Amazon Route 53は、ドメインネームシステム(DNS)サービスであり、ドメイン名に対してトラフィックを適切なサーバーやリソースにルーティングする機能を提供します。これにより、異なるサブドメイン名に対して異なるサーバーにトラフィックをリダイレクトすることができます。例えば、subdomain1.example.comはサーバーAに、subdomain2.example.comはサーバーBに、といった具合に設定することができます。
なるほど!Route 53っていうのがそれなんだ。ちょっと混同していたけど、しっかり理解できたよ。
まとめ
そういうわけで、LBってのはサーバーの負荷分散や冗長化を自動でやってくれる便利なやつだとわかったよ。 一つのサーバーなら、それほど重要じゃないかもしれないけど、例えば緊急メンテナンスで本番サーバーと切り分けてメンテ画面を表示したり、GUIでカンタンに設定できるのがいいね! もちろん、コストのことも考えないといけないけど、導入を検討する価値はあると思うよ。
これでウェブサービスのスムーズな運営ができるかもしれないね!ウェブサイト制作がもっと楽しくなること間違いなし!