diff --git a/README-jp.md b/README-jp.md index 0174c52e..256e9162 100644 --- a/README-jp.md +++ b/README-jp.md @@ -35,11 +35,11 @@ 面接準備に役立つその他のトピック: -* [学習指針](#study-guide) -* [システム設計面接課題にどのように準備するか](#how-to-approach-a-system-design-interview-question) -* [システム設計課題例 **とその解答**](#system-design-interview-questions-with-solutions) -* [オブジェクト思考設計課題例, **とその解答**](#object-oriented-design-interview-questions-with-solutions) -* [その他のシステム設計面接課題例](#additional-system-design-interview-questions) +* [学習指針](#学習指針) +* [システム設計面接課題にどのように準備するか](#システム設計面接にどのようにして臨めばいいか) +* [システム設計課題例 **とその解答**](#システム設計課題例とその解答) +* [オブジェクト思考設計課題例, **とその解答**](#オブジェクト志向設計問題と解答) +* [その他のシステム設計面接課題例](#他のシステム設計面接例題) ## 暗記カード @@ -95,84 +95,84 @@

-* [システム設計トピック: まずはここから](#system-design-topics-start-here) - * [Step 1: スケーラビリティに関する動画を見る](#step-1-review-the-scalability-video-lecture) - * [Step 2: スケーラビリティに関する記事を読む](#step-2-review-the-scalability-article) - * [Next steps](#next-steps) -* [パフォーマンス vs スケーラビリティ](#performance-vs-scalability) -* [レイテンシー vs スループット](#latency-vs-throughput) -* [可用性 vs 一貫性](#availability-vs-consistency) - * [CAP 定理](#cap-theorem) - * [CP - 一貫性(consistency)と分割性(partition)耐性](#cp---consistency-and-partition-tolerance) - * [AP - 可用性(availability)と分割性(partition)耐性](#ap---availability-and-partition-tolerance) -* [一貫性 パターン](#consistency-patterns) - * [弱い一貫性](#weak-consistency) - * [結果整合性](#eventual-consistency) - * [強い一貫性](#strong-consistency) -* [可用性 パターン](#availability-patterns) - * [フェイルオーバー](#fail-over) - * [レプリケーション](#replication) -* [ドメインネームシステム(DNS)](#domain-name-system) -* [コンテントデリバリーネットワーク(CDN)](#content-delivery-network) - * [プッシュCDN](#push-cdns) - * [プルCDN](#pull-cdns) -* [ロードバランサー](#load-balancer) - * [アクティブ/パッシブ構成](#active-passive) +* [システム設計トピック: まずはここから](#システム設計トピックス-まずはここから) + * [Step 1: スケーラビリティに関する動画を見る](#ステップ-1-スケーラビリティに関する動画を観て復習する) + * [Step 2: スケーラビリティに関する記事を読む](#ステップ-2-スケーラビリティに関する資料を読んで復習する) + * [Next steps](#次のステップ) +* [パフォーマンス vs スケーラビリティ](#パフォーマンス-vs-スケーラビリティ) +* [レイテンシー vs スループット](#レイテンシー-vs-スループット) +* [可用性 vs 一貫性](#可用性-vs-一貫性) + * [CAP 定理](#cap-理論) + * [CP - 一貫性(consistency)と分割性(partition)耐性](#cp---一貫性と分断耐性consistency-and-partition-tolerance) + * [AP - 可用性(availability)と分割性(partition)耐性](#ap---可用性と分断耐性availability-and-partition-tolerance) +* [一貫性 パターン](#一貫性パターン) + * [弱い一貫性](#弱い一貫性) + * [結果整合性](#結果整合性) + * [強い一貫性](#強い一貫性) +* [可用性 パターン](#可用性パターン) + * [フェイルオーバー](#フェイルオーバー) + * [レプリケーション](#レプリケーション) +* [ドメインネームシステム(DNS)](#ドメインネームシステム) +* [コンテントデリバリーネットワーク(CDN)](#コンテントデリバリーネットワークcontent-delivery-network) + * [プッシュCDN](#プッシュcdn) + * [プルCDN](#プルcdns) +* [ロードバランサー](#ロードバランサー) + * [アクティブ/パッシブ構成](#アクティブパッシブ) * [アクティブ/アクティブ構成](#active-active) - * [Layer 4 ロードバランシング](#layer-4-load-balancing) - * [Layer 7 ロードバランシング](#layer-7-load-balancing) - * [水平スケーリング](#horizontal-scaling) -* [リバースプロキシ (WEBサーバー)](#reverse-proxy-web-server) - * [ロードバランサー vs リバースプロキシ](#load-balancer-vs-reverse-proxy) -* [アプリケーションレイヤー](#application-layer) - * [マイクロサービス](#microservices) + * [Layer 4 ロードバランシング](#layer-4-ロードバランシング) + * [Layer 7 ロードバランシング](#layer-7-ロードバランシング) + * [水平スケーリング](#水平スケーリング) +* [リバースプロキシ (WEBサーバー)](#リバースプロキシwebサーバー) + * [ロードバランサー vs リバースプロキシ](#ロードバランサー-vs-リバースプロキシ) +* [アプリケーションレイヤー](#アプリケーション層) + * [マイクロサービス](#マイクロサービス) * [サービスディスカバリー](#service-discovery) -* [データベース](#database) - * [リレーショナルデータベースマネジメントシステム (RDBMS)](#relational-database-management-system-rdbms) - * [マスター/スレーヴ レプリケーション](#master-slave-replication) - * [マスター/マスター レプリケーション](#master-master-replication) +* [データベース](#データベース) + * [リレーショナルデータベースマネジメントシステム (RDBMS)](#リレーショナルデータベースマネジメントシステム-rdbms) + * [マスター/スレーヴ レプリケーション](#マスタースレーブ-レプリケーション) + * [マスター/マスター レプリケーション](#マスターマスター-レプリケーション) * [フェデレーション](#federation) - * [シャーディング](#sharding) - * [デノーマライゼーション](#denormalization) - * [SQL チューニング](#sql-tuning) + * [シャーディング](#シャーディング) + * [デノーマライゼーション](#非正規化) + * [SQL チューニング](#sqlチューニング) * [NoSQL](#nosql) - * [キー/バリューストア](#key-value-store) - * [ドキュメントストア](#document-store) - * [ワイドカラムストア](#wide-column-store) - * [グラフ データベース](#graph-database) - * [SQL or NoSQL](#sql-or-nosql) -* [キャッシュ](#cache) - * [クライアントキャッシング](#client-caching) - * [CDNキャッシング](#cdn-caching) - * [Webサーバーキャッシング](#web-server-caching) - * [データベースキャッシング](#database-caching) - * [アプリケーションキャッシング](#application-caching) - * [データベースクエリレベルでキャッシングする](#caching-at-the-database-query-level) - * [オブジェクトレベルでキャッシングする](#caching-at-the-object-level) - * [いつキャッシュを更新するのか](#when-to-update-the-cache) - * [キャッシュアサイド](#cache-aside) - * [ライトスルー](#write-through) - * [ライトビハインド (ライトバック)](#write-behind-write-back) - * [リフレッシュアヘッド](#refresh-ahead) -* [異時性](#asynchronism) - * [メッセージキュー](#message-queues) - * [タスクキュー](#task-queues) - * [バックプレッシャー](#back-pressure) -* [通信](#communication) + * [キー/バリューストア](#キーバリューストア) + * [ドキュメントストア](#ドキュメントストア) + * [ワイドカラムストア](#ワイドカラムストア) + * [グラフ データベース](#グラフデータベース) + * [SQL or NoSQL](#sqlかnosqlか) +* [キャッシュ](#キャッシュ) + * [クライアントキャッシング](#クライアントキャッシング) + * [CDNキャッシング](#cdnキャッシング) + * [Webサーバーキャッシング](#webサーバーキャッシング) + * [データベースキャッシング](#データベースキャッシング) + * [アプリケーションキャッシング](#アプリケーションキャッシング) + * [データベースクエリレベルでキャッシングする](#データベースクエリレベルでのキャッシング) + * [オブジェクトレベルでキャッシングする](#オブジェクトレベルでのキャッシング) + * [いつキャッシュを更新するのか](#いつキャッシュを更新するか) + * [キャッシュアサイド](#キャッシュアサイド) + * [ライトスルー](#ライトスルー) + * [ライトビハインド (ライトバック)](#ライトビハインド-ライトバック) + * [リフレッシュアヘッド](#リフレッシュアヘッド) +* [非同期処理](#非同期処理) + * [メッセージキュー](#メッセージキュー) + * [タスクキュー](#タスクキュー) + * [バックプレッシャー](#バックプレッシャー) +* [通信](#通信) * [伝送制御プロトコル (TCP)](#transmission-control-protocol-tcp) * [ユーザデータグラムプロトコル (UDP)](#user-datagram-protocol-udp) * [遠隔手続呼出 (RPC)](#remote-procedure-call-rpc) * [Representational state transfer (REST)](#representational-state-transfer-rest) -* [セキュリティ](#security) -* [補遺](#appendix) - * [2の指数表](#powers-of-two-table) - * [全てのプログラマーが知っておくべきレイテンシの参考値](#latency-numbers-every-programmer-should-know) - * [その他システム設計面接での質問例](#additional-system-design-interview-questions) - * [実世界でのアーキテクチャ](#real-world-architectures) - * [各企業のアーキテクチャ](#company-architectures) - * [各企業のエンジニアリングブログ](#company-engineering-blogs) -* [作業中](#under-development) -* [クレジット](#credits) +* [セキュリティ](#セキュリティ) +* [補遺](#補遺) + * [2の乗数表](#2の乗数表) + * [全てのプログラマーが知るべきレイテンシー値](#全てのプログラマーが知るべきレイテンシー値) + * [他のシステム設計面接例題](#他のシステム設計面接例題) + * [実世界でのアーキテクチャ](#実世界のアーキテクチャ) + * [各企業のアーキテクチャ](#各企業のアーキテクチャ) + * [企業のエンジニアブログ](#企業のエンジニアブログ) +* [作業中](#進行中の作業) +* [クレジット](#クレジット) * [連絡情報](#contact-info) * [ライセンス](#license) @@ -1524,7 +1524,7 @@ RESTはデータを公開することに焦点を当てています。クライ * [開発者のためのセキュリティガイド](https://github.com/FallibleInc/security-guide-for-developers) * [OWASP top ten](https://www.owasp.org/index.php/OWASP_Top_Ten_Cheat_Sheet) -## 付録 +## 補遺 暗算で、推計値を求める必要があることも時にはあります。例えば、ディスクから100枚イメージ分のサムネイルを作る時間を求めたり、その時にどれだけディスクメモリーが消費されるかなどの値です。**2の乗数表** と **全てのプログラマーが知るべきレイテンシー値** は良い参考になるでしょう。