From bb462063fac1df6252d96c6ea2aab9110cff4228 Mon Sep 17 00:00:00 2001 From: Ryo Shibayama Date: Sun, 26 Jul 2020 21:38:49 +0900 Subject: [PATCH 01/11] ja-Translation: Follows #433 --- README-ja.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README-ja.md b/README-ja.md index cb6633d5..e5a8012c 100644 --- a/README-ja.md +++ b/README-ja.md @@ -279,6 +279,7 @@ * [システム設計面接で成功するには?](https://www.palantir.com/2011/10/how-to-rock-a-systems-design-interview/) * [システム設計面接](http://www.hiredintech.com/system-design) * [アーキテクチャ、システム設計面接への導入](https://www.youtube.com/watch?v=ZgdS0EUmn70) +* [システム設計テンプレート](https://leetcode.com/discuss/career/229177/My-System-Design-Template) ## システム設計課題例とその解答 From a193abbf258d6e2ed6f288ee4ba710f99b5e79e1 Mon Sep 17 00:00:00 2001 From: Ryo Shibayama Date: Sun, 26 Jul 2020 21:42:19 +0900 Subject: [PATCH 02/11] ja-Translation: Follows #350 --- README-ja.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README-ja.md b/README-ja.md index e5a8012c..a653f7ac 100644 --- a/README-ja.md +++ b/README-ja.md @@ -445,7 +445,7 @@ 分散型コンピュータシステムにおいては下の三つのうち二つまでしか同時に保証することはできない。: * **一貫性** - 全ての読み込みは最新の書き込みもしくはエラーを受け取る -* **可用性** - 受け取る情報が最新のものだという保証はないが、全てのリクエストはレスポンスを必ず受け取る +* **可用性** - 受け取る情報が最新のバージョンだという保証はないが、全てのリクエストはレスポンスを必ず受け取る * **分断耐性** - ネットワーク問題によって順不同の分断が起きてもシステムが動作を続ける *ネットワークは信頼できないので、分断耐性は必ず保証しなければなりません。つまりソフトウェアシステムとしてのトレードオフは、一貫性を取るか、可用性を取るかを考えなければなりません。* @@ -456,7 +456,7 @@ #### AP - 可用性と分断耐性(availability and partition tolerance) -レスポンスはノード上にあるデータで最新のものを返します。つまり、最新版のデータが返されるとは限りません。分断が解消された後も、書き込みが反映されるのには時間がかかります。 +レスポンスは利用可能なノードのなかからすぐに利用可能なバージョンを返しますが、最新のものではない場合があります。分断が解消された後も、書き込みが反映されるのには時間がかかります。 [結果整合性](#結果整合性) を求めるサービスの際にはAPを採用するのがいいでしょう。もしくは、外部エラーに関わらずシステムが稼働する必要がある際にも同様です。 From 5dbfa19741b948a458e40d1b52d673c5258fb021 Mon Sep 17 00:00:00 2001 From: Ryo Shibayama Date: Sun, 26 Jul 2020 21:43:25 +0900 Subject: [PATCH 03/11] ja-Translation: Follows #348 --- README-ja.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README-ja.md b/README-ja.md index a653f7ac..f63ec855 100644 --- a/README-ja.md +++ b/README-ja.md @@ -463,7 +463,7 @@ ### その他の参考資料、ページ * [CAP 理論を振り返る](http://robertgreiner.com/2014/08/cap-theorem-revisited/) -* [平易な英語でのCAP 理論のイントロ](http://ksat.me/a-plain-english-introduction-to-cap-theorem/) +* [平易な英語でのCAP 理論のイントロ](http://ksat.me/a-plain-english-introduction-to-cap-theorem) * [CAP FAQ](https://github.com/henryr/cap-faq) ## 一貫性パターン From 333f810e5a3cc4f4eecb8945fd23fcbd7d6b8b0a Mon Sep 17 00:00:00 2001 From: Ryo Shibayama Date: Sun, 26 Jul 2020 21:44:13 +0900 Subject: [PATCH 04/11] ja-Translation: Follows #439 --- README-ja.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README-ja.md b/README-ja.md index f63ec855..5c81e2b7 100644 --- a/README-ja.md +++ b/README-ja.md @@ -494,7 +494,7 @@ ## 可用性パターン -高い可用性を担保するには主に次の二つのパターンがあります: **フェイルオーバー** と **レプリケーション** です。 +高い可用性を担保するには相補的な次の二つのパターンがあります: **フェイルオーバー** と **レプリケーション** です。 ### フェイルオーバー From 16313a450d783ce11b65a5afff3983e91266c7c6 Mon Sep 17 00:00:00 2001 From: Ryo Shibayama Date: Sun, 26 Jul 2020 21:45:20 +0900 Subject: [PATCH 05/11] ja-Translation: Follows #351 --- README-ja.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README-ja.md b/README-ja.md index 5c81e2b7..ab8f9a3e 100644 --- a/README-ja.md +++ b/README-ja.md @@ -547,7 +547,7 @@ DNSは少数のオーソライズされたサーバーが上位に位置する [CloudFlare](https://www.cloudflare.com/dns/) や [Route 53](https://aws.amazon.com/route53/) などのサービスはマネージドDNSサービスを提供しています。いくつかのDNSサービスでは様々な手法を使ってトラフィックを捌くことができます: -* [加重ラウンドロビン](http://g33kinfo.com/info/archives/2657) +* [加重ラウンドロビン](https://www.g33kinfo.com/info/round-robin-vs-weighted-round-robin-lb) * トラフィックがメンテナンス中のサーバーに行くのを防ぎます * 様々なクラスターサイズに応じて調整します * A/B テスト @@ -636,7 +636,7 @@ CDNを用いてコンテンツを配信することで以下の二つの理由 * ランダム * Least loaded * セッション/クッキー -* [ラウンドロビンもしくは加重ラウンドロビン](http://g33kinfo.com/info/archives/2657) +* [ラウンドロビンもしくは加重ラウンドロビン](https://www.g33kinfo.com/info/round-robin-vs-weighted-round-robin-lb) * [Layer 4](#layer-4-ロードバランシング) * [Layer 7](#layer-7-ロードバランシング) From aea5ba4a0c58769576666dad11c92946f1a644fb Mon Sep 17 00:00:00 2001 From: Ryo Shibayama Date: Sun, 26 Jul 2020 21:46:58 +0900 Subject: [PATCH 06/11] ja-Translation: Follows #411 --- README-ja.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/README-ja.md b/README-ja.md index ab8f9a3e..a5d822d4 100644 --- a/README-ja.md +++ b/README-ja.md @@ -762,7 +762,7 @@ Layer 7 ロードバランサーは [アプリケーションレイヤー](#通


