質問編集履歴

9

修正

2019/10/25 06:10

投稿

urbainleverrier
urbainleverrier

スコア200

test CHANGED
File without changes
test CHANGED
@@ -6,7 +6,7 @@
6
6
 
7
7
  ##### 追記(2019/10/25)
8
8
 
9
- ※法令遵守できるかどうかといった部分で、食い違いが起きておりので、より具体的なケースを記しました。
9
+ ※法令遵守できるかどうかといった部分で、食い違いが起きていましたので、より具体的なケースを記しました。
10
10
 
11
11
 
12
12
 

8

修正

2019/10/25 06:10

投稿

urbainleverrier
urbainleverrier

スコア200

test CHANGED
@@ -1 +1 @@
1
- お金のようなデータを扱うシステムはどのように設計したら良いでしょうか
1
+ お金のようなデータを扱うシステムはどのようなアーキテクチャしたら良いでしょうか
test CHANGED
@@ -46,7 +46,7 @@
46
46
 
47
47
 
48
48
 
49
- 上のシステムを作るとなった場合、どのように設計したら良いでしょうか。
49
+ 上のシステムを作るとなった場合、どのようなアーキテクチャにしたら良いでしょうか。
50
50
 
51
51
 
52
52
 
@@ -80,13 +80,13 @@
80
80
 
81
81
 
82
82
 
83
- ### 考えたことが全部合っている場合の設計
83
+ ### 考えたことが全部合っている場合のアーキテクチャ
84
84
 
85
85
 
86
86
 
87
87
  もし、上記の想定が合っているなら、
88
88
 
89
- アプリケーションの設計として
89
+ アプリケーションのアーキテクチャとして
90
90
 
91
91
  - トランザクションログとしてkafkaのようなMQ
92
92
 
@@ -112,6 +112,6 @@
112
112
 
113
113
 
114
114
 
115
- ※法律で、資金力の問題や、免許を取得しなければならないといったシステムと直接関係のない問題は全て解決できるものとします。システム設計に関係のある法令(ログは3ヵ月は保持しましょうというような)を満たさない可能性をご存知であれば、ご指摘いただきたいです。
115
+ ※法律で、資金力の問題や、免許を取得しなければならないといったシステムと直接関係のない問題は全て解決できるものとします。システムアーキテクチャに関係のある法令(ログは3ヵ月は保持しましょうというような)を満たさない可能性をご存知であれば、ご指摘いただきたいです。
116
116
 
117
117
  ※セキュリティとして、ユーザーや管理者の認証や認可は全て正しく行われているものとします。お金固有のこだわらなくてはならないポイントがあれば、教えていただきたいです

7

修正

2019/10/25 06:09

投稿

urbainleverrier
urbainleverrier

スコア200

test CHANGED
File without changes
test CHANGED
@@ -6,7 +6,9 @@
6
6
 
7
7
  ##### 追記(2019/10/25)
8
8
 
9
- やはり法令遵守できるかどうかといった部分で、
9
+ ※法令遵守できるかどうかといった部分で、食い違いが起きておりますので、より具体的なケースを記しました。
10
+
11
+
10
12
 
11
13
  想定しているシステムについて追記します。
12
14
 

6

本文修正

2019/10/25 04:55

投稿

urbainleverrier
urbainleverrier

スコア200

test CHANGED
File without changes
test CHANGED
@@ -3,6 +3,50 @@
3
3
  会員のユーザー同士でお金のようなデータ(円やドル、仮想通貨、ポイントなど全てを含み、かつ法令を遵守できる、またユーザーにとって希少なもの)を交換するシステム(「送金」と表現することにします)をどのように作れば良いかわかりません。
4
4
 
5
5
  ここで、想定しているのは、あるユーザーが別のユーザーに残高の一部を移動させるだけのシステムです。
6
+
7
+ ##### 追記(2019/10/25)
8
+
9
+ ※やはり法令遵守できるかどうかといった部分で、
10
+
11
+ 想定しているシステムについて追記します。
12
+
13
+ お金について、ユーザーが何らかの決済手段を用いて得た(購入したとは限りません)、サイト内のみ使えるポイントと定めます。
14
+
15
+ ここで、ポイントとは、あくまでサイトの所有物として、万が一紛失しても責任は問われないようなケースで、ユーザーにはそのことをよく理解しているものとします。
16
+
17
+
18
+
19
+ あるt時点のポイントのアカウントテーブルを次のように定めます。
20
+
21
+ |id|account|user_id|
22
+
23
+ |---|---|---|
24
+
25
+ |1|100|a|
26
+
27
+ |2|70|b|
28
+
29
+
30
+
31
+ 上記のテーブルのt+1時点は、以下です。
32
+
33
+ |id|account|user_id|
34
+
35
+ |---|---|---|
36
+
37
+ |1|90|a|
38
+
39
+ |2|80|b|
40
+
41
+
42
+
43
+ id:1, user_id:aのアカウントから10引いて、id:2, user_id:bのアカウントに10足した状態を表現したということです。
44
+
45
+
46
+
47
+ 上のシステムを作るとなった場合、どのように設計したら良いでしょうか。
48
+
49
+
6
50
 
