§ 01 何を建てるのか
街の中心に建つのは、カードをかざすと残高が減り、利用記録が残る改札サービスです。Part 4 の最後に、このサービスを 4 台のサーバで動かします。
サービスは 3 つの役割に分かれています。要求を受け取る「入口」、残高の計算などの処理を行う「App」、残高や履歴を保存する「DB」です。App は 2 台用意するので、全体は入口 1 台・App 2 台・DB 1 台の合計 4 台になります。
役割ごとにサーバを分けると、どこが止まったかによって起きることが変わります。入口が止まればアクセスを受け付けられません。App が止まれば処理できません。DB が止まれば残高を読み書きできません。
§ 02 街の地図と工程
街は 7 つのエリアに分かれています。各エリアが 1 つの Part に対応します。
| エリア | Part | 一言 | 状態 |
|---|---|---|---|
| Linux 基礎エリア | Part 1 Linux 基礎 | 1 台のサーバの中を動かす | 教材公開・実機演習あり |
| ネットワークエリア | Part 2 ネットワーク基礎 | サーバ同士を道でつなぐ | 教材公開・実機演習あり |
| サーバー運用エリア | Part 3 サーバ運用 | 動いているサービスを維持する | 教材公開・実機演習は提供していない |
| サービスエリア | Part 4 サーバ構築 | 複数のサーバを組み合わせてサービスを作る | 教材公開・実機演習は提供していない |
| 仮想化エリア(建設中) | Part 5 仮想化 | これから作るエリア | まだ作っていない(教材も未公開) |
| ストレージエリア(建設中) | Part 6 ストレージ | これから作るエリア | まだ作っていない(教材も未公開) |
| 監視・障害対応エリア(建設中) | Part 7 監視 | これから作るエリア | まだ作っていない(教材も未公開) |
初めてインフラを学ぶ方は、Part 1 から順番に進むことをおすすめします。Linux やネットワークの経験がある方は、必要な Part から読んでも構いません。ただし、後の Part では前の Part で説明した用語やコマンドが登場します。
§ 03 街の言葉と技術の言葉
Part 4 では、サービスの仕組みを「改札」にたとえて説明します。ここでは、街の中の言葉が実際の技術では何を意味するのかだけ、簡単に確認しておきます。
| 街の言葉 | 技術の言葉 | 簡単な説明 |
|---|---|---|
| 改札(サービス全体) | 3 つの役割(入口・App・DB) | 入口・App・DB が連携し、ひとつの処理を完了させる仕組み |
| 入口(改札の入り口) | 入口のサーバ(nginx) | 要求を受け付け、App へ渡す |
| タップ(カードをかざす動作) | 1 件ごとの処理の依頼(HTTP 要求) | App が受け取り、DB に記録する |
| 残高 | 残高を保存する表(cards テーブル) | DB がトランザクション(複数の更新をひとまとまりとして扱う仕組み)と制約で正確さを守る |
| event ID(1 回ごとの識別子) | 処理ごとに付ける識別子(event ID) | 同じ処理を二重に実行させないための鍵 |
| App | 処理を行うサーバ(アプリサーバ) | 入口と DB の間で処理を実行する |
| 振り分け(複数の App への割り当て) | 振り分けの設定(nginx の upstream) | 2 台の App へ要求を振り分ける |
この言葉の対応は、章の中で繰り返し使います。「タップが届かない」と言ったとき、それは nginx の入口に届かないのか、App まで届かないのか、DB に記録されないのか。役割ごとに分けて確かめることが、この教材の中心にあります。
§ 04 最初の一歩
初めての方は、Part 1 の第 1 章から始めてみましょう。Linux のターミナルを開いて、ファイルを操作するところからです。
Part 1 第 1 章へ進む →