初級では「バケツリレー」で全体をつかみました。中級では、その1往復が HTTP という約束事の上で動くこと、各機械がどんな言葉で会話するかを見ます。
ここではシステム構成の各機械に焦点を当てます。URL入力から画面表示までの通信経路(DNS・TCP・TLS…)の詳細は URLを打ってから表示されるまで を参照してください。
初級では「バケツリレー」で全体をつかみました。中級では、その1往復が HTTP という約束事の上で動くこと、各機械がどんな言葉で会話するかを見ます。
ここではシステム構成の各機械に焦点を当てます。URL入力から画面表示までの通信経路(DNS・TCP・TLS…)の詳細は URLを打ってから表示されるまで を参照してください。
1リクエストとは、HTTPリクエストを送り、HTTPレスポンスを受け取る1往復のこと。図の各ノードは、この往復の「どの区間」を担うかを表します。左のブラウザが起点、右のデータ層が終点です。
1リクエストは、責務の違う4つの層を通り抜けます。層で分けて考えると、障害の切り分けもスケールの設計も一気に見通せます。
各層は「上の層は下の層の中身を知らなくてよい」ように責務の境界で仕切られています。だから1つの層だけを増強・交換できます。
左のあなた(ブラウザ)から出たお願いが、右のデータまで往復して戻ってくる——これが1リクエストの流れです。各マスをクリックすると、その機械の解説へ飛べます(このあと1つずつ作っていきます)。
ポイントは2つの「囲い」:
example.com のような名前を、実際の宛先(IPアドレス)に変換する登場人物メモ(※の説明):
上から順に、それぞれの層で何が起きているかと、深掘り先を示します。
各機械の内部は上のリンク先で深掘りします。ここで押さえたいのは、どの層に何の責務があり、どこが増やせて、どこが詰まりやすいかという全体の骨格です。
登場人物メモ(※の説明):
利用者が増えても倒れないための、システム側の3本柱です。
この3つはいずれも「1本道を太くする」のではなく「道を増やす/手前で折り返す/後回しにする」という発想です。
基本は「ブラウザ→入口→フロント→バック→DB」の一本道。そこに、快適さのための脇役が足されます。
CDNとキャッシュは名前が似ていますが、CDN=配信の近道/キャッシュ=処理の近道、と向きが違います。
ステータスコードは「どの層で・何が起きたか」を読む手がかりです。
遅いときのリトライ(再送)は、処理が二重に走らないか——冪等性(同じ操作を何度やっても結果が同じか)に注意します。
規模が大きい系では、1点の不調が連鎖して広がります。層で考えると連鎖の断ち方が見えます。
どれも「どの機械で起きたか」を知っていると、原因の見当がつくようになります。
そのまま解けます(成績は保存されません)。無料アカウントを作ると、学習の記録と進捗の山登りが始まります。
問1. 「403 Forbidden」が返ってきた。最も近い原因は?
問2. HTTPSの「S」が主に担うのは?
問3. 「429 Too Many Requests」が返ってきた。最も近い意味は?
問4. リクエストの最初の一手であるDNSが担うのはどれ?
問5. HTTPリクエストを構成する4点セットとして正しいのは?
問6. 遅いときにリクエストを再送(リトライ)する際、まず気をつけるべき性質はどれ?
問7. CDNのエッジがキャッシュを持っていて、オリジンへ行かずに即返せた状態を英語2語で何と呼ぶ?
問8. サーバ側の予期しない内部エラーを表す、代表的なHTTPステータスコードを3桁の数字で答えよ。