Skip to main content
AI EducademyAIEducademy
🌳

AI基礎

🌱
AI Seeds(種)

実社会で役立つAIリテラシー

🌿
AI Sprouts(芽)

インテリジェントシステムを支える基礎

🌳
AI Branches(枝)

今日のAIの実力を活かして作る

🏕️
AI Canopy(樹冠)

信頼できる生成AIシステムを設計する

🌲
AI Forest(森)

責任あるかたちでAIプロダクトを世に出す

🔨

AIマスタリー

✏️
AI Sketch(スケッチ)

AIを作る人のためのエンジニアリング基礎

🪨
AI Chisel(鑿)

より難しい問題を解くためのパターン

⚒️
AI Craft(制作)

AIをスケールさせるシステムを設計する

💎
AI Polish(磨き上げ)

AI時代に伝え、導く

🏆
AI Masterpiece(傑作)

あなたの本番AIキャップストーン

🚀

キャリア準備

🚀
面接ローンチパッド

AIエンジニアリングの求人市場を切り拓く

🌟
行動面接マスター

自分がどう成果を生み出すのかを語る

💻
技術面接

プレッシャーの中で解き、設計し、伝える

🤖
AI・ML面接

最新のMLと生成AIの面接に備える

🏆
オファーとその先

自信を持って、納得のうえで次の一歩を踏み出す

全プログラムを見る→

ラボ

7つの実験がロード済み
🧠ニューラルネットワーク プレイグラウンド🤖AIか人間か?💬プロンプトラボ🎨画像生成😊感情分析ツール💡チャットボットビルダー⚖️倫理シミュレーター
🎯模擬面接ラボへ入る→
ジャーニーブログ
🎯
概要

すべての人にAI教育をアクセス可能にする

❓
よくある質問

よくある質問への回答

🧰
AI ツール

私たちが使い、おすすめする厳選ツール

✉️
お問い合わせ

お気軽にご連絡ください

⭐
オープンソース

GitHubで公開開発

料金
始める
AI EducademyAIEducademy

© 2026 AI Educademy. 無断転載を禁じます。

学ぶ

  • プログラム
  • レッスン
  • ラボ
  • AIスターターキット
  • 料金

コミュニティ

  • GitHub
  • 貢献する
  • 行動規範
  • 概要
  • よくある質問

サポート

  • コーヒーをおごる ☕
  • 利用規約
  • プライバシーポリシー
  • お問い合わせ
  • Sitemap
AI & エンジニアリング プログラム›⚒️ AI Craft(制作)›レッスン›システム設計の基礎 - スケーラブルなシステムの構成要素
🏗️
AI Craft(制作) • 上級⏱️ 20 分で読める

システム設計の基礎 - スケーラブルなシステムの構成要素

🤖

このレッスンは日本語に自動翻訳されたもので、まだ人によるチェックを受けていません。表現に違和感がある場合は、英語の原文が正となります。

システム設計が重要な理由

すべての大規模アプリケーションは、同じ基本的な構成要素から組み立てられます。面接官は、あなたが新しいテクノロジーを発明することを期待していません。彼らは、あなたが特定の問題に対して適切なコンポーネントを選択して組み合わせることを望んでいます。このレッスンでは、あらゆる設計インタビューで使用するツールキットについて説明します。

クライアントサーバーアーキテクチャ

Web はその中核として、クライアントがリクエストを送信し、サーバーがリクエストを処理し、応答が戻ってくるという単純なモデルに従っています。しかし、最新のシステムは、スケール、信頼性、パフォーマンスを処理するために、これら 2 つのエンドポイントの間にレイヤーを追加します。

一般的なリクエストは、クライアント → CDN → ロード バランサー → API ゲートウェイ → アプリケーション サーバー → キャッシュ → データベースを通過する可能性があります。各レイヤーは特定の問題を解決し、各レイヤーが「いつ」必要になるかを理解することで、有力な候補者と平均的な候補者を区別します。

💡

