3
3
# システム設計入門
4
4
5
5
<p align =" center " >
6
- <img src =" http://i.imgur.com/ jj3A5N8.png" / >
6
+ <img src =" images/ jj3A5N8.png" >
7
7
<br />
8
8
</p >
9
9
44
44
## 暗記カード
45
45
46
46
<p align =" center " >
47
- <img src =" http://i.imgur.com/ zdCAkB3.png" / >
47
+ <img src =" images/ zdCAkB3.png" >
48
48
<br />
49
49
</p >
50
50
61
61
コード技術面接用の問題を探している場合は[ ** こちら** ] ( https://github.com/donnemartin/interactive-coding-challenges )
62
62
63
63
<p align =" center " >
64
- <img src =" http://i.imgur.com/ b4YtAEN.png" / >
64
+ <img src =" images/ b4YtAEN.png" >
65
65
<br />
66
66
</p >
67
67
91
91
> それぞれのセクションはより学びを深めるような他の文献へのリンクが貼られています。
92
92
93
93
<p align =" center " >
94
- <img src =" http://i.imgur.com/ jrUBAF7.png" / >
94
+ <img src =" images/ jrUBAF7.png" >
95
95
<br />
96
96
</p >
97
97
180
180
181
181
> 学習スパンに応じてみるべきトピックス (short, medium, long)
182
182
183
- ![ Imgur] ( http://i.imgur.com /OfVllex.png)
183
+ ![ Imgur] ( images /OfVllex.png)
184
184
185
185
** Q: 面接のためには、ここにあるものすべてをやらないといけないのでしょうか?**
186
186
302
302
303
303
[ 問題と解答を見る] ( solutions/system_design/pastebin/README.md )
304
304
305
- ![ Imgur] ( http://i.imgur.com /4edXG0T.png)
305
+ ![ Imgur] ( images /4edXG0T.png)
306
306
307
307
### Twitterタイムライン&検索 (もしくはFacebookフィード&検索)を設計する
308
308
309
309
[ 問題と解答を見る] ( solutions/system_design/twitter/README.md )
310
310
311
- ![ Imgur] ( http://i.imgur.com /jrUBAF7.png)
311
+ ![ Imgur] ( images /jrUBAF7.png)
312
312
313
313
### ウェブクローラーの設計
314
314
315
315
[ 問題と解答を見る] ( solutions/system_design/web_crawler/README.md )
316
316
317
- ![ Imgur] ( http://i.imgur.com /bWxPtQA.png)
317
+ ![ Imgur] ( images /bWxPtQA.png)
318
318
319
319
### Mint.comの設計
320
320
321
321
[ 問題と解答を見る] ( solutions/system_design/mint/README.md )
322
322
323
- ![ Imgur] ( http://i.imgur.com /V5q57vU.png)
323
+ ![ Imgur] ( images /V5q57vU.png)
324
324
325
325
### SNSサービスのデータ構造を設計する
326
326
327
327
[ 問題と解答を見る] ( solutions/system_design/social_graph/README.md )
328
328
329
- ![ Imgur] ( http://i.imgur.com /cdCv5g7.png)
329
+ ![ Imgur] ( images /cdCv5g7.png)
330
330
331
331
### 検索エンジンのキー/バリュー構造を設計する
332
332
333
333
[ 問題と解答を見る] ( solutions/system_design/query_cache/README.md )
334
334
335
- ![ Imgur] ( http://i.imgur.com /4j99mhe.png)
335
+ ![ Imgur] ( images /4j99mhe.png)
336
336
337
337
### Amazonのカテゴリ毎の売り上げランキングを設計する
338
338
339
339
[ 問題と解答を見る] ( solutions/system_design/sales_rank/README.md )
340
340
341
- ![ Imgur] ( http://i.imgur.com /MzExP06.png)
341
+ ![ Imgur] ( images /MzExP06.png)
342
342
343
343
### AWS上で100万人規模のユーザーを捌くサービスを設計する
344
344
345
345
[ 問題と解答を見る] ( solutions/system_design/scaling_aws/README.md )
346
346
347
- ![ Imgur] ( http://i.imgur.com /jj3A5N8.png)
347
+ ![ Imgur] ( images /jj3A5N8.png)
348
348
349
349
## オブジェクト指向設計問題と解答
350
350
436
436
### CAP 理論
437
437
438
438
<p align =" center " >
439
- <img src =" http://i.imgur.com/ bgLMI2u.png" / >
439
+ <img src =" images/ bgLMI2u.png" >
440
440
<br />
441
441
<i ><a href=http://robertgreiner.com/2014/08/cap-theorem-revisited>Source : CAP theorem revisited</a ></i >
442
442
</p >
530
530
## ドメインネームシステム
531
531
532
532
<p align =" center " >
533
- <img src =" http://i.imgur.com/ IOyLj4i.jpg" / >
533
+ <img src =" images/ IOyLj4i.jpg" >
534
534
<br />
535
535
<i ><a href=http://www.slideshare.net/srikrupa5/dns-security-presentation-issa>Source : DNS security presentation</a ></i >
536
536
</p >
@@ -568,7 +568,7 @@ DNSは少数のオーソライズされたサーバーが上位に位置する
568
568
## コンテンツデリバリーネットワーク(Content delivery network)
569
569
570
570
<p align =" center " >
571
- <img src =" http://i.imgur.com/ h9TAuGI.jpg" / >
571
+ <img src =" images/ h9TAuGI.jpg" >
572
572
<br />
573
573
<i ><a href=https://www.creative-artworks.eu/why-use-a-content-delivery-network-cdn/>Source : Why use a CDN</a ></i >
574
574
</p >
@@ -609,7 +609,7 @@ CDNを用いてコンテンツを配信することで以下の二つの理由
609
609
## ロードバランサー
610
610
611
611
<p align =" center " >
612
- <img src =" http://i.imgur.com/ h81n9iK.png" / >
612
+ <img src =" images/ h81n9iK.png" >
613
613
<br />
614
614
<i ><a href=http://horicky.blogspot.com/2010/10/scalable-system-design-patterns.html>Source : Scalable system design patterns</a ></i >
615
615
</p >
@@ -679,7 +679,7 @@ Layer 7 ロードバランサーは [アプリケーションレイヤー](#通
679
679
## リバースプロキシ(webサーバー)
680
680
681
681
<p align =" center " >
682
- <img src =" http://i.imgur.com/ n41Azff.png" / >
682
+ <img src =" images/ n41Azff.png" >
683
683
<br />
684
684
<i ><a href=https://upload.wikimedia.org/wikipedia/commons/6/67/Reverse_proxy_h2g2bob.svg>Source : Wikipedia</a ></i >
685
685
<br />
@@ -722,7 +722,7 @@ Layer 7 ロードバランサーは [アプリケーションレイヤー](#通
722
722
## アプリケーション層
723
723
724
724
<p align =" center " >
725
- <img src =" http://i.imgur.com/ yB5SYwm.png" / >
725
+ <img src =" images/ yB5SYwm.png" >
726
726
<br />
727
727
<i ><a href=http://lethain.com/introduction-to-architecting-systems-for-scale/#platform_layer>Source : Intro to architecting systems for scale</a ></i >
728
728
</p >
@@ -759,7 +759,7 @@ Layer 7 ロードバランサーは [アプリケーションレイヤー](#通
759
759
## データベース
760
760
761
761
<p align =" center " >
762
- <img src =" http://i.imgur.com/ Xkm5CXz.png" / >
762
+ <img src =" images/ Xkm5CXz.png" >
763
763
<br />
764
764
<i ><a href=https://www.youtube.com/watch?v=w95murBkYmU>Source : Scaling up to your first 10 million users</a ></i >
765
765
</p >
@@ -782,7 +782,7 @@ SQLなどのリレーショナルデータベースはテーブルに整理さ
782
782
マスターデータベースが読み取りと書き込みを処理し、書き込みを一つ以上のスレーブデータベースに複製します。スレーブデータベースは読み取りのみを処理します。スレーブデータベースは木構造のように追加のスレーブにデータを複製することもできます。マスターデータベースがオフラインになった場合には、いずれかのスレーブがマスターに昇格するか、新しいマスターデータベースが追加されるまでは読み取り専用モードで稼働します。
783
783
784
784
<p align =" center " >
785
- <img src =" http://i.imgur.com/ C9ioGtn.png" / >
785
+ <img src =" images/ C9ioGtn.png" >
786
786
<br />
787
787
<i ><a href=http://www.slideshare.net/jboner/scalability-availability-stability-patterns/>Source : Scalability, availability, stability, patterns</a ></i >
788
788
</p >
@@ -797,7 +797,7 @@ SQLなどのリレーショナルデータベースはテーブルに整理さ
797
797
いずれのマスターも読み取り書き込みの両方に対応する。書き込みに関してはそれぞれ協調する。いずれかのマスターが落ちても、システム全体としては読み書き両方に対応したまま運用できる。
798
798
799
799
<p align =" center " >
800
- <img src =" http://i.imgur.com/ krAHLGg.png" / >
800
+ <img src =" images/ krAHLGg.png" >
801
801
<br />
802
802
<i ><a href=http://www.slideshare.net/jboner/scalability-availability-stability-patterns/>Source : Scalability, availability, stability, patterns</a ></i >
803
803
</p >
@@ -825,7 +825,7 @@ SQLなどのリレーショナルデータベースはテーブルに整理さ
825
825
#### Federation
826
826
827
827
<p align =" center " >
828
- <img src =" http://i.imgur.com/ U3qV33e.png" / >
828
+ <img src =" images/ U3qV33e.png" >
829
829
<br />
830
830
<i ><a href=https://www.youtube.com/watch?v=w95murBkYmU>Source : Scaling up to your first 10 million users</a ></i >
831
831
</p >
@@ -846,7 +846,7 @@ SQLなどのリレーショナルデータベースはテーブルに整理さ
846
846
#### シャーディング
847
847
848
848
<p align =" center " >
849
- <img src =" http://i.imgur.com/ wU8x5Id.png" / >
849
+ <img src =" images/ wU8x5Id.png" >
850
850
<br />
851
851
<i ><a href=http://www.slideshare.net/jboner/scalability-availability-stability-patterns/>Source : Scalability, availability, stability, patterns</a ></i >
852
852
</p >
@@ -990,7 +990,7 @@ NoSQL は **key-value store**、 **document-store**、 **wide column store**、
990
990
#### ワイドカラムストア
991
991
992
992
<p align =" center " >
993
- <img src =" http://i.imgur.com/ n16iOGk.png" / >
993
+ <img src =" images/ n16iOGk.png" >
994
994
<br />
995
995
<i ><a href=http://blog.grio.com/2015/11/sql-nosql-a-brief-history.html>Source : SQL & NoSQL, a brief history</a ></i >
996
996
</p >
@@ -1013,7 +1013,7 @@ Googleは[Bigtable](http://www.read.seas.harvard.edu/~kohler/class/cs239-w08/cha
1013
1013
#### グラフデータベース
1014
1014
1015
1015
<p align =" center " >
1016
- <img src =" http://i.imgur.com/ fNcl65g.png" / >
1016
+ <img src =" images/ fNcl65g.png" >
1017
1017
<br />
1018
1018
<i ><a href=https://en.wikipedia.org/wiki/File:GraphDatabase_PropertyGraph.png>Source : Graph database</a ></i >
1019
1019
</p >
@@ -1041,7 +1041,7 @@ Googleは[Bigtable](http://www.read.seas.harvard.edu/~kohler/class/cs239-w08/cha
1041
1041
### SQLか?NoSQLか?
1042
1042
1043
1043
<p align =" center " >
1044
- <img src =" http://i.imgur.com/ wXGqG5f.png" / >
1044
+ <img src =" images/ wXGqG5f.png" >
1045
1045
<br />
1046
1046
<i ><a href=https://www.infoq.com/articles/Transition-RDBMS-NoSQL/>Source : Transitioning from RDBMS to NoSQL</a ></i >
1047
1047
</p >
@@ -1083,7 +1083,7 @@ NoSQLに適するサンプルデータ:
1083
1083
## キャッシュ
1084
1084
1085
1085
<p align =" center " >
1086
- <img src =" http://i.imgur.com/ Q6z24La.png" / >
1086
+ <img src =" images/ Q6z24La.png" >
1087
1087
<br />
1088
1088
<i ><a href=http://horicky.blogspot.com/2010/10/scalable-system-design-patterns.html>Source : Scalable system design patterns</a ></i >
1089
1089
</p >
@@ -1154,7 +1154,7 @@ Redisはさらに以下のような機能を備えています:
1154
1154
#### キャッシュアサイド
1155
1155
1156
1156
<p align =" center " >
1157
- <img src =" http://i.imgur.com/ ONjORqk.png" / >
1157
+ <img src =" images/ ONjORqk.png" >
1158
1158
<br />
1159
1159
<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 >
1160
1160
</p >
@@ -1190,7 +1190,7 @@ def get_user(self, user_id):
1190
1190
#### ライトスルー
1191
1191
1192
1192
<p align =" center " >
1193
- <img src =" http://i.imgur.com/ 0vBc0hN.png" / >
1193
+ <img src =" images/ 0vBc0hN.png" >
1194
1194
<br />
1195
1195
<i ><a href=http://www.slideshare.net/jboner/scalability-availability-stability-patterns/>Source : Scalability, availability, stability, patterns</a ></i >
1196
1196
</p >
@@ -1225,7 +1225,7 @@ def set_user(user_id, values):
1225
1225
#### ライトビハインド (ライトバック)
1226
1226
1227
1227
<p align =" center " >
1228
- <img src =" http://i.imgur.com/ rgSrvjG.png" / >
1228
+ <img src =" images/ rgSrvjG.png" >
1229
1229
<br />
1230
1230
<i ><a href=http://www.slideshare.net/jboner/scalability-availability-stability-patterns/>Source : Scalability, availability, stability, patterns</a ></i >
1231
1231
</p >
@@ -1243,7 +1243,7 @@ def set_user(user_id, values):
1243
1243
#### リフレッシュアヘッド
1244
1244
1245
1245
<p align =" center " >
1246
- <img src =" http://i.imgur.com/ kxtjqgE.png" / >
1246
+ <img src =" images/ kxtjqgE.png" >
1247
1247
<br />
1248
1248
<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 >
1249
1249
</p >
@@ -1275,7 +1275,7 @@ def set_user(user_id, values):
1275
1275
## 非同期処理
1276
1276
1277
1277
<p align =" center " >
1278
- <img src =" http://i.imgur.com/ 54GYsSx.png" / >
1278
+ <img src =" images/ 54GYsSx.png" >
1279
1279
<br />
1280
1280
<i ><a href=http://lethain.com/introduction-to-architecting-systems-for-scale/#platform_layer>Source : Intro to architecting systems for scale</a ></i >
1281
1281
</p >
@@ -1321,7 +1321,7 @@ def set_user(user_id, values):
1321
1321
## 通信
1322
1322
1323
1323
<p align =" center " >
1324
- <img src =" http://i.imgur.com/ 5KeocQs.jpg" / >
1324
+ <img src =" images/ 5KeocQs.jpg" >
1325
1325
<br />
1326
1326
<i ><a href=http://www.escotal.com/osilayer.html>Source : OSI 7 layer model</a ></i >
1327
1327
</p >
@@ -1353,7 +1353,7 @@ HTTPは**TCP** や **UDP** などの低級プロトコルに依存している
1353
1353
### 伝送制御プロトコル (TCP)
1354
1354
1355
1355
<p align =" center " >
1356
- <img src =" http://i.imgur.com/ JdAsdvG.jpg" / >
1356
+ <img src =" images/ JdAsdvG.jpg" >
1357
1357
<br />
1358
1358
<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 >
1359
1359
</p >
@@ -1377,7 +1377,7 @@ TCPは高い依存性を要し、時間制約が厳しくないものに適し
1377
1377
### ユーザデータグラムプロトコル (UDP)
1378
1378
1379
1379
<p align =" center " >
1380
- <img src =" http://i.imgur.com/ yzDrJtA.jpg" / >
1380
+ <img src =" images/ yzDrJtA.jpg" >
1381
1381
<br />
1382
1382
<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 >
1383
1383
</p >
@@ -1406,7 +1406,7 @@ TCPよりもUDPを使うのは:
1406
1406
### 遠隔手続呼出 (RPC)
1407
1407
1408
1408
<p align =" center " >
1409
- <img src =" http://i.imgur.com/ iF4Mkb5.png" / >
1409
+ <img src =" images/ iF4Mkb5.png" >
1410
1410
<br />
1411
1411
<i ><a href=http://www.puncsky.com/blog/2016-02-13-crack-the-system-design-interview>Source : Crack the system design interview</a ></i >
1412
1412
</p >
@@ -1629,7 +1629,7 @@ Notes
1629
1629
> 世の中のシステムがどのように設計されているかについての記事
1630
1630
1631
1631
<p align =" center " >
1632
- <img src =" http://i.imgur.com/ TcUo2fw.png" / >
1632
+ <img src =" images/ TcUo2fw.png" >
1633
1633
<br />
1634
1634
<i ><a href=https://www.infoq.com/presentations/Twitter-Timeline-Scalability>Source : Twitter timelines at scale</a ></i >
1635
1635
</p >
0 commit comments