コンテンツにスキップ

学習トピックを選ぶ

詳しい教材を順に読むための一覧ではなく、一つ選んで話し始めるための入口(基礎20題と実セッションから追加したテーマ)。 一般的なWebアプリの設計・運用で必要な基礎を選んだもので、面接出題頻度のランキングではない。 アルゴリズム問題や実装速度より、要件・理由・trade-off・障害時の判断を説明する。

  • DBの基礎:スキーマ → 索引 → 実行計画 → トランザクション。
  • 設計の練習:要件確認 → 責務分割 → API → キュー。
  • Productionの経験とつなぐ:可観測性 → 接続プール → ロック → 復元。

順番は必須ではない。過去のneeds_revisitがあれば、それを先に扱う。 Learnは概念から、Practiceは設計案から、Interviewは口頭の問いから始められる。 各ページに開始文がある。新規のSQL実験はまだなく、既存のIndex実験だけ実装済み。

トピック 最初に考える問い
スキーマ・制約・正規化 小さなECサイトの顧客・注文・注文明細をどう分け、何をDBの制約で守りますか?
索引・複合索引の設計 顧客ごとの新しい注文20件を返すAPIに、どんなindexを検討し、効果をどう確かめますか?
SQL・JOIN・実行計画 注文一覧に顧客名を表示すると急に遅くなりました。SQLとアプリのどちらから、何を確認しますか?
トランザクション・分離レベル 残り1個の商品を2人が同時購入します。どこを一つのtransactionにして、何を保証しますか?
MVCC・ロック・VACUUM CPUは低いのに更新APIが待ち続けています。MVCCがあるDBで、何が待ちの原因になり得ますか?
接続プール・同時実行制御 APIサーバーを3台から30台へ増やしたところ、DB接続エラーが増えました。どう設計し直しますか?
スキーマ変更・安全な移行 稼働中の注文テーブルに必須項目を追加します。新旧アプリが混在しても壊れない手順を説明してください。
バックアップ・復元・RTO/RPO バックアップ成功の通知はありますが、復元したことがありません。障害に備えて何を決め、何を試しますか?
レプリケーション・読み取り整合性 注文作成の直後、一覧に注文が見えないことがあります。読み取りをreplicaへ分けた設計をどう見直しますか?
データ増加・保持・分割の判断 履歴テーブルが毎月増え、検索と削除に時間がかかります。partitioningを入れる前に何を確認しますか?
トピック 最初に考える問い
要件確認・SLO・設計の出発点 予約サービスを作ってほしいと言われました。構成図を描く前に、何を誰に確認しますか?
責務分割・モノリスとサービス分割 5人チームで注文・在庫・請求を作ります。まずどう分割し、何が起きたらサービスを分けますか?
HTTP API・冪等性・ページネーション 注文作成APIでタイムアウトしたクライアントが再送します。契約とサーバー側の処理をどう設計しますか?
キャッシュ・鮮度・無効化 商品詳細APIを速くするためcacheを導入します。何をどこに置き、どの程度古くてもよいと判断しますか?
非同期ジョブ・キュー・重複処理 注文完了メールと外部連携を非同期にします。ジョブをどこで作り、成功と失敗をどう扱いますか?
認証・認可・テナント分離 複数企業が使うSaaSで、ログイン済みユーザーが他社の注文IDを指定しました。どこで何を検証しますか?
スケール・負荷分散・容量計画 APIのtrafficが10倍になる予定です。サーバー増設で解決する部分と、先に調べる制約は何ですか?
タイムアウト・再試行・障害の分離 外部決済APIが遅くなり、自分たちのAPIまで詰まりました。待ち時間と再試行をどう設計しますか?
可観測性・SLO・障害調査 ユーザーは遅いと言っていますがCPUアラートはありません。どの観測から調査を始めますか?
リリース・互換性・ロールバック 新バージョンを無停止で出したいとき、リリース方式と中止条件をどう決めますか?

実セッションから追加したテーマ

Section titled “実セッションから追加したテーマ”