面接では、詳細に入る前に、必ずクライアントとサーバー間の高レベルなフローを概略的に説明することから始めます。構造化された思考を示します。

ロードバランサ: トラフィックの分散

単一サーバーの容量は有限です。ロード バランサーは、次のような戦略を使用して、受信リクエストを複数のサーバーに分散します。

  • ラウンドロビン - リクエストはサーバーを順番に循環します
  • 最小接続数 - アクティブなリクエストを処理するサーバーが最も少ないサーバーにルーティングします。
  • 一貫したハッシュ - キーに基づいてリクエストを特定のサーバーにマッピングします (キャッシュに役立ちます)

ロード バランサーは ヘルス チェックも実行し、異常なサーバーをプールから自動的に削除します。クラウド環境では、AWS ALB や Azure Front Door などのサービスがこれを透過的に処理します。

🧠クイックチェック

ソーシャル メディア フィード サービスは、書き込みよりも 10 倍多くの読み取りを受け取ります。ユーザーが同じキャッシュウォームサーバーに一貫してアクセスできるようにするのに最適な負荷分散アプローチはどれですか?

キャッシュ: すべてのレイヤーでの速度

キャッシュは、頻繁にアクセスされるデータを消費者の近くに保存します。それは複数のレベルで存在します。

|レイヤー |例 |レイテンシ | |----------|-----------|----------| |ブラウザキャッシュ |静的アセット、API レスポンス | ~0ms | | CDN |画像、CSS、JS ファイル | ~10-50ms | |アプリケーションキャッシュ | Redis、Memcached | ~1-5ms | |データベースキャッシュ |クエリ結果キャッシュ | ~5-10ms |

キャッシュの無効化 は、コンピューティングにおける最も困難な問題の 1 つとして知られています。一般的な戦略には、TTL (存続時間)、ライトスルー (書き込みごとにキャッシュを更新)、キャッシュアサイド (アプリケーションがキャッシュを明示的に管理) などがあります。

🤯

Phil Karlton の有名な言葉、「コンピュータ サイエンスで難しいことは 2 つだけです。それはキャッシュの無効化と名前付けです。」は非常に広く引用されているため、システム設計の面接では事実上通過儀礼となっています。

データベース: SQL と NoSQL

適切なデータベースの選択は、最も影響力のある設計上の決定の 1 つです。

SQL データベース (PostgreSQL、MySQL) は、ACID トランザクション、強整合性、構造化スキーマを提供します。データに明確な関係があり、結合を伴う複雑なクエリが必要な場合に威力を発揮します。

NoSQL データベース にはいくつかの種類があります。

  • (MongoDB) - 柔軟なスキーマ、さまざまなデータ構造に最適
10のレッスン10%完了
←プログラムに戻る
続ける: URL 短縮ツールの設計 - 初めてのシステム設計インタビュー→

ディスカッション

サインイン してディスカッションに参加

