* Add mkdocs configuration and update index page for System Design Primer: Update Edition

- Created mkdocs.yml to establish a structured documentation site with multilingual support.
- Updated index.md to reflect the new edition's focus on 2025 software development trends, including Kubernetes and Generative AI.
- Enhanced navigation with links to contributing guidelines, changelog, and language-specific resources for improved accessibility.

* Move images and solution under docs

* Add MkDocs deploy workflow

* Add MkDocs deploy workflow

* Update navigation and image paths in documentation

- Renamed "Start Here" to "Study Guide Start Here" in mkdocs.yml for clarity.
- Added "System Design Interview Questions" to the navigation.
- Updated image paths in multiple language documentation files to ensure correct referencing.
- Enhanced multilingual support by maintaining consistent image paths across all language versions.

* merge resloved

* Move images and solution under docs
This commit is contained in:
Ido Ophir
2025-05-11 16:59:48 +03:00
committed by GitHub
parent 91b67a57f0
commit f614af8bca
9 changed files with 1119 additions and 647 deletions

View File

@@ -3,7 +3,7 @@
# システム設計入門
<p align="center">
<img src="images/jj3A5N8.png">
<img src="../../images/jj3A5N8.png">
<br/>
</p>
@@ -44,7 +44,7 @@
## 暗記カード
<p align="center">
<img src="images/zdCAkB3.png">
<img src="../../images/zdCAkB3.png">
<br/>
</p>
@@ -61,7 +61,7 @@
コード技術面接用の問題は[**こちら**](https://github.com/donnemartin/interactive-coding-challenges)
<p align="center">
<img src="images/b4YtAEN.png">
<img src="../../images/b4YtAEN.png">
<br/>
</p>
@@ -91,96 +91,182 @@
> それぞれのセクションはより学びを深めるような他の文献へのリンクが貼られています。
<p align="center">
<img src="images/jrUBAF7.png">
<img src="../../images/jrUBAF7.png">
<br/>
</p>
* [システム設計トピック: まずはここから](#システム設計トピックス-まずはここから)
* [Step 1: スケーラビリティに関する動画を見る](#ステップ-1-スケーラビリティに関する動画を観て復習する)
* [Step 2: スケーラビリティに関する記事を読む](#ステップ-2-スケーラビリティに関する資料を読んで復習する)
* [次のステップ](#次のステップ)
* [パフォーマンス 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](#プルcdn)
* [ロードバランサー](#ロードバランサー)
* [アクティブ/パッシブ構成](#アクティブパッシブ)
* [アクティブ/アクティブ構成](#アクティブアクティブ)
* [Layer 4 ロードバランング](#layer-4-ロードバランング)
* [Layer 7 ロードバランシング](#layer-7-ロードバランシング)
* [水平スケーリング](#水平スケーリング)
* [リバースプロキシ (WEBサーバー)](#リバースプロキシwebサーバー)
* [ロードバランサー vs リバースプロキシ](#ロードバランサー-vs-リバースプロキシ)
* [アプリケーションレイヤー](#アプリケーション層)
* [マイクロサービス](#マイクロサービス)
* [サービスディスカバリー](#service-discovery)
* [データベース](#データベース)
* [リレーショナルデータベースマネジメントシステム (RDBMS)](#リレーショナルデータベースマネジメントシステム-rdbms)
* [マスター/スレーブ レプリケーション](#マスタースレーブ-レプリケーション)
* [マスター/マスター レプリケーション](#マスターマスター-レプリケーション)
* [フェデレーション](#federation)
* [シャーディング](#シャーディング)
* [デノーマライゼーション](#非正規化)
* [SQL チューニング](#sqlチューニング)
* [NoSQL](#nosql)
* [キー/バリューストア](#キーバリューストア)
* [ドキュメントストア](#ドキュメントストア)
* [ワイドカラムストア](#ワイドカラムストア)
* [グラフ データベース](#グラフデータベース)
* [SQL or NoSQL](#sqlかnosqlか)
* [キャッシュ](#キャッシュ)
* [クライアントキャッシング](#クライアントキャッシング)
* [CDNキャッシング](#cdnキャッシング)
* [Webサーバーキャッシング](#webサーバーキャッシング)
* [データベースキャッシング](#データベースキャッシング)
* [アプリケーションキャッシング](#アプリケーションキャッシング)
* [データベースクエリレベルでキャッシングする](#データベースクエリレベルでのキャッシング)
* [オブジェクトレベルでキャッシングする](#オブジェクトレベルでのキャッシング)
* [いつキャッシュを更新するのか](#いつキャッシュを更新するか)
* [キャッシュアサイド](#キャッシュアサイド)
* [ライトスルー](#ライトスルー)
* [ライトビハインド (ライトバック)](#ライトビハインド-ライトバック)
* [リフレッシュアヘッド](#リフレッシュアヘッド)
* [非同期処理](#非同期処理)
* [メッセージキュー](#メッセージキュ)
* [タスクキュー](#タスクキュー)
* [バックプレッシャー](#バックプレッシャー)
* [通信](#通信)
* [伝送制御プロトコル (TCP)](#伝送制御プロトコル-tcp)
* [ユーザデータグラムプロトコル (UDP)](#ユーザデータグラムプロトコル-udp)
* [遠隔手続呼出 (RPC)](#遠隔手続呼出-rpc)
* [Representational state transfer (REST)](#representational-state-transfer-rest)
* [セキュリティ](#セキュリティ)
* [補遺](#補遺)
* [2の乗数表](#2の乗数表)
* [全てのプログラマーが知るべきレイテンシー値](#全てのプログラマーが知るべきレイテンシー値)
* [他のシステム設計面接例題](#他のシステム設計面接例題)
* [実世界でのアーキテクチャ](#実世界のアーキテクチャ)
* [各企業のアーキテクチャ](#各企業のアーキテクチャ)
* [企業のエンジニアブログ](#企業のエンジニアブログ)
* [作業中](#進行中の作業)
* [クレジット](#クレジット)
* [連絡情報](#contact-info)
* [ライセンス](#license)
- [システム設計入門](#システム設計入門)
- [動機・目的](#動機目的)
- [大規模システムの設計を学ぶ](#大規模システムの設計を学ぶ)
- [オープンソースコミュニティから学ぶ](#オープンソースコミュニティから学ぶ)
- [システム設計面接課題に備える](#システム設計面接課題に備える)
- [暗記カード](#暗記カード)
- [コーディング技術課題用の問題: 練習用インタラクティブアプリケーション](#コーディング技術課題用の問題-練習用インタラクティブアプリケーション)
- [コントリビュート](#コントリビュート)
- [システム設計目次](#システム設計目次)
- [学習指針](#学習指針)
- [システム設計面接にどのようにして臨めばいいか](#システム設計面接にどのようにして臨めばいいか)
- [ステップ 1: システム使用例の概要、制約、推計値等を聞き出し、まとめる](#ステップ-1-システム使用例の概要制約推計値等を聞き出しまとめる)
- [ステップ 2: 高レベルのシステム設計を組み立てる](#ステップ-2-高レベルのシステム設計を組み立てる)
- [ステップ 3: 核となるコンポーネントを設計する](#ステップ-3-核となるコンポーネントを設計する)
- [ステップ 4: システム設計のスケール](#ステップ-4-システム設計のスケール)
- [ちょっとした暗算問題](#ちょっとした暗算問題)
- [文献とその他の参考資料](#文献とその他の参考資料)
- [システム設計課題例とその解答](#システム設計課題例とその解答)
- [Pastebin.com (もしくは Bit.ly) の設計](#pastebincom-もしくは-bitly-の設計)
- [Twitterタイムライン\&検索 (もしくはFacebookフィード\&検索)の設計](#twitterタイムライン検索-もしくはfacebookフィード検索の設計)
- [ウェブクローラーの設計](#ウェブクローラーの設計)
- [Mint.comの設計](#mintcomの設計)
- [SNSサービスのデータ構造の設計](#snsサービスのデータ構造の設計)
- [検索エンジンのキー/バリュー構造の設計](#検索エンジンのキーバリュー構造の設計)
- [Amazonのカテゴリ毎の売り上げランングの設計](#amazonのカテゴリ毎の売り上げランングの設計)
- [AWS上で100万人規模のユーザーを捌くサービスの設計](#aws上で100万人規模のユーザーを捌くサービスの設計)
- [オブジェクト指向設計問題と解答](#オブジェクト指向設計問題と解答)
- [システム設計トピックス: まずはここから](#システム設計トピックス-まずはここから)
- [ステップ 1: スケーラビリティに関する動画を観て復習する](#ステップ-1-スケーラビリティに関する動画を観て復習する)
- [ステップ 2: スケーラビリティに関する資料を読んで復習する](#ステップ-2-スケーラビリティに関する資料を読んで復習する)
- [次のステップ](#次のステップ)
- [パフォーマンス vs スケーラビリティ](#パフォーマンス-vs-スケーラビリティ)
- [その他の参考資料、ページ](#その他の参考資料ページ)
- [レイテンシー vs スループット](#レイテンシー-vs-スループット)
- [その他の参考資料、ページ](#その他の参考資料ページ-1)
- [可用性 vs 一貫性](#可用性-vs-一貫性)
- [CAP 理論](#cap-理論)
- [CP - 一貫性と分断耐性(consistency and partition tolerance)](#cp---一貫性と分断耐性consistency-and-partition-tolerance)
- [AP - 可用性と分断耐性(availability and partition tolerance)](#ap---可用性と分断耐性availability-and-partition-tolerance)
- [その他の参考資料、ページ](#その他の参考資料ページ-2)
- [一貫性パターン](#一貫性パターン)
- [弱い一貫性](#弱い一貫性)
- [結果整合性](#結果整合性)
- [強い一貫性](#強い一貫性)
- [その他の参考資料、ページ](#その他の参考資料ページ-3)
- [可用性パターン](#可用性パターン)
- [フェイルオーバー](#フェイルオーバー)
- [アクティブ・パッシブ](#アクティブパッシブ)
- [アクティブ・アクティブ](#アクティブアクティブ)
- [短所: フェイルオーバー](#短所-フェイルオーバー)
- [レプリケーション](#レプリケーション)
- [マスター・スレーブ と マスター・マスター](#マスタースレーブとマスターマスター)
- [ドメインネームシステム](#ドメインネームシステム)
- [欠点: DNS](#欠点-dns)
- [その他の参考資料、ページ](#その他の参考資料ページ-4)
- [コンテンツデリバリーネットワーク(Content delivery network)](#コンテンツデリバリーネットワークcontent-delivery-network)
- [プッシュCDN](#プッシュcdn)
- [プルCDN](#プルcdn)
- [欠点: CDN](#欠点-cdn)
- [その他の参考資料、ページ](#その他の参考資料ページ-5)
- [ロードバランサー](#ロードバランサ)
- [Layer 4 ロードバランシング](#layer-4-ロードバランシング)
- [Layer 7 ロードバランシング](#layer-7-ロードバランシング)
- [水平スケーリング](#水平スケーリング)
- [欠点: 水平スケーリング](#欠点-水平スケーリング)
- [欠点: ロードバランサー](#欠点-ロードバランサー)
- [その他の参考資料、ページ](#その他の参考資料ページ-6)
- [リバースプロキシ(webサーバー)](#リバースプロキシwebサーバー)
- [ロードバランサー vs リバースプロキシ](#ロードバランサー-vs-リバースプロキシ)
- [欠点: リバースプロキシ](#欠点-リバースプロキシ)
- [その他の参考資料、ページ](#その他の参考資料ページ-7)
- [アプリケーション層](#アプリケーション層)
- [マイクロサービス](#マイクロサービス)
- [サービスディスカバリー](#サービスディスカバリー)
- [欠点: アプリケーション層](#欠点-アプリケーション層)
- [その他の参考資料、ページ](#その他の参考資料ページ-8)
- [データベース](#データベース)
- [リレーショナルデータベースマネジメントシステム (RDBMS)](#リレーショナルデータベースマネジメントシステム-rdbms)
- [マスタースレーブ レプリケーション](#マスタースレーブ-レプリケーション)
- [欠点: マスタースレーブ レプリケーション](#欠点-マスタースレーブ-レプリケーション)
- [マスターマスター レプリケーション](#マスターマスター-レプリケーション)
- [欠点: マスターマスター レプリケーション](#欠点-マスターマスター-レプリケーション)
- [欠点: レプリケーション](#欠点-レプリケーション)
- [その他の参考資料、ページ: レプリケーション](#その他の参考資料ページ-レプリケーション)
- [Federation](#federation)
- [欠点: federation](#欠点-federation)
- [その他の参考資料、ページ: federation](#その他の参考資料ページ-federation)
- [シャーディング](#シャーディング)
- [欠点: シャーディング](#欠点-シャーディング)
- [その他の参考資料、ページ: シャーディング](#その他の参考資料ページ-シャーディング)
- [非正規化](#非正規化)
- [欠点: 非正規化](#欠点-非正規化)
- [その他の参考資料、ページ: 非正規化](#その他の参考資料ページ-非正規化)
- [SQLチューニング](#sqlチューニング)
- [スキーマを絞る](#スキーマを絞る)
- [インデックスを効果的に用いる](#インデックスを効果的に用いる)
- [高負荷なジョインを避ける](#高負荷なジョインを避ける)
- [テーブルのパーティション](#テーブルのパーティション)
- [クエリキャッシュを調整する](#クエリキャッシュを調整する)
- [その他の参考資料、ページ: SQLチューニング](#その他の参考資料ページ-sqlチューニング)
- [NoSQL](#nosql)
- [キーバリューストア](#キーバリューストア)
- [その他の参考資料、ページ: キーバリューストア](#その他の参考資料ページ-キーバリューストア)
- [ドキュメントストア](#ドキュメントストア)
- [その他の参考資料、ページ: ドキュメントストア](#その他の参考資料ページ--ドキュメントストア)
- [ワイドカラムストア](#ワイドカラムストア)
- [その他の参考資料、ページ: ワイドカラムストア](#その他の参考資料ページ--ワイドカラムストア)
- [グラフデータベース](#グラフデータベース)
- [その他の参考資料、ページ: グラフ](#その他の参考資料ページ--グラフ)
- [その他の参考資料、ページ: NoSQL](#その他の参考資料ページ--nosql)
- [SQLかNoSQLか](#sqlかnosqlか)
- [その他の参考資料、ページ:  SQLもしくはNoSQL](#その他の参考資料ページ--sqlもしくはnosql)
- [キャッシュ](#キャッシュ)
- [クライアントキャッシング](#クライアントキャッシング)
- [CDNキャッシング](#cdnキャッシング)
- [Webサーバーキャッシング](#webサーバーキャッシング)
- [データベースキャッシング](#データベースキャッシング)
- [アプリケーションキャッシング](#アプリケーションキャッシング)
- [データベースクエリレベルでのキャッシング](#データベースクエリレベルでのキャッシング)
- [オブジェクトレベルでのキャッシング](#オブジェクトレベルでのキャッシング)
- [いつキャッシュを更新するか](#いつキャッシュを更新するか)
- [キャッシュアサイド](#キャッシュアサイド)
- [欠点: キャッシュアサイド](#欠点-キャッシュアサイド)
- [ライトスルー](#ライトスルー)
- [欠点: ライトスルー](#欠点-ライトスルー)
- [ライトビハインド (ライトバック)](#ライトビハインド-ライトバック)
- [欠点: ライトビハインド](#欠点-ライトビハインド)
- [リフレッシュアヘッド](#リフレッシュアヘッド)
- [欠点: リフレッシュアヘッド](#欠点-リフレッシュアヘッド)
- [欠点: キャッシュ](#欠点-キャッシュ)
- [その他の参考資料、ページ](#その他の参考資料ページ-9)
- [非同期処理](#非同期処理)
- [メッセージキュー](#メッセージキュー)
- [タスクキュー](#タスクキュー)
- [バックプレッシャー](#バックプレッシャー)
- [欠点: 非同期処理](#欠点-非同期処理)
- [その他の参考資料、ページ](#その他の参考資料ページ-10)
- [通信](#通信)
- [Hypertext transfer protocol (HTTP)](#hypertext-transfer-protocol-http)
- [その他の参考資料、ページ: HTTP](#その他の参考資料ページ-http)
- [伝送制御プロトコル (TCP)](#伝送制御プロトコル-tcp)
- [ユーザデータグラムプロトコル (UDP)](#ユーザデータグラムプロトコル-udp)
- [その他の参考資料、ページ: TCP と UDP](#その他の参考資料ページ-tcp-と-udp)
- [遠隔手続呼出 (RPC)](#遠隔手続呼出-rpc)
- [欠点: RPC](#欠点-rpc)
- [Representational state transfer (REST)](#representational-state-transfer-rest)
- [欠点: REST](#欠点-rest)
- [RPCとREST比較](#rpcとrest比較)
- [その他の参考資料、ページ: REST と RPC](#その他の参考資料ページ-rest-と-rpc)
- [セキュリティ](#セキュリティ)
- [その他の参考資料、ページ:](#その他の参考資料ページ-11)
- [補遺](#補遺)
- [2の乗数表](#2の乗数表)
- [その他の参考資料、ページ:](#その他の参考資料ページ-12)
- [全てのプログラマーが知るべきレイテンシー値](#全てのプログラマーが知るべきレイテンシー値)
- [レイテンシーの視覚的表](#レイテンシーの視覚的表)
- [その他の参考資料、ページ:](#その他の参考資料ページ-13)
- [他のシステム設計面接例題](#他のシステム設計面接例題)
- [実世界のアーキテクチャ](#実世界のアーキテクチャ)
- [各企業のアーキテクチャ](#各企業のアーキテクチャ)
- [企業のエンジニアブログ](#企業のエンジニアブログ)
- [その他の参考資料、ページ:](#その他の参考資料ページ-14)
- [進行中の作業](#進行中の作業)
- [クレジット](#クレジット)
- [Contact info](#contact-info)
- [License](#license)
## 学習指針
> 学習スパンに応じてみるべきトピックス (short, medium, long)
![Imgur](images/OfVllex.png)
![Imgur](../../images/OfVllex.png)
**Q: 面接のためには、ここにあるものすべてをやらないといけないのでしょうか?**
@@ -302,49 +388,49 @@
[問題と解答を見る](solutions/system_design/pastebin/README.md)
![Imgur](images/4edXG0T.png)
![Imgur](../../images/4edXG0T.png)
### Twitterタイムライン&検索 (もしくはFacebookフィード&検索)の設計
[問題と解答を見る](solutions/system_design/twitter/README.md)
![Imgur](images/jrUBAF7.png)
![Imgur](../../images/jrUBAF7.png)
### ウェブクローラーの設計
[問題と解答を見る](solutions/system_design/web_crawler/README.md)
![Imgur](images/bWxPtQA.png)
![Imgur](../../images/bWxPtQA.png)
### Mint.comの設計
[問題と解答を見る](solutions/system_design/mint/README.md)
![Imgur](images/V5q57vU.png)
![Imgur](../../images/V5q57vU.png)
### SNSサービスのデータ構造の設計
[問題と解答を見る](solutions/system_design/social_graph/README.md)
![Imgur](images/cdCv5g7.png)
![Imgur](../../images/cdCv5g7.png)
### 検索エンジンのキー/バリュー構造の設計
[問題と解答を見る](solutions/system_design/query_cache/README.md)
![Imgur](images/4j99mhe.png)
![Imgur](../../images/4j99mhe.png)
### Amazonのカテゴリ毎の売り上げランキングの設計
[問題と解答を見る](solutions/system_design/sales_rank/README.md)
![Imgur](images/MzExP06.png)
![Imgur](../../images/MzExP06.png)
### AWS上で100万人規模のユーザーを捌くサービスの設計
[問題と解答を見る](solutions/system_design/scaling_aws/README.md)
![Imgur](images/jj3A5N8.png)
![Imgur](../../images/jj3A5N8.png)
## オブジェクト指向設計問題と解答
@@ -436,7 +522,7 @@
### CAP 理論
<p align="center">
<img src="images/bgLMI2u.png">
<img src="../../images/bgLMI2u.png">
<br/>
<i><a href=http://robertgreiner.com/2014/08/cap-theorem-revisited>Source: CAP theorem revisited</a></i>
</p>
@@ -531,7 +617,7 @@
## ドメインネームシステム
<p align="center">
<img src="images/IOyLj4i.jpg">
<img src="../../images/IOyLj4i.jpg">
<br/>
<i><a href=http://www.slideshare.net/srikrupa5/dns-security-presentation-issa>Source: DNS security presentation</a></i>
</p>
@@ -569,7 +655,7 @@ DNSは少数のオーソライズされたサーバーが上位に位置する
## コンテンツデリバリーネットワーク(Content delivery network)
<p align="center">
<img src="images/h9TAuGI.jpg">
<img src="../../images/h9TAuGI.jpg">
<br/>
<i><a href=https://www.creative-artworks.eu/why-use-a-content-delivery-network-cdn/>Source: Why use a CDN</a></i>
</p>
@@ -610,7 +696,7 @@ CDNを用いてコンテンツを配信することで以下の二つの理由
## ロードバランサー
<p align="center">
<img src="images/h81n9iK.png">
<img src="../../images/h81n9iK.png">
<br/>
<i><a href=http://horicky.blogspot.com/2010/10/scalable-system-design-patterns.html>Source: Scalable system design patterns</a></i>
</p>
@@ -680,7 +766,7 @@ Layer 7 ロードバランサーは [アプリケーションレイヤー](#通
## リバースプロキシ(webサーバー)
<p align="center">
<img src="images/n41Azff.png">
<img src="../../images/n41Azff.png">
<br/>
<i><a href=https://upload.wikimedia.org/wikipedia/commons/6/67/Reverse_proxy_h2g2bob.svg>Source: Wikipedia</a></i>
<br/>
@@ -723,7 +809,7 @@ Layer 7 ロードバランサーは [アプリケーションレイヤー](#通
## アプリケーション層
<p align="center">
<img src="images/yB5SYwm.png">
<img src="../../images/yB5SYwm.png">
<br/>
<i><a href=http://lethain.com/introduction-to-architecting-systems-for-scale/#platform_layer>Source: Intro to architecting systems for scale</a></i>
</p>
@@ -760,7 +846,7 @@ Layer 7 ロードバランサーは [アプリケーションレイヤー](#通
## データベース
<p align="center">
<img src="images/Xkm5CXz.png">
<img src="../../images/Xkm5CXz.png">
<br/>
<i><a href=https://www.youtube.com/watch?v=kKjm4ehYiMs>Source: Scaling up to your first 10 million users</a></i>
</p>
@@ -783,7 +869,7 @@ SQLなどのリレーショナルデータベースはテーブルに整理さ
マスターデータベースが読み取りと書き込みを処理し、書き込みを一つ以上のスレーブデータベースに複製します。スレーブデータベースは読み取りのみを処理します。スレーブデータベースは木構造のように追加のスレーブにデータを複製することもできます。マスターデータベースがオフラインになった場合には、いずれかのスレーブがマスターに昇格するか、新しいマスターデータベースが追加されるまでは読み取り専用モードで稼働します。
<p align="center">
<img src="images/C9ioGtn.png">
<img src="../../images/C9ioGtn.png">
<br/>
<i><a href=http://www.slideshare.net/jboner/scalability-availability-stability-patterns/>Source: Scalability, availability, stability, patterns</a></i>
</p>
@@ -798,7 +884,7 @@ SQLなどのリレーショナルデータベースはテーブルに整理さ
いずれのマスターも読み取り書き込みの両方に対応する。書き込みに関してはそれぞれ協調する。いずれかのマスターが落ちても、システム全体としては読み書き両方に対応したまま運用できる。
<p align="center">
<img src="images/krAHLGg.png">
<img src="../../images/krAHLGg.png">
<br/>
<i><a href=http://www.slideshare.net/jboner/scalability-availability-stability-patterns/>Source: Scalability, availability, stability, patterns</a></i>
</p>
@@ -826,7 +912,7 @@ SQLなどのリレーショナルデータベースはテーブルに整理さ
#### Federation
<p align="center">
<img src="images/U3qV33e.png">
<img src="../../images/U3qV33e.png">
<br/>
<i><a href=https://www.youtube.com/watch?v=kKjm4ehYiMs>Source: Scaling up to your first 10 million users</a></i>
</p>
@@ -847,7 +933,7 @@ SQLなどのリレーショナルデータベースはテーブルに整理さ
#### シャーディング
<p align="center">
<img src="images/wU8x5Id.png">
<img src="../../images/wU8x5Id.png">
<br/>
<i><a href=http://www.slideshare.net/jboner/scalability-availability-stability-patterns/>Source: Scalability, availability, stability, patterns</a></i>
</p>
@@ -991,7 +1077,7 @@ NoSQL は **key-value store**、 **document-store**、 **wide column store**、
#### ワイドカラムストア
<p align="center">
<img src="images/n16iOGk.png">
<img src="../../images/n16iOGk.png">
<br/>
<i><a href=http://blog.grio.com/2015/11/sql-nosql-a-brief-history.html>Source: SQL & NoSQL, a brief history</a></i>
</p>
@@ -1014,7 +1100,7 @@ Googleは[Bigtable](http://www.read.seas.harvard.edu/~kohler/class/cs239-w08/cha
#### グラフデータベース
<p align="center">
<img src="images/fNcl65g.png">
<img src="../../images/fNcl65g.png">
<br/>
<i><a href=https://en.wikipedia.org/wiki/File:GraphDatabase_PropertyGraph.png>Source: Graph database</a></i>
</p>
@@ -1042,7 +1128,7 @@ Googleは[Bigtable](http://www.read.seas.harvard.edu/~kohler/class/cs239-w08/cha
### SQLかNoSQLか
<p align="center">
<img src="images/wXGqG5f.png">
<img src="../../images/wXGqG5f.png">
<br/>
<i><a href=https://www.infoq.com/articles/Transition-RDBMS-NoSQL/>Source: Transitioning from RDBMS to NoSQL</a></i>
</p>
@@ -1084,7 +1170,7 @@ NoSQLに適するサンプルデータ:
## キャッシュ
<p align="center">
<img src="images/Q6z24La.png">
<img src="../../images/Q6z24La.png">
<br/>
<i><a href=http://horicky.blogspot.com/2010/10/scalable-system-design-patterns.html>Source: Scalable system design patterns</a></i>
</p>
@@ -1155,7 +1241,7 @@ Redisはさらに以下のような機能を備えています:
#### キャッシュアサイド
<p align="center">
<img src="images/ONjORqk.png">
<img src="../../images/ONjORqk.png">
<br/>
<i><a href=http://www.slideshare.net/tmatyashovsky/from-cache-to-in-memory-data-grid-introduction-to-hazelcast>Source: From cache to in-memory data grid</a></i>
</p>
@@ -1191,7 +1277,7 @@ def get_user(self, user_id):
#### ライトスルー
<p align="center">
<img src="images/0vBc0hN.png">
<img src="../../images/0vBc0hN.png">
<br/>
<i><a href=http://www.slideshare.net/jboner/scalability-availability-stability-patterns/>Source: Scalability, availability, stability, patterns</a></i>
</p>
@@ -1226,7 +1312,7 @@ def set_user(user_id, values):
#### ライトビハインド (ライトバック)
<p align="center">
<img src="images/rgSrvjG.png">
<img src="../../images/rgSrvjG.png">
<br/>
<i><a href=http://www.slideshare.net/jboner/scalability-availability-stability-patterns/>Source: Scalability, availability, stability, patterns</a></i>
</p>
@@ -1244,7 +1330,7 @@ def set_user(user_id, values):
#### リフレッシュアヘッド
<p align="center">
<img src="images/kxtjqgE.png">
<img src="../../images/kxtjqgE.png">
<br/>
<i><a href=http://www.slideshare.net/tmatyashovsky/from-cache-to-in-memory-data-grid-introduction-to-hazelcast>Source: From cache to in-memory data grid</a></i>
</p>
@@ -1276,7 +1362,7 @@ def set_user(user_id, values):
## 非同期処理
<p align="center">
<img src="images/54GYsSx.png">
<img src="../../images/54GYsSx.png">
<br/>
<i><a href=http://lethain.com/introduction-to-architecting-systems-for-scale/#platform_layer>Source: Intro to architecting systems for scale</a></i>
</p>
@@ -1322,7 +1408,7 @@ def set_user(user_id, values):
## 通信
<p align="center">
<img src="images/5KeocQs.jpg">
<img src="../../images/5KeocQs.jpg">
<br/>
<i><a href=http://www.escotal.com/osilayer.html>Source: OSI 7 layer model</a></i>
</p>
@@ -1354,7 +1440,7 @@ HTTPは**TCP** や **UDP** などの低級プロトコルに依存している
### 伝送制御プロトコル (TCP)
<p align="center">
<img src="images/JdAsdvG.jpg">
<img src="../../images/JdAsdvG.jpg">
<br/>
<i><a href=http://www.wildbunny.co.uk/blog/2012/10/09/how-to-make-a-multi-player-game-part-1/>Source: How to make a multiplayer game</a></i>
</p>
@@ -1378,7 +1464,7 @@ TCPは高い依存性を要し、時間制約が厳しくないものに適し
### ユーザデータグラムプロトコル (UDP)
<p align="center">
<img src="images/yzDrJtA.jpg">
<img src="../../images/yzDrJtA.jpg">
<br/>
<i><a href=http://www.wildbunny.co.uk/blog/2012/10/09/how-to-make-a-multi-player-game-part-1/>Source: How to make a multiplayer game</a></i>
</p>
@@ -1407,7 +1493,7 @@ TCPよりもUDPを使うのは:
### 遠隔手続呼出 (RPC)
<p align="center">
<img src="images/iF4Mkb5.png">
<img src="../../images/iF4Mkb5.png">
<br/>
<i><a href=http://www.puncsky.com/blog/2016-02-13-crack-the-system-design-interview>Source: Crack the system design interview</a></i>
</p>
@@ -1633,7 +1719,7 @@ Notes
> 世の中のシステムがどのように設計されているかについての記事
<p align="center">
<img src="images/TcUo2fw.png">
<img src="../../images/TcUo2fw.png">
<br/>
<i><a href=https://www.infoq.com/presentations/Twitter-Timeline-Scalability>Source: Twitter timelines at scale</a></i>
</p>