7
51
 
8
52
 

5

修正

2019/10/25 04:54

投稿

urbainleverrier
urbainleverrier

スコア200

test CHANGED
File without changes
test CHANGED
@@ -1,6 +1,6 @@
1
1
  ### 分からないこと
2
2
 
3
- 会員のユーザー同士でお金を送金するシステムをどのように作れば良いかわかりません。
3
+ 会員のユーザー同士でお金のようなデータ(円やドル、仮想通貨、ポイントなど全て含み、かつ法令を遵守できる、またユーザーにとって希少なもの)を交換するシステム(「送金」と表現することにします)をどのように作れば良いかわかりません。
4
4
 
5
5
  ここで、想定しているのは、あるユーザーが別のユーザーに残高の一部を移動させるだけのシステムです。
6
6
 

4

タイトルを修正

2019/10/25 04:28

投稿

urbainleverrier
urbainleverrier

スコア200

test CHANGED
@@ -1 +1 @@
1
- お金を扱うシステムはどのように設計したら良いでしょうか
1
+ お金のようなデータを扱うシステムはどのように設計したら良いでしょうか
test CHANGED
File without changes

3

修正

2019/10/25 04:25

投稿

urbainleverrier
urbainleverrier

スコア200

test CHANGED
File without changes
test CHANGED
@@ -20,7 +20,7 @@
20
20
 
21
21
  4. トランザクションの原子性、一貫性、独立性を満たす必要
22
22
 
23
- 5. 4が満たされない(あってはならないバグが原因で)、または不正が行われた場合にある時点からリトライ・ある時点まで強制的にロールバックできるようにすること
23
+ 5. 4が満たされない(あってはならないバグが原因で)、または不正が行われた場合にある時点からリトライ・ある時点までロールバックできるようにすること
24
24
 
25
25
 
26
26
 

2

修正

2019/10/24 18:20

投稿

urbainleverrier
urbainleverrier

スコア200

test CHANGED
File without changes
test CHANGED
@@ -20,7 +20,7 @@
20
20
 
21
21
  4. トランザクションの原子性、一貫性、独立性を満たす必要
22
22
 
23
- 5. 4が満たされない(あってはならないバグが原因で)、または不正が行われた場合に強制的にロールバックできるようにすること
23
+ 5. 4が満たされない(あってはならないバグが原因で)、または不正が行われた場合にある時点からリトライ・ある時点まで強制的にロールバックできるようにすること
24
24
 
25
25
 
26
26
 
@@ -40,7 +40,15 @@
40
40
 
41
41
  もし、上記の想定が合っているなら、
42
42
 
43
+ アプリケーションの設計として
44
+
45
+ - トランザクションログとしてkafkaのようなMQ
46
+
43
- kafkaのようなMQをトランザクションログとして見立てて、at least onceなConsumerとして残高を冪等にRDBMSのデータベースへ記録していくようなアプリケーションを設置するんじゃないかなと思いました。
47
+ - at least onceなConsumerとして残高を冪等にRDBMSのデータベースへ記録するアプリケーション
48
+
49
+ - ある時点までのトランザクションを入力とした強制ロールバック用のアプリケーション
50
+
51
+
44
52
 
45
53
  またデータについては
46
54
 

1

補足を追加

2019/10/24 18:19

投稿

urbainleverrier
urbainleverrier

スコア200

test CHANGED
File without changes
test CHANGED
@@ -55,3 +55,9 @@
55
55
 
56
56
 
57
57
  以上、金融システム実装のご経験のある方からお話を伺いたいです。
58
+
59
+
60
+
61
+ ※法律で、資金力の問題や、免許を取得しなければならないといったシステムと直接関係のない問題は全て解決できるものとします。システム設計に関係のある法令(ログは3ヵ月は保持しましょうというような)を満たさない可能性をご存知であれば、ご指摘いただきたいです。
62
+
63
+ ※セキュリティとして、ユーザーや管理者の認証や認可は全て正しく行われているものとします。お金固有のこだわらなくてはならないポイントがあれば、教えていただきたいです