- Source: Scaling up to your first 10 million users + Source: Scaling up to your first 10 million users

### リレーショナルデータベースマネジメントシステム (RDBMS) @@ -828,7 +828,7 @@ SQLなどのリレーショナルデータベースはテーブルに整理さ


- Source: Scaling up to your first 10 million users + Source: Scaling up to your first 10 million users

フェデレーション (もしくは機能分割化とも言う) はデータベースを機能ごとに分割する。例えば、モノリシックな単一データベースの代わりに、データベースを **フォーラム**、 **ユーザー**、 **プロダクト** のように三つにすることで、データベース一つあたりの書き込み・読み取りのトラフィックが減り、その結果レプリケーションのラグも短くなります。データベースが小さくなることで、メモリーに収まるデータが増えます。キャッシュの局所性が高まるため、キャッシュヒット率も上がります。単一の中央マスターで書き込みを直列化したりしないため、並列で書き込みを処理することができ、スループットの向上が期待できます。 @@ -842,7 +842,7 @@ SQLなどのリレーショナルデータベースはテーブルに整理さ ##### その他の参考資料、ページ: federation -* [Scaling up to your first 10 million users](https://www.youtube.com/watch?v=w95murBkYmU) +* [Scaling up to your first 10 million users](https://www.youtube.com/watch?v=kKjm4ehYiMs) #### シャーディング @@ -1078,7 +1078,7 @@ NoSQLに適するサンプルデータ: ##### その他の参考資料、ページ:  SQLもしくはNoSQL -* [最初の1000万ユーザーにスケールアップするために](https://www.youtube.com/watch?v=w95murBkYmU) +* [最初の1000万ユーザーにスケールアップするために](https://www.youtube.com/watch?v=kKjm4ehYiMs) * [SQLとNoSQLの違い](https://www.sitepoint.com/sql-vs-nosql-differences/) ## キャッシュ From 87d867abb3def5d117f577db1d52d47792dd7a42 Mon Sep 17 00:00:00 2001 From: Ryo Shibayama Date: Sun, 26 Jul 2020 21:47:38 +0900 Subject: [PATCH 07/11] ja-Translation: Follows #328 --- README-ja.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README-ja.md b/README-ja.md index a5d822d4..05afcf08 100644 --- a/README-ja.md +++ b/README-ja.md @@ -1522,6 +1522,7 @@ RESTはデータを公開することに焦点を当てています。クライ ### その他の参考資料、ページ: +* [APIセキュリティチェックリスト](https://github.com/shieldfy/API-Security-Checklist) * [開発者のためのセキュリティガイド](https://github.com/FallibleInc/security-guide-for-developers) * [OWASP top ten](https://www.owasp.org/index.php/OWASP_Top_Ten_Cheat_Sheet) From 89fadada901932597a7720ec118bd90e9265ce72 Mon Sep 17 00:00:00 2001 From: Ryo Shibayama Date: Sun, 26 Jul 2020 21:48:31 +0900 Subject: [PATCH 08/11] ja-Translation: Follows #441, #108 --- README-ja.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README-ja.md b/README-ja.md index 05afcf08..9a989b25 100644 --- a/README-ja.md +++ b/README-ja.md @@ -1624,6 +1624,8 @@ Notes | 複数のデータセンターからデータを配信するサービスの設計 | [highscalability.com](http://highscalability.com/blog/2009/8/24/how-google-serves-data-from-multiple-datacenters.html) | | オンラインの複数プレイヤーカードゲームの設計 | [indieflashblog.com](http://www.indieflashblog.com/how-to-create-an-asynchronous-multiplayer-game.html)
[buildnewgames.com](http://buildnewgames.com/real-time-multiplayer/) | | ガーベッジコレクションシステムの設計 | [stuffwithstuff.com](http://journal.stuffwithstuff.com/2013/12/08/babys-first-garbage-collector/)
[washington.edu](http://courses.cs.washington.edu/courses/csep521/07wi/prj/rick.pdf) | +| APIのRate Limitを設計する | [https://stripe.com/blog/](https://stripe.com/blog/rate-limiters) | +| (NASDAQやBinanceのような)株式取引所を設計する | [Jane Street](https://youtu.be/b1e4t2k2KJY)
[Golang Implementation](https://around25.com/blog/building-a-trading-engine-for-a-crypto-exchange/)
[Go Implemenation](http://bhomnick.net/building-a-simple-limit-order-in-go/) | | システム設計例題を追加する | [Contribute](#contributing) | ### 実世界のアーキテクチャ From a8887aca68fd680096448526dd88f969b46f93ee Mon Sep 17 00:00:00 2001 From: Ryo Shibayama Date: Sun, 26 Jul 2020 21:51:24 +0900 Subject: [PATCH 09/11] ja-Translation: Follows #400 --- README-ja.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README-ja.md b/README-ja.md index 9a989b25..37275585 100644 --- a/README-ja.md +++ b/README-ja.md @@ -465,6 +465,7 @@ * [CAP 理論を振り返る](http://robertgreiner.com/2014/08/cap-theorem-revisited/) * [平易な英語でのCAP 理論のイントロ](http://ksat.me/a-plain-english-introduction-to-cap-theorem) * [CAP FAQ](https://github.com/henryr/cap-faq) +* [CAP 理論](https://www.youtube.com/watch?v=k-Yaq8AHlFA) ## 一貫性パターン From a7af3ebbb33d14f77eac7c203e02b7efd55bf1f0 Mon Sep 17 00:00:00 2001 From: Ryo Shibayama Date: Sun, 26 Jul 2020 21:56:08 +0900 Subject: [PATCH 10/11] ja-Translation: Follows #321 --- README-ja.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README-ja.md b/README-ja.md index 37275585..3920ea07 100644 --- a/README-ja.md +++ b/README-ja.md @@ -1730,9 +1730,9 @@ Notes * [Microsoft Engineering](https://engineering.microsoft.com/) * [Microsoft Python Engineering](https://blogs.msdn.microsoft.com/pythonengineering/) * [Netflix Tech Blog](http://techblog.netflix.com/) -* [Paypal Developer Blog](https://devblog.paypal.com/category/engineering/) +* [Paypal Developer Blog](https://medium.com/paypal-engineering) * [Pinterest Engineering Blog](http://engineering.pinterest.com/) -* [Quora Engineering](https://engineering.quora.com/) +* [Engineering](https://www.quora.com/q/quoraengineering) * [Reddit Blog](http://www.redditblog.com/) * [Salesforce Engineering Blog](https://developer.salesforce.com/blogs/engineering/) * [Slack Engineering Blog](https://slack.engineering/) From 11b96a3302fd45351bd8aa1a88776c2c21407d12 Mon Sep 17 00:00:00 2001 From: Ryo Shibayama Date: Tue, 25 Aug 2020 20:57:40 +0900 Subject: [PATCH 11/11] Update README-ja.md --- README-ja.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README-ja.md b/README-ja.md index 3920ea07..e51413b7 100644 --- a/README-ja.md +++ b/README-ja.md @@ -456,7 +456,7 @@ #### AP - 可用性と分断耐性(availability and partition tolerance) -レスポンスは利用可能なノードのなかからすぐに利用可能なバージョンを返しますが、最新のものではない場合があります。分断が解消された後も、書き込みが反映されるのには時間がかかります。 +レスポンスは読み込み可能なデータの中で最も新しいものを返しますが、データが最新であるとは限りません。分断が解消された後も、書き込みが反映されるのには時間がかかります。 [結果整合性](#結果整合性) を求めるサービスの際にはAPを採用するのがいいでしょう。もしくは、外部エラーに関わらずシステムが稼働する必要がある際にも同様です。