このレッスンの修正を提案する
ドキュメント ストア
  • キー/値ストア (DynamoDB、Redis) - キーによる超高速ルックアップ
  • ワイドカラム ストア (Cassandra) - 設計により分散された大規模な書き込みスループット
  • グラフ データベース (Neo4j) - ソーシャル ネットワークなどの関係性の高いデータ
  • 🧠クイックチェック

    あなたは、頻繁に変更される半構造化データ (ユーザー タイプごとに異なるフィールド) を含むユーザー プロファイルを保存するシステムを設計しています。どのデータベース タイプが最も適合しますか?

    メッセージ キュー: 非同期処理

    すべての操作に即時応答が必要なわけではありません。メッセージ キュー (RabbitMQ、Apache Kafka、AWS SQS) はプロデューサーとコンシューマーを分離し、次のことを可能にします。

    • 非同期処理 - サインアップ後に応答をブロックせずにメールを送信します
    • 負荷平準化 - リクエストをバッファリングすることでトラフィックの急増を吸収します。
    • フォールト トレランス - コンシューマがクラッシュした場合、メッセージはキュー内で待機します

    Kafka は特筆に値します。Kafka は単なるキューではなく、分散イベント ログであり、複数のコンシューマが同じイベント ストリームを独立して処理できるイベント駆動型アーキテクチャを可能にします。

    クライアント、ロードバランサー、アプリケーションサーバー、キャッシュレイヤー、データベース、メッセージキューを示すアーキテクチャ図
    スケーラブルなシステムの基本的な構成要素 - 各層が特定の懸念事項に対処します。

    マイクロサービス vs モノリス

    |側面 |モノリス |マイクロサービス | |----------|----------|----------| |導入 |単体 |独立したサービス | |スケーリング |すべてを一緒にスケールする |個々のサービスを拡張する | |複雑さ |より簡単に始められる |運用上のオーバーヘッド | |データ |共有データベース |サービスごとのデータベース |

    モノリスを開始し、必要に応じてマイクロサービスを抽出します。 ほとんどの面接官は、マイクロサービスが分散システムの複雑さ (ネットワーク障害、データの一貫性、展開のオーケストレーション) を引き起こすこと、および必ずしも正しい選択ではないことを認識している候補者を高く評価します。

    🤔
    Think about it:

    Netflix が数年かけてモノリスからマイクロサービスに移行したことは有名です。しかし、数十億のトランザクションを処理する Shopify は依然としてモジュール式のモノリスを実行しています。特定の企業にとって、一方のアプローチが他方よりも優れている要因は何でしょうか?

    簡略化された CAP 定理

    CAP 定理では、分散システムは 3 つのうち 2 のプロパティのみを同時に保証できると述べています。

    • 一貫性 - すべての読み取りが最新の書き込みを返します
    • 可用性 - すべてのリクエストが応答を受け取ります
    • パーティション耐性 - ネットワーク障害にもかかわらずシステムは動作し続けます

    分散システムではネットワークの分断が避けられないため、実際の選択は CP (可用性よりも一貫性) か AP (一貫性よりも可用性) のどちらかになります。

    • CP システム (例: 大半の読み取りを行う HBase、MongoDB) - 古いデータではなくエラーを返す
    • AP システム (Cassandra、DynamoDB など) - 常に応答しますが、データが若干古い可能性があります
    🧠クイックチェック

    あなたは、不正な残高が経済的損失を引き起こす可能性がある銀行取引システムを設計しています。どの CAP トレードオフを優先する必要がありますか?

    面接の枠組み

    システム設計の面接に入るときは、次の構成に従ってください。

    1. 要件 - 機能要件と非機能要件を明確にする (5 分)
    2. API 設計 - 主要なエンドポイントまたはインターフェイスを定義します (5 分)
    3. データ モデル - データベースを選択し、スキーマを定義します (5 分)
    4. 高レベルのアーキテクチャ - 現在のビルディング ブロックを使用してシステムをスケッチします (10 分)
    5. 詳細 - ボトルネックのスケール調整、障害の処理、最適化 (15 分)
    🤔
    Think about it:

    Instagram、Uber、Spotify など、あなたが毎日使用しているシステムについて考えてみましょう。このレッスンで使用されている可能性のある構成要素を特定できますか?ロードバランサーはどこに配置されますか?何がキャッシュされるのでしょうか?どのデータベース タイプがそのデータ モデルに適合しますか?

    重要なポイント

    • すべてのスケーラブルなシステムは同じコア構成要素を使用します - それらを一度学習すれば、どこにでも適用できます
    • ロード バランサー、キャッシュ、メッセージ キューがそれぞれ異なるスケーリングの課題を解決します
    • データベースの選択 (SQL か NoSQL) は、データの形状、一貫性のニーズ、アクセス パターンによって決まります。
    • CAP 定理によりトレードオフが強制されます - システムがどちらの側を優先すべきかを知ってください
    • 構造化されたインタビューのフレームワークに従います: 要件 → API → データ → アーキテクチャ → 詳細

    次は、これらの基本を適用して URL 短縮ツールを最初から設計します。