WEBVTT

1
00:00:17.105 --> 00:00:17.565
<00:00:17.105>Hi <00:00:17.519>all.

2
00:00:17.685 --> 00:00:20.605
<00:00:17.685>I <00:00:17.840>will <00:00:17.996>be <00:00:18.151>watching <00:00:18.307>the <00:00:18.462>questions <00:00:18.618>also <00:00:18.773>on <00:00:18.929>the <00:00:19.084>screen,

3
00:00:20.665 --> 00:00:23.125
<00:00:20.665>so <00:00:20.820>if <00:00:20.976>you <00:00:21.131>have <00:00:21.287>any <00:00:21.442>question, <00:00:21.598>just <00:00:21.753>ask <00:00:21.909>it <00:00:22.064>directly.

4
00:00:23.265 --> 00:00:26.805
<00:00:23.265>Uh, <00:00:23.420>I <00:00:23.576>might <00:00:23.731>also <00:00:23.887>give <00:00:24.042>an <00:00:24.198>answer <00:00:24.353>straight <00:00:24.509>into <00:00:24.665>the,

5
00:00:27.275 --> 00:00:29.245
<00:00:27.275>into <00:00:27.508>the <00:00:27.741>talk <00:00:27.974>if <00:00:28.208>it's <00:00:28.441>applicable, <00:00:28.674>and

6
00:00:29.245 --> 00:00:31.365
<00:00:29.245>otherwise <00:00:29.595>at <00:00:29.945>the <00:00:30.295>end, <00:00:30.645>um,

7
00:00:32.165 --> 00:00:34.685
<00:00:32.165>I <00:00:32.365>will <00:00:32.564>tell <00:00:32.765>you <00:00:32.964>something <00:00:33.165>about <00:00:33.365>event <00:00:33.565>streaming

8
00:00:34.685 --> 00:00:38.365
<00:00:34.685>to <00:00:34.812>event <00:00:34.939>sourcing <00:00:35.066>1 <00:00:35.194>0 <00:00:35.321>1, <00:00:35.448>which <00:00:35.575>is <00:00:35.703>basically <00:00:35.830>my <00:00:35.957>story <00:00:36.085>from

9
00:00:38.925 --> 00:00:42.765
<00:00:38.925>starting <00:00:39.080>with <00:00:39.236>a <00:00:39.391>very <00:00:39.547>basic <00:00:39.702>use <00:00:39.858>cases <00:00:40.013>for <00:00:40.169>event <00:00:40.324>streaming.

10
00:00:43.225 --> 00:00:46.445
<00:00:43.225>And <00:00:43.400>then, <00:00:43.575>um, <00:00:43.750>more <00:00:43.925>and <00:00:44.100>more, <00:00:44.275>uh, <00:00:44.450>becomes <00:00:44.625>more

11
00:00:46.445 --> 00:00:49.765
<00:00:46.445>and <00:00:46.620>more <00:00:46.795>complex <00:00:46.970>towards <00:00:47.145>a <00:00:47.320>full <00:00:47.495>event <00:00:47.670>sourcing <00:00:47.845>solution.

12
00:00:50.705 --> 00:00:52.005
<00:00:50.705>Um, <00:00:51.095>I'm <00:00:51.485>Fiat <00:00:51.875>Fle.

13
00:00:52.265 --> 00:00:53.965
<00:00:52.265>I'm <00:00:52.615>working <00:00:52.965>for <00:00:53.315>Open <00:00:53.665>Web,

14
00:00:53.965 --> 00:00:57.005
<00:00:53.965>which <00:00:54.140>is <00:00:54.315>a <00:00:54.490>small <00:00:54.665>consultancy <00:00:54.840>company <00:00:55.015>in <00:00:55.190>the <00:00:55.365>Netherlands.

15
00:00:57.805 --> 00:01:02.105
<00:00:57.805>So <00:00:58.005>let's <00:00:58.205>get <00:00:58.405>to <00:00:58.605>do <00:00:58.805>it. <00:00:59.005>Oh, <00:00:59.205>yes.

16
00:01:02.845 --> 00:01:05.505
<00:01:02.845>So <00:01:03.045>first <00:01:03.245>about <00:01:03.445>what <00:01:03.644>I'm <00:01:03.845>going <00:01:04.045>to <00:01:04.245>tell.

17
00:01:05.605 --> 00:01:09.345
<00:01:05.605>So, <00:01:05.732>um, <00:01:05.859>first <00:01:05.986>I <00:01:06.114>will <00:01:06.241>do <00:01:06.368>an <00:01:06.495>small <00:01:06.623>intro <00:01:06.750>into <00:01:06.877>event <00:01:07.005>sourcing,

18
00:01:09.715 --> 00:01:11.825
<00:01:09.715>which <00:01:09.915>is <00:01:10.115>pretty <00:01:10.315>basic, <00:01:10.515>just <00:01:10.715>what <00:01:10.915>it <00:01:11.115>is.

19
00:01:12.895 --> 00:01:16.385
<00:01:12.895>Then <00:01:13.128>I <00:01:13.361>have <00:01:13.595>three <00:01:13.828>examples <00:01:14.061>from <00:01:14.295>practice,

20
00:01:16.455 --> 00:01:21.025
<00:01:16.455>from <00:01:16.655>actual <00:01:16.855>projects <00:01:17.054>running <00:01:17.255>in <00:01:17.455>production, <00:01:17.655>using, <00:01:17.855>um,

21
00:01:21.435 --> 00:01:24.465
<00:01:21.435>event <00:01:21.635>streaming <00:01:21.835>and <00:01:22.035>then <00:01:22.235>gradually <00:01:22.435>becoming <00:01:22.635>more <00:01:22.835>complex.

22
00:01:25.365 --> 00:01:27.905
<00:01:25.365>And <00:01:25.565>then <00:01:25.765>there <00:01:25.964>are <00:01:26.164>some <00:01:26.365>other <00:01:26.565>two <00:01:26.765>steps

23
00:01:27.975 --> 00:01:29.905
<00:01:27.975>that <00:01:28.175>are <00:01:28.375>from <00:01:28.574>a <00:01:28.774>hobby <00:01:28.975>project <00:01:29.175>I <00:01:29.375>started

24
00:01:30.085 --> 00:01:31.345
<00:01:30.085>around <00:01:30.463>four <00:01:30.841>years <00:01:31.219>ago

25
00:01:32.125 --> 00:01:34.505
<00:01:32.125>and <00:01:32.325>I'm <00:01:32.525>now <00:01:32.725>trying <00:01:32.925>to <00:01:33.125>build <00:01:33.325>it <00:01:33.525>into

26
00:01:35.065 --> 00:01:36.705
<00:01:35.065>a <00:01:35.414>full <00:01:35.765>event <00:01:36.115>sourcing <00:01:36.465>solution.

27
00:01:37.605 --> 00:01:39.905
<00:01:37.604>And, <00:01:37.779>uh, <00:01:37.954>finally <00:01:38.130>there <00:01:38.304>will <00:01:38.479>be <00:01:38.654>a <00:01:38.829>small <00:01:39.005>takeaway.

28
00:01:40.805 --> 00:01:44.945
<00:01:40.805>So, <00:01:40.980>uh, <00:01:41.155>the <00:01:41.330>internal <00:01:41.505>event <00:01:41.680>sourcing, <00:01:41.855>um, <00:01:42.030>will <00:01:42.205>start.

29
00:01:45.505 --> 00:01:48.505
<00:01:45.505>'cause <00:01:45.679>it's <00:01:45.854>very <00:01:46.030>much <00:01:46.205>about <00:01:46.380>how <00:01:46.554>data <00:01:46.729>flows, <00:01:46.905>uh,

30
00:01:48.525 --> 00:01:49.705
<00:01:48.525>inside <00:01:49.056>your <00:01:49.587>application.

31
00:01:49.935 --> 00:01:52.065
<00:01:49.935>Also <00:01:50.168>how <00:01:50.401>it <00:01:50.635>goes <00:01:50.868>outside <00:01:51.101>the <00:01:51.335>application

32
00:01:53.005 --> 00:01:56.985
<00:01:53.005>and <00:01:53.160>how, <00:01:53.316>uh, <00:01:53.471>controlled, <00:01:53.627>uh, <00:01:53.782>of <00:01:53.938>course <00:01:54.093>the <00:01:54.249>traditional <00:01:54.405>way.

33
00:01:57.415 --> 00:01:58.825
<00:01:57.414>Then <00:01:57.732>you <00:01:58.049>have <00:01:58.366>an <00:01:58.684>application

34
00:01:59.165 --> 00:02:02.065
<00:01:59.164>and <00:01:59.339>most <00:01:59.514>often <00:01:59.690>it's <00:01:59.865>just <00:02:00.039>occurred <00:02:00.214>to <00:02:00.389>a <00:02:00.565>database.

35
00:02:02.485 --> 00:02:04.905
<00:02:02.485>And <00:02:02.660>that's <00:02:02.835>fine <00:02:03.010>for <00:02:03.185>a <00:02:03.360>lot <00:02:03.535>of <00:02:03.710>use <00:02:03.885>cases.

36
00:02:05.165 --> 00:02:07.105
<00:02:05.165>Of <00:02:05.340>course, <00:02:05.515>when <00:02:05.690>you <00:02:05.865>are, <00:02:06.040>are <00:02:06.215>starting <00:02:06.390>to <00:02:06.565>scale

37
00:02:07.765 --> 00:02:10.145
<00:02:07.765>and <00:02:07.965>you <00:02:08.164>have <00:02:08.365>a <00:02:08.565>lot <00:02:08.764>of <00:02:08.965>different <00:02:09.164>applications

38
00:02:10.285 --> 00:02:11.905
<00:02:10.285>and <00:02:10.565>still <00:02:10.845>using <00:02:11.125>the <00:02:11.405>same <00:02:11.685>database

39
00:02:12.445 --> 00:02:13.825
<00:02:12.445>and <00:02:12.755>that <00:02:13.066>could <00:02:13.376>be <00:02:13.686>problematic.

40
00:02:14.405 --> 00:02:16.785
<00:02:14.405>Uh, <00:02:14.580>and <00:02:14.755>also <00:02:14.930>you <00:02:15.105>don't <00:02:15.280>know <00:02:15.455>anything <00:02:15.630>in <00:02:15.805>between.

41
00:02:17.165 --> 00:02:20.945
<00:02:17.165>So <00:02:17.304>for <00:02:17.445>example, <00:02:17.584>if <00:02:17.725>you <00:02:17.864>have, <00:02:18.005>um, <00:02:18.144>a <00:02:18.285>shopping <00:02:18.424>cart <00:02:18.565>in,

42
00:02:20.965 --> 00:02:23.665
<00:02:20.965>in <00:02:21.120>your <00:02:21.276>system <00:02:21.431>and <00:02:21.587>somebody <00:02:21.742>puts <00:02:21.898>something <00:02:22.053>in <00:02:22.209>the <00:02:22.365>shopping

43
00:02:23.695 --> 00:02:26.745
<00:02:23.695>cart <00:02:23.870>and <00:02:24.045>removes <00:02:24.220>it <00:02:24.394>again, <00:02:24.570>then <00:02:24.745>you <00:02:24.920>don't <00:02:25.095>have

44
00:02:26.745 --> 00:02:30.185
<00:02:26.745>that <00:02:26.920>information <00:02:27.095>anymore <00:02:27.270>unless <00:02:27.445>you <00:02:27.620>also <00:02:27.795>log <00:02:27.970>it <00:02:28.145>somewhere

45
00:02:30.325 --> 00:02:32.065
<00:02:30.325>or <00:02:30.558>put <00:02:30.791>it <00:02:31.024>into <00:02:31.258>some <00:02:31.491>other <00:02:31.725>system,

46
00:02:32.645 --> 00:02:35.465
<00:02:32.645>but <00:02:32.800>you <00:02:32.956>don't <00:02:33.111>have <00:02:33.267>it, <00:02:33.422>uh, <00:02:33.578>in, <00:02:33.733>into <00:02:33.889>your <00:02:34.045>basic,

47
00:02:35.925 --> 00:02:36.945
<00:02:35.925>um, <00:02:36.843>database.

48
00:02:38.395 --> 00:02:43.015
<00:02:38.395>So <00:02:38.628>then <00:02:38.861>there's <00:02:39.095>events, <00:02:39.328>uh, <00:02:39.561>event <00:02:39.795>streaming.

49
00:02:43.555 --> 00:02:46.535
<00:02:43.555>Um, <00:02:43.755>most <00:02:43.955>often <00:02:44.155>Kafka <00:02:44.355>is <00:02:44.555>used <00:02:44.755>for <00:02:44.955>this.

50
00:02:46.565 --> 00:02:49.455
<00:02:46.565>This <00:02:46.740>is <00:02:46.915>also <00:02:47.090>the <00:02:47.265>image, <00:02:47.440>uh, <00:02:47.615>from, <00:02:47.790>from <00:02:47.965>Kafka.

51
00:02:50.495 --> 00:02:52.595
<00:02:50.495>And <00:02:50.775>then <00:02:51.055>you <00:02:51.335>take, <00:02:51.615>uh, <00:02:51.895>events

52
00:02:53.015 --> 00:02:57.865
<00:02:53.015>or <00:02:53.214>database <00:02:53.415>rights, <00:02:53.614>um, <00:02:53.815>which <00:02:54.015>yeah, <00:02:54.214>are <00:02:54.415>kind

53
00:02:57.865 --> 00:02:59.525
<00:02:57.865>of <00:02:58.145>also <00:02:58.425>like <00:02:58.705>events <00:02:58.985>of <00:02:59.265>course.

54
00:02:59.805 --> 00:03:02.445
<00:02:59.805>'cause <00:02:59.945>if <00:03:00.085>you <00:03:00.225>know <00:03:00.365>that <00:03:00.505>a <00:03:00.645>document <00:03:00.785>in <00:03:00.925>Mongo <00:03:01.065>has <00:03:01.205>changed

55
00:03:02.865 --> 00:03:06.005
<00:03:02.865>or <00:03:03.005>if <00:03:03.145>a <00:03:03.285>row <00:03:03.425>in <00:03:03.565>progress <00:03:03.705>has <00:03:03.845>changed, <00:03:03.985>then <00:03:04.125>you <00:03:04.265>know

56
00:03:06.005 --> 00:03:07.405
<00:03:06.005>that's <00:03:06.635>something <00:03:07.265>happened.

57
00:03:08.145 --> 00:03:09.885
<00:03:08.145>And <00:03:08.425>then <00:03:08.705>you <00:03:08.985>can <00:03:09.265>process <00:03:09.545>that.

58
00:03:09.985 --> 00:03:12.645
<00:03:09.985>And <00:03:10.185>the <00:03:10.385>nice <00:03:10.585>thing, <00:03:10.785>especially <00:03:10.985>of <00:03:11.185>Kafka <00:03:11.385>is

59
00:03:12.645 --> 00:03:14.005
<00:03:12.645>that <00:03:12.951>it's <00:03:13.257>kind <00:03:13.563>of <00:03:13.869>decoupled.

60
00:03:14.265 --> 00:03:18.765
<00:03:14.265>So <00:03:14.464>if, <00:03:14.665>um, <00:03:14.864>you <00:03:15.065>putting <00:03:15.265>events <00:03:15.464>on <00:03:15.665>Kafka,

61
00:03:18.765 --> 00:03:21.005
<00:03:18.765>you <00:03:18.964>only <00:03:19.165>care <00:03:19.364>that <00:03:19.565>it's <00:03:19.765>put <00:03:19.964>on <00:03:20.165>Kafka

62
00:03:21.185 --> 00:03:23.325
<00:03:21.185>and <00:03:21.360>then <00:03:21.535>it <00:03:21.710>doesn't <00:03:21.885>matter <00:03:22.060>what <00:03:22.235>happens <00:03:22.410>to <00:03:22.585>it

63
00:03:23.705 --> 00:03:26.485
<00:03:23.704>and <00:03:23.904>each <00:03:24.105>consumer <00:03:24.304>can <00:03:24.505>just <00:03:24.704>take <00:03:24.904>those <00:03:25.105>events

64
00:03:26.585 --> 00:03:28.555
<00:03:26.585>and <00:03:26.865>do <00:03:27.145>something <00:03:27.425>with <00:03:27.705>it, <00:03:27.985>uh,

65
00:03:28.615 --> 00:03:30.715
<00:03:28.615>and <00:03:28.815>can <00:03:29.015>just <00:03:29.215>wait <00:03:29.415>till <00:03:29.615>new <00:03:29.815>events <00:03:30.015>arrive.

66
00:03:30.935 --> 00:03:33.435
<00:03:30.935>And <00:03:31.090>also <00:03:31.246>you <00:03:31.401>can <00:03:31.557>go <00:03:31.712>offline <00:03:31.868>for <00:03:32.023>maybe <00:03:32.179>an <00:03:32.335>hour

67
00:03:33.455 --> 00:03:37.115
<00:03:33.454>and <00:03:33.610>then <00:03:33.766>get <00:03:33.921>back <00:03:34.077>and <00:03:34.232>then <00:03:34.388>continue <00:03:34.543>very <00:03:34.699>left <00:03:34.855>off.

68
00:03:38.155 --> 00:03:40.895
<00:03:38.155>Um, <00:03:38.505>so <00:03:38.855>that's <00:03:39.205>event <00:03:39.555>streaming

69
00:03:41.195 --> 00:03:42.855
<00:03:41.195>and <00:03:41.545>now <00:03:41.894>towards <00:03:42.245>event <00:03:42.595>sourcing.

70
00:03:43.795 --> 00:03:45.335
<00:03:43.795>Uh, <00:03:44.026>and <00:03:44.257>that <00:03:44.488>goes <00:03:44.719>a <00:03:44.950>bit <00:03:45.181>further

71
00:03:45.695 --> 00:03:48.215
<00:03:45.695>'cause <00:03:45.928>then <00:03:46.161>you <00:03:46.394>need <00:03:46.628>the <00:03:46.861>basic <00:03:47.095>structure

72
00:03:48.315 --> 00:03:51.055
<00:03:48.315>of <00:03:48.595>your <00:03:48.875>application <00:03:49.155>becomes <00:03:49.435>the <00:03:49.715>event.

73
00:03:51.995 --> 00:03:56.015
<00:03:51.995>So, <00:03:52.122>uh, <00:03:52.249>nice, <00:03:52.376>uh, <00:03:52.504>way <00:03:52.631>to <00:03:52.758>compare <00:03:52.885>this <00:03:53.013>is <00:03:53.140>with <00:03:53.267>the <00:03:53.395>dashboard.

74
00:03:56.555 --> 00:03:58.175
<00:03:56.555>If <00:03:56.835>you <00:03:57.115>have <00:03:57.395>a <00:03:57.675>traditional <00:03:57.955>application,

75
00:03:58.315 --> 00:04:00.935
<00:03:58.315>you <00:03:58.470>only <00:03:58.626>really <00:03:58.781>care <00:03:58.937>about <00:03:59.092>the <00:03:59.248>pieces <00:03:59.403>on <00:03:59.559>the <00:03:59.715>board

76
00:04:00.955 --> 00:04:01.975
<00:04:00.955>and <00:04:01.261>how <00:04:01.567>they're <00:04:01.873>located.

77
00:04:02.715 --> 00:04:03.735
<00:04:02.715>And <00:04:03.021>with <00:04:03.327>defense <00:04:03.633>sourcing,

78
00:04:03.955 --> 00:04:06.415
<00:04:03.955>you <00:04:04.155>really <00:04:04.355>store <00:04:04.555>every <00:04:04.755>step <00:04:04.955>of <00:04:05.155>the <00:04:05.355>board.

79
00:04:06.555 --> 00:04:08.975
<00:04:06.555>But <00:04:06.710>of <00:04:06.866>course, <00:04:07.021>if <00:04:07.177>you <00:04:07.332>want <00:04:07.488>to, <00:04:07.643>uh, <00:04:07.799>go <00:04:07.955>back

80
00:04:09.155 --> 00:04:12.855
<00:04:09.155>to <00:04:09.295>the <00:04:09.435>actual <00:04:09.575>state <00:04:09.715>of <00:04:09.855>the <00:04:09.995>dashboard, <00:04:10.135>you <00:04:10.275>have <00:04:10.415>to <00:04:10.555>start

81
00:04:12.855 --> 00:04:14.615
<00:04:12.855>with <00:04:13.054>the <00:04:13.255>fresh <00:04:13.454>board, <00:04:13.655>put <00:04:13.855>the <00:04:14.054>pieces <00:04:14.255>in,

82
00:04:14.615 --> 00:04:17.135
<00:04:14.615>and <00:04:14.790>then <00:04:14.965>set <00:04:15.140>all <00:04:15.315>the <00:04:15.490>pieces <00:04:15.665>to <00:04:15.840>get <00:04:16.015>back

83
00:04:17.555 --> 00:04:18.615
<00:04:17.555>to <00:04:17.873>the <00:04:18.191>actual <00:04:18.509>states.

84
00:04:18.875 --> 00:04:21.225
<00:04:18.875>Uh, <00:04:19.575>and <00:04:20.274>then

85
00:04:21.225 --> 00:04:24.105
<00:04:21.225>of <00:04:21.352>course <00:04:21.479>you <00:04:21.606>can <00:04:21.734>also <00:04:21.861>do <00:04:21.988>things <00:04:22.115>like <00:04:22.243>you <00:04:22.370>can <00:04:22.497>add <00:04:22.625>timestamps

86
00:04:24.105 --> 00:04:27.505
<00:04:24.105>to <00:04:24.245>those <00:04:24.385>events <00:04:24.525>that <00:04:24.665>you <00:04:24.805>can <00:04:24.945>use <00:04:25.085>for <00:04:25.225>something <00:04:25.365>later <00:04:25.505>on.

87
00:04:29.385 --> 00:04:33.285
<00:04:29.385>So <00:04:29.512>if <00:04:29.639>you <00:04:29.766>want <00:04:29.894>to <00:04:30.021>go <00:04:30.148>to <00:04:30.275>full <00:04:30.403>event <00:04:30.530>sourcing, <00:04:30.657>there's <00:04:30.784>like

88
00:04:34.085 --> 00:04:35.365
<00:04:34.085>multiple <00:04:34.373>ways <00:04:34.661>to <00:04:34.949>describe <00:04:35.237>this.

89
00:04:35.465 --> 00:04:38.125
<00:04:35.465>But <00:04:35.745>for, <00:04:36.025>uh, <00:04:36.305>the <00:04:36.585>ease, <00:04:36.865>um,

90
00:04:39.355 --> 00:04:41.305
<00:04:39.355>there <00:04:39.705>are <00:04:40.055>like <00:04:40.405>different <00:04:40.755>kinds.

91
00:04:41.775 --> 00:04:45.185
<00:04:41.775>It's <00:04:42.054>very, <00:04:42.335>um, <00:04:42.614>easy <00:04:42.895>to, <00:04:43.174>um,

92
00:04:45.985 --> 00:04:47.585
<00:04:45.985>mingle <00:04:46.451>events <00:04:46.918>and <00:04:47.385>messages.

93
00:04:48.205 --> 00:04:51.665
<00:04:48.205>So <00:04:48.438>for <00:04:48.671>events, <00:04:48.905>source <00:04:49.138>for <00:04:49.371>Kafka <00:04:49.604>basically,

94
00:04:51.685 --> 00:04:53.585
<00:04:51.685>and <00:04:51.965>everything <00:04:52.245>is, <00:04:52.525>is <00:04:52.805>a <00:04:53.085>message.

95
00:04:54.445 --> 00:04:56.665
<00:04:54.445>And <00:04:54.678>with <00:04:54.911>event <00:04:55.145>sourcing <00:04:55.378>there <00:04:55.611>are <00:04:55.844>specific

96
00:04:57.315 --> 00:04:58.425
<00:04:57.315>kinds <00:04:57.814>of <00:04:58.314>messages.

97
00:04:58.605 --> 00:05:01.745
<00:04:58.605>So <00:04:58.760>you <00:04:58.916>have <00:04:59.071>messages <00:04:59.227>that <00:04:59.382>are <00:04:59.538>commands, <00:04:59.693>messages <00:04:59.849>are <00:05:00.005>events

98
00:05:01.845 --> 00:05:03.305
<00:05:01.845>or <00:05:02.173>messages <00:05:02.502>that <00:05:02.830>are <00:05:03.159>queries.

99
00:05:04.045 --> 00:05:07.665
<00:05:04.045>And <00:05:04.220>the <00:05:04.395>idea <00:05:04.570>is <00:05:04.745>that <00:05:04.920>commands <00:05:05.095>are <00:05:05.270>specific <00:05:05.445>messages

100
00:05:07.665 --> 00:05:08.985
<00:05:07.665>that <00:05:07.962>want <00:05:08.259>to <00:05:08.556>change <00:05:08.853>something.

101
00:05:09.525 --> 00:05:12.825
<00:05:09.525>So <00:05:09.724>for <00:05:09.924>example, <00:05:10.125>opening <00:05:10.325>up <00:05:10.525>a <00:05:10.724>bank <00:05:10.924>account

102
00:05:13.125 --> 00:05:15.785
<00:05:13.125>or <00:05:13.300>transfer <00:05:13.475>money <00:05:13.650>from <00:05:13.825>one <00:05:14.000>bank <00:05:14.175>account <00:05:14.350>to <00:05:14.525>another.

103
00:05:16.465 --> 00:05:18.915
<00:05:16.465>Then <00:05:16.640>there <00:05:16.815>are <00:05:16.989>events <00:05:17.164>that <00:05:17.340>are <00:05:17.515>things <00:05:17.690>that <00:05:17.864>happen

104
00:05:19.445 --> 00:05:23.395
<00:05:19.445>based <00:05:19.585>on <00:05:19.724>commands <00:05:19.865>or <00:05:20.005>based <00:05:20.145>on <00:05:20.284>side <00:05:20.425>effects <00:05:20.565>of <00:05:20.705>other <00:05:20.844>events.

105
00:05:23.975 --> 00:05:26.395
<00:05:23.975>So <00:05:24.175>for <00:05:24.375>example, <00:05:24.575>uh, <00:05:24.775>a <00:05:24.975>balance <00:05:25.175>is <00:05:25.375>opened

106
00:05:26.575 --> 00:05:28.715
<00:05:26.575>or <00:05:26.854>money <00:05:27.135>is <00:05:27.414>done, <00:05:27.695>uh, <00:05:27.974>transferred.

107
00:05:29.825 --> 00:05:31.085
<00:05:29.825>And <00:05:30.108>then <00:05:30.392>you <00:05:30.675>have <00:05:30.959>queries.

108
00:05:31.175 --> 00:05:36.045
<00:05:31.175>These <00:05:31.315>are <00:05:31.455>things <00:05:31.595>that <00:05:31.735>months, <00:05:31.875>uh, <00:05:32.015>are <00:05:32.155>about, <00:05:32.295>um, <00:05:32.435>the <00:05:32.575>events

109
00:05:36.045 --> 00:05:37.085
<00:05:36.045>that <00:05:36.279>happened <00:05:36.513>in <00:05:36.747>the <00:05:36.981>past.

110
00:05:37.585 --> 00:05:39.525
<00:05:37.585>Uh, <00:05:37.864>they <00:05:38.145>have <00:05:38.424>a <00:05:38.705>certain <00:05:38.984>state

111
00:05:40.815 --> 00:05:43.675
<00:05:40.815>and <00:05:41.015>they <00:05:41.215>themselves <00:05:41.415>aren't <00:05:41.615>allowed <00:05:41.815>to <00:05:42.015>change <00:05:42.215>anything.

112
00:05:44.055 --> 00:05:46.995
<00:05:44.055>So <00:05:44.210>for <00:05:44.366>example, <00:05:44.521>query <00:05:44.677>could <00:05:44.832>be <00:05:44.988>what's <00:05:45.143>my <00:05:45.299>current <00:05:45.455>balance.

113
00:05:48.665 --> 00:05:52.155
<00:05:48.665>Then <00:05:48.840>another <00:05:49.015>thing <00:05:49.190>with <00:05:49.365>event <00:05:49.540>sourcing <00:05:49.715>is <00:05:49.890>that, <00:05:50.065>uh,

114
00:05:52.255 --> 00:05:54.155
<00:05:52.255>events <00:05:52.534>are <00:05:52.815>really <00:05:53.094>your <00:05:53.375>single <00:05:53.655>source

115
00:05:54.155 --> 00:05:55.955
<00:05:54.155>of <00:05:54.434>truth <00:05:54.715>and <00:05:54.994>are <00:05:55.275>stored <00:05:55.554>forever.

116
00:05:56.695 --> 00:06:00.925
<00:05:56.695>So <00:05:56.811>if <00:05:56.928>you <00:05:57.045>are, <00:05:57.161>uh, <00:05:57.278>a <00:05:57.395>lot <00:05:57.511>of <00:05:57.628>times <00:05:57.745>for <00:05:57.861>example <00:05:57.978>with <00:05:58.094>Kafka,

117
00:06:00.985 --> 00:06:02.125
<00:06:00.985>you <00:06:01.498>still, <00:06:02.011>uh,

118
00:06:02.625 --> 00:06:06.125
<00:06:02.625>or <00:06:02.800>a <00:06:02.975>traditional <00:06:03.150>database <00:06:03.325>is <00:06:03.500>used <00:06:03.675>beside <00:06:03.850>behind <00:06:04.025>it.

119
00:06:06.265 --> 00:06:10.445
<00:06:06.265>And <00:06:06.392>then <00:06:06.519>the, <00:06:06.646>um, <00:06:06.774>that's <00:06:06.901>the, <00:06:07.028>the <00:06:07.155>still <00:06:07.283>the <00:06:07.410>source <00:06:07.537>of <00:06:07.664>truth,

120
00:06:10.945 --> 00:06:12.325
<00:06:10.945>but <00:06:11.255>then <00:06:11.566>it's <00:06:11.876>not, <00:06:12.187>uh,

121
00:06:12.395 --> 00:06:16.085
<00:06:12.395>it's <00:06:12.534>still <00:06:12.674>event <00:06:12.815>streaming <00:06:12.955>if <00:06:13.094>you <00:06:13.234>use <00:06:13.375>event <00:06:13.515>from <00:06:13.655>Kafka <00:06:13.794>right

122
00:06:16.085 --> 00:06:18.605
<00:06:16.085>into <00:06:16.260>some <00:06:16.435>other <00:06:16.609>topic, <00:06:16.784>but <00:06:16.960>it's <00:06:17.135>not <00:06:17.310>event <00:06:17.484>sourcing

123
00:06:18.925 --> 00:06:22.125
<00:06:18.925>'cause <00:06:19.065>your, <00:06:19.205>your <00:06:19.345>source <00:06:19.485>of <00:06:19.625>truth <00:06:19.765>is <00:06:19.905>still <00:06:20.045>in <00:06:20.185>the <00:06:20.325>database.

124
00:06:23.865 --> 00:06:27.605
<00:06:23.865>Uh, <00:06:23.992>and <00:06:24.119>then <00:06:24.246>some <00:06:24.374>other <00:06:24.501>thing <00:06:24.628>is <00:06:24.755>that <00:06:24.883>events <00:06:25.010>should <00:06:25.137>be, <00:06:25.265>uh,

125
00:06:27.635 --> 00:06:28.645
<00:06:27.635>able <00:06:28.089>to <00:06:28.544>replay.

126
00:06:29.185 --> 00:06:31.765
<00:06:29.185>So, <00:06:29.385>um, <00:06:29.585>if <00:06:29.785>you <00:06:29.985>have <00:06:30.185>a <00:06:30.385>traditional <00:06:30.585>application,

127
00:06:31.825 --> 00:06:34.125
<00:06:31.825>of <00:06:31.965>course <00:06:32.104>you <00:06:32.245>need <00:06:32.385>to <00:06:32.525>make <00:06:32.664>sure <00:06:32.805>that <00:06:32.945>you <00:06:33.085>have <00:06:33.224>backups

128
00:06:34.125 --> 00:06:38.645
<00:06:34.125>and <00:06:34.265>that, <00:06:34.405>uh, <00:06:34.545>you <00:06:34.685>want <00:06:34.825>to <00:06:34.965>have <00:06:35.105>them, <00:06:35.245>um, <00:06:35.385>yeah, <00:06:35.525>often.

129
00:06:39.165 --> 00:06:41.085
<00:06:39.165>'cause <00:06:39.445>otherwise <00:06:39.725>you <00:06:40.005>lose <00:06:40.285>information <00:06:40.565>if,

130
00:06:41.085 --> 00:06:43.565
<00:06:41.085>if <00:06:41.435>something <00:06:41.784>goes <00:06:42.135>pretty <00:06:42.484>wrong.

131
00:06:44.935 --> 00:06:46.875
<00:06:44.935>And <00:06:45.135>I <00:06:45.335>need <00:06:45.535>that, <00:06:45.735>that <00:06:45.935>with <00:06:46.135>event <00:06:46.335>sourcing,

132
00:06:47.015 --> 00:06:48.635
<00:06:47.015>you <00:06:47.294>only <00:06:47.575>really <00:06:47.854>care <00:06:48.135>about <00:06:48.414>events.

133
00:06:48.975 --> 00:06:50.115
<00:06:48.975>So <00:06:49.317>even <00:06:49.659>if, <00:06:50.001>uh,

134
00:06:50.135 --> 00:06:53.515
<00:06:50.135>for <00:06:50.290>querying <00:06:50.446>you're <00:06:50.601>putting <00:06:50.757>them <00:06:50.912>in <00:06:51.068>some <00:06:51.223>sort <00:06:51.379>of <00:06:51.534>database,

135
00:06:53.515 --> 00:06:56.595
<00:06:53.515>you <00:06:53.715>should <00:06:53.914>be <00:06:54.115>able <00:06:54.315>to, <00:06:54.515>um, <00:06:54.715>build <00:06:54.914>up

136
00:06:56.595 --> 00:06:58.795
<00:06:56.595>that <00:06:56.875>database <00:06:57.155>from <00:06:57.435>the <00:06:57.715>raw <00:06:57.995>events.

137
00:07:01.035 --> 00:07:04.655
<00:07:01.035>So, <00:07:01.210>uh, <00:07:01.385>this <00:07:01.560>will <00:07:01.735>go <00:07:01.910>slightly <00:07:02.085>in <00:07:02.260>chronological <00:07:02.435>order

138
00:07:04.755 --> 00:07:06.775
<00:07:04.755>and <00:07:04.955>also <00:07:05.155>a <00:07:05.355>bit <00:07:05.555>in <00:07:05.755>order <00:07:05.955>of <00:07:06.155>complexity.

139
00:07:07.515 --> 00:07:09.415
<00:07:07.515>And <00:07:07.715>the <00:07:07.914>first <00:07:08.115>one <00:07:08.315>is <00:07:08.515>the <00:07:08.715>T-Rex <00:07:08.914>stack.

140
00:07:09.845 --> 00:07:13.695
<00:07:09.845>This, <00:07:09.972>uh, <00:07:10.099>T-Rex <00:07:10.226>in <00:07:10.354>the <00:07:10.481>picture <00:07:10.608>is <00:07:10.735>actually <00:07:10.863>one <00:07:10.990>I <00:07:11.117>bought <00:07:11.245>at

141
00:07:14.005 --> 00:07:16.575
<00:07:14.005>nais, <00:07:14.160>which <00:07:14.316>is <00:07:14.471>a <00:07:14.627>museum <00:07:14.782>in <00:07:14.938>in <00:07:15.093>Lighten <00:07:15.249>the <00:07:15.405>Netherlands.

142
00:07:16.835 --> 00:07:18.575
<00:07:16.835>Um, <00:07:17.114>it's <00:07:17.395>a <00:07:17.674>pretty <00:07:17.955>nice <00:07:18.234>museum.

143
00:07:19.275 --> 00:07:20.785
<00:07:19.275>Um, <00:07:20.634>uh,

144
00:07:20.845 --> 00:07:24.665
<00:07:20.845>and <00:07:20.972>it's <00:07:21.099>like, <00:07:21.226>it's <00:07:21.354>the, <00:07:21.481>the, <00:07:21.608>the <00:07:21.735>thing <00:07:21.863>I <00:07:21.990>first <00:07:22.117>started <00:07:22.245>with

145
00:07:25.175 --> 00:07:29.105
<00:07:25.175>defense <00:07:25.350>streaming <00:07:25.525>and <00:07:25.700>it <00:07:25.875>was <00:07:26.050>about <00:07:26.225>change <00:07:26.400>data <00:07:26.575>capture.

146
00:07:29.645 --> 00:07:33.905
<00:07:29.645>And <00:07:29.800>that's <00:07:29.956>a <00:07:30.111>way <00:07:30.267>of <00:07:30.422>transforming <00:07:30.578>operations <00:07:30.733>on <00:07:30.889>a <00:07:31.044>traditional

147
00:07:34.225 --> 00:07:37.385
<00:07:34.225>database <00:07:34.425>and <00:07:34.625>changing <00:07:34.825>it <00:07:35.025>into <00:07:35.225>an <00:07:35.425>event <00:07:35.625>stream

148
00:07:37.695 --> 00:07:42.185
<00:07:37.695>because, <00:07:37.895>um, <00:07:38.094>ironically, <00:07:38.295>most <00:07:38.495>databases <00:07:38.695>still <00:07:38.895>have <00:07:39.094>kind

149
00:07:42.185 --> 00:07:46.625
<00:07:42.185>of <00:07:42.325>an <00:07:42.465>event <00:07:42.605>law, <00:07:42.745>uh, <00:07:42.885>where <00:07:43.025>every <00:07:43.165>kind <00:07:43.305>of, <00:07:43.445>uh, <00:07:43.585>operation

150
00:07:46.685 --> 00:07:50.985
<00:07:46.685>that's <00:07:46.840>done <00:07:46.996>on <00:07:47.151>the <00:07:47.307>database <00:07:47.462>is <00:07:47.618>written <00:07:47.773>in <00:07:47.929>some <00:07:48.085>kind

151
00:07:50.985 --> 00:07:54.305
<00:07:50.985>of <00:07:51.125>logging <00:07:51.265>and <00:07:51.405>then <00:07:51.545>all <00:07:51.685>these <00:07:51.825>events <00:07:51.965>from <00:07:52.105>the <00:07:52.245>logging <00:07:52.385>you

152
00:07:54.305 --> 00:07:56.465
<00:07:54.305>can <00:07:54.585>put <00:07:54.865>them <00:07:55.145>into <00:07:55.425>something <00:07:55.705>else.

153
00:07:56.525 --> 00:07:59.665
<00:07:56.525>And <00:07:56.700>then <00:07:56.875>you <00:07:57.049>have <00:07:57.224>a <00:07:57.400>stream <00:07:57.575>from <00:07:57.750>the <00:07:57.924>database.

154
00:08:01.465 --> 00:08:04.085
<00:08:01.465>And <00:08:01.698>this <00:08:01.931>was <00:08:02.164>for <00:08:02.398>a, <00:08:02.631>a <00:08:02.864>bank

155
00:08:04.085 --> 00:08:08.365
<00:08:04.085>and <00:08:04.192>in <00:08:04.300>this <00:08:04.408>case <00:08:04.515>it <00:08:04.623>was <00:08:04.731>to <00:08:04.838>be <00:08:04.946>able <00:08:05.054>to <00:08:05.161>send <00:08:05.269>real <00:08:05.377>time <00:08:05.484>alerts.

156
00:08:10.125 --> 00:08:14.425
<00:08:10.125>Uh, <00:08:10.241>and <00:08:10.358>these <00:08:10.475>payments, <00:08:10.591>it <00:08:10.708>was <00:08:10.825>not <00:08:10.941>like, <00:08:11.058>uh, <00:08:11.175>the <00:08:11.291>talk <00:08:11.408>we <00:08:11.525>saw

157
00:08:14.935 --> 00:08:16.865
<00:08:14.935>just <00:08:15.215>with, <00:08:15.495>with, <00:08:15.775>with, <00:08:16.055>with <00:08:16.335>payments,

158
00:08:16.865 --> 00:08:18.345
<00:08:16.865>with <00:08:17.198>the <00:08:17.531>whole <00:08:17.864>motor <00:08:18.197>structure.

159
00:08:18.525 --> 00:08:20.825
<00:08:18.525>Now <00:08:18.758>this <00:08:18.991>was <00:08:19.224>already <00:08:19.458>the <00:08:19.691>core <00:08:19.924>payments

160
00:08:20.825 --> 00:08:22.745
<00:08:20.825>that <00:08:21.058>are <00:08:21.291>being <00:08:21.525>done <00:08:21.758>on <00:08:21.991>a <00:08:22.224>mainframe.

161
00:08:23.605 --> 00:08:26.345
<00:08:23.605>So <00:08:23.780>you <00:08:23.955>also <00:08:24.130>don't <00:08:24.305>want <00:08:24.480>to <00:08:24.655>query <00:08:24.830>the <00:08:25.005>mainframe.

162
00:08:26.805 --> 00:08:30.705
<00:08:26.805>So <00:08:26.945>then <00:08:27.085>from <00:08:27.225>the <00:08:27.365>login <00:08:27.505>you <00:08:27.645>can <00:08:27.785>get <00:08:27.925>all <00:08:28.065>the <00:08:28.205>transactions

163
00:08:31.555 --> 00:08:33.055
<00:08:31.555>and <00:08:31.780>you <00:08:32.005>can <00:08:32.230>put <00:08:32.454>them <00:08:32.679>in <00:08:32.905>Kafka.

164
00:08:33.115 --> 00:08:36.095
<00:08:33.115>And <00:08:33.255>then <00:08:33.395>with <00:08:33.534>some <00:08:33.674>alerting <00:08:33.815>app, <00:08:33.955>you <00:08:34.095>can <00:08:34.235>compare <00:08:34.375>that <00:08:34.515>to

165
00:08:36.095 --> 00:08:39.415
<00:08:36.095>what <00:08:36.250>the <00:08:36.406>customers <00:08:36.561>said <00:08:36.717>they <00:08:36.872>wanted <00:08:37.028>to <00:08:37.183>be <00:08:37.339>alerted <00:08:37.495>on.

166
00:08:39.795 --> 00:08:41.295
<00:08:39.794>So <00:08:40.245>for <00:08:40.694>example, <00:08:41.145>um,

167
00:08:41.915 --> 00:08:46.135
<00:08:41.914>you <00:08:42.031>could <00:08:42.148>could <00:08:42.265>set <00:08:42.381>an <00:08:42.498>alert <00:08:42.615>from <00:08:42.731>every <00:08:42.848>time <00:08:42.964>I <00:08:43.081>want <00:08:43.198>to, <00:08:43.314>uh,

168
00:08:46.215 --> 00:08:49.615
<00:08:46.215>I <00:08:46.390>get <00:08:46.565>money <00:08:46.740>more <00:08:46.915>than <00:08:47.090>500 <00:08:47.265>euros, <00:08:47.440>I <00:08:47.615>want

169
00:08:49.615 --> 00:08:50.935
<00:08:49.615>to <00:08:49.912>get <00:08:50.209>an <00:08:50.506>SMS <00:08:50.803>message.

170
00:08:51.595 --> 00:08:53.415
<00:08:51.595>You <00:08:51.770>could <00:08:51.945>put <00:08:52.120>something <00:08:52.295>like <00:08:52.470>that <00:08:52.645>in <00:08:52.820>the <00:08:52.995>app

171
00:08:53.515 --> 00:08:56.045
<00:08:53.515>and <00:08:53.689>then <00:08:53.865>the <00:08:54.040>rating <00:08:54.215>app <00:08:54.390>would <00:08:54.564>compare <00:08:54.740>the <00:08:54.915>settings

172
00:08:56.065 --> 00:08:57.925
<00:08:56.065>to <00:08:56.298>the <00:08:56.531>payments <00:08:56.765>that <00:08:56.998>were <00:08:57.231>just <00:08:57.465>done

173
00:08:58.545 --> 00:09:00.125
<00:08:58.545>and <00:08:58.824>then <00:08:59.104>send <00:08:59.385>on <00:08:59.665>the <00:08:59.944>alert.

174
00:09:01.095 --> 00:09:05.275
<00:09:01.095>So <00:09:01.295>that's <00:09:01.495>pretty <00:09:01.695>nice, <00:09:01.895>pretty <00:09:02.095>easy, <00:09:02.295>relatively, <00:09:02.495>uh,

175
00:09:05.275 --> 00:09:07.715
<00:09:05.275>your <00:09:05.430>source <00:09:05.586>of <00:09:05.741>truth <00:09:05.897>of <00:09:06.052>course <00:09:06.208>is <00:09:06.363>still <00:09:06.519>the <00:09:06.675>mainframe,

176
00:09:08.415 --> 00:09:11.035
<00:09:08.415>but <00:09:08.648>then <00:09:08.881>every <00:09:09.115>kind <00:09:09.348>of, <00:09:09.581>uh, <00:09:09.814>events

177
00:09:11.175 --> 00:09:15.675
<00:09:11.175>or <00:09:11.314>triggers <00:09:11.454>you <00:09:11.594>want <00:09:11.734>to <00:09:11.875>have <00:09:12.015>handled <00:09:12.155>based <00:09:12.295>on <00:09:12.435>the <00:09:12.574>actual,

178
00:09:16.255 --> 00:09:19.395
<00:09:16.255>uh, <00:09:16.430>transfers <00:09:16.605>of <00:09:16.780>money <00:09:16.955>can <00:09:17.130>be <00:09:17.305>done <00:09:17.480>from <00:09:17.655>that.

179
00:09:19.415 --> 00:09:21.915
<00:09:19.415>And <00:09:19.615>also, <00:09:19.814>like <00:09:20.015>I <00:09:20.214>just <00:09:20.415>said <00:09:20.615>with <00:09:20.814>Kafka,

180
00:09:22.345 --> 00:09:25.435
<00:09:22.345>once <00:09:22.500>you <00:09:22.656>have <00:09:22.811>all <00:09:22.967>those <00:09:23.122>kind <00:09:23.278>of <00:09:23.433>events <00:09:23.589>in <00:09:23.745>Kafka,

181
00:09:25.785 --> 00:09:29.675
<00:09:25.785>then <00:09:25.959>it's <00:09:26.135>also <00:09:26.310>very <00:09:26.485>easy <00:09:26.660>for <00:09:26.834>other, <00:09:27.010>um, <00:09:27.185>applications

182
00:09:30.495 --> 00:09:31.675
<00:09:30.495>to <00:09:30.760>also <00:09:31.026>use <00:09:31.291>the <00:09:31.557>data.

183
00:09:36.885 --> 00:09:39.705
<00:09:36.885>So, <00:09:37.118>um, <00:09:37.351>yeah, <00:09:37.585>the <00:09:37.818>most, <00:09:38.051>uh, <00:09:38.285>pros

184
00:09:39.705 --> 00:09:41.105
<00:09:39.705>that <00:09:40.020>it's, <00:09:40.335>it's <00:09:40.650>relatively <00:09:40.965>simple.

185
00:09:41.195 --> 00:09:45.145
<00:09:41.195>There <00:09:41.335>are <00:09:41.475>different <00:09:41.615>kind <00:09:41.755>of <00:09:41.895>ways <00:09:42.035>to <00:09:42.175>help <00:09:42.315>you <00:09:42.455>with, <00:09:42.595>uh,

186
00:09:45.145 --> 00:09:46.145
<00:09:45.145>change <00:09:45.595>data <00:09:46.045>capture.

187
00:09:46.325 --> 00:09:47.985
<00:09:46.325>And <00:09:46.605>there's <00:09:46.885>also <00:09:47.165>like <00:09:47.445>Kafka <00:09:47.725>Connect

188
00:09:47.985 --> 00:09:51.665
<00:09:47.985>and <00:09:48.140>stuff <00:09:48.296>to, <00:09:48.451>to <00:09:48.607>set <00:09:48.762>something <00:09:48.918>up <00:09:49.073>with <00:09:49.229>most <00:09:49.385>databases

189
00:09:51.665 --> 00:09:53.705
<00:09:51.665>that <00:09:51.898>you <00:09:52.131>can <00:09:52.365>easily <00:09:52.598>stream <00:09:52.831>into <00:09:53.064>Kafka.

190
00:09:55.095 --> 00:09:57.235
<00:09:55.095>And, <00:09:55.270>and <00:09:55.445>so <00:09:55.620>it's <00:09:55.795>also <00:09:55.970>nice <00:09:56.145>that <00:09:56.320>the <00:09:56.495>produce

191
00:09:57.255 --> 00:09:58.595
<00:09:57.255>and <00:09:57.657>consumer <00:09:58.059>are <00:09:58.461>couples.

192
00:09:58.615 --> 00:10:01.755
<00:09:58.615>And <00:09:58.742>in <00:09:58.869>this <00:09:58.996>way <00:09:59.124>you <00:09:59.251>also <00:09:59.378>don't <00:09:59.505>have <00:09:59.633>to <00:09:59.760>care <00:09:59.887>about <00:10:00.015>source

193
00:10:01.755 --> 00:10:05.395
<00:10:01.755>of <00:10:01.882>truth <00:10:02.009>or <00:10:02.136>something <00:10:02.264>and <00:10:02.391>you <00:10:02.518>just <00:10:02.645>get, <00:10:02.773>uh, <00:10:02.900>real <00:10:03.027>time <00:10:03.155>data.

194
00:10:06.215 --> 00:10:09.835
<00:10:06.215>Uh, <00:10:06.415>but, <00:10:06.615>uh, <00:10:06.815>the, <00:10:07.015>the, <00:10:07.215>the <00:10:07.415>biggest <00:10:07.615>downside

195
00:10:09.835 --> 00:10:13.555
<00:10:09.835>of <00:10:09.990>this <00:10:10.146>is <00:10:10.301>you <00:10:10.457>don't <00:10:10.612>have <00:10:10.768>any, <00:10:10.923>uh, <00:10:11.079>complete <00:10:11.235>history.

196
00:10:13.855 --> 00:10:15.555
<00:10:13.855>So <00:10:14.135>you <00:10:14.415>only <00:10:14.695>get <00:10:14.975>the <00:10:15.255>changes,

197
00:10:15.565 --> 00:10:17.075
<00:10:15.565>which <00:10:15.791>is <00:10:16.018>for <00:10:16.244>the <00:10:16.471>alerts, <00:10:16.697>it's <00:10:16.924>fine.

198
00:10:17.535 --> 00:10:21.075
<00:10:17.535>But <00:10:17.662>of <00:10:17.789>course, <00:10:17.916>if <00:10:18.044>you <00:10:18.171>want <00:10:18.298>from <00:10:18.425>from <00:10:18.553>that <00:10:18.680>stream <00:10:18.807>you <00:10:18.935>want

199
00:10:21.075 --> 00:10:22.275
<00:10:21.075>to <00:10:21.345>build <00:10:21.615>up <00:10:21.885>the <00:10:22.155>database,

200
00:10:22.865 --> 00:10:26.955
<00:10:22.865>then <00:10:23.020>you <00:10:23.176>would <00:10:23.331>need <00:10:23.487>every <00:10:23.642>transaction <00:10:23.798>that <00:10:23.953>was <00:10:24.109>ever <00:10:24.265>made.

201
00:10:27.415 --> 00:10:29.475
<00:10:27.415>And <00:10:27.615>maybe <00:10:27.814>you <00:10:28.015>don't <00:10:28.214>even <00:10:28.415>have <00:10:28.615>those <00:10:28.814>anymore.

202
00:10:30.545 --> 00:10:32.685
<00:10:30.545>So <00:10:30.895>that's <00:10:31.245>something <00:10:31.594>to <00:10:31.944>consider.

203
00:10:34.305 --> 00:10:37.885
<00:10:34.305>So <00:10:34.444>the <00:10:34.584>next <00:10:34.724>one <00:10:34.864>is <00:10:35.005>the <00:10:35.145>baby <00:10:35.285>steps <00:10:35.425>that <00:10:35.564>was <00:10:35.704>done

204
00:10:37.945 --> 00:10:39.165
<00:10:37.945>for <00:10:38.311>our <00:10:38.677>payment <00:10:39.043>provider.

205
00:10:39.825 --> 00:10:44.375
<00:10:39.825>Uh, <00:10:39.965>and <00:10:40.105>then <00:10:40.245>we <00:10:40.385>had, <00:10:40.525>um, <00:10:40.665>started <00:10:40.805>to <00:10:40.945>using <00:10:41.085>Kafka <00:10:41.225>more

206
00:10:44.375 --> 00:10:47.015
<00:10:44.375>and <00:10:44.655>more <00:10:44.935>and <00:10:45.215>breaking <00:10:45.495>up <00:10:45.775>applications

207
00:10:47.205 --> 00:10:48.655
<00:10:47.205>into <00:10:47.857>multiple <00:10:48.510>microservices.

208
00:10:49.555 --> 00:10:53.655
<00:10:49.555>And <00:10:49.694>one <00:10:49.834>of <00:10:49.974>those <00:10:50.114>services <00:10:50.255>was <00:10:50.395>the, <00:10:50.535>uh, <00:10:50.675>a <00:10:50.814>consumer <00:10:50.954>service

209
00:10:54.165 --> 00:10:56.575
<00:10:54.165>that <00:10:54.339>had <00:10:54.515>to <00:10:54.689>do <00:10:54.865>anything <00:10:55.040>with <00:10:55.214>what <00:10:55.390>consumers <00:10:55.564>did.

210
00:10:57.395 --> 00:11:01.855
<00:10:57.395>And <00:10:57.535>what <00:10:57.675>we <00:10:57.814>needed <00:10:57.954>to <00:10:58.095>start <00:10:58.235>doing <00:10:58.375>was, <00:10:58.515>um, <00:10:58.655>when, <00:10:58.795>uh,

211
00:11:02.175 --> 00:11:05.935
<00:11:02.175>a <00:11:02.314>it <00:11:02.454>could <00:11:02.594>be <00:11:02.734>that <00:11:02.875>the, <00:11:03.015>uh, <00:11:03.155>consum <00:11:03.295>consumer <00:11:03.435>changed, <00:11:03.574>uh,

212
00:11:05.955 --> 00:11:07.975
<00:11:05.955>the <00:11:06.188>place <00:11:06.421>he <00:11:06.655>lives <00:11:06.888>or <00:11:07.121>something <00:11:07.355>else

213
00:11:08.115 --> 00:11:10.055
<00:11:08.115>or <00:11:08.465>some <00:11:08.815>other <00:11:09.165>personal <00:11:09.515>things.

214
00:11:10.635 --> 00:11:13.375
<00:11:10.635>Uh, <00:11:10.775>and <00:11:10.915>then <00:11:11.055>we <00:11:11.194>had <00:11:11.335>to <00:11:11.475>check <00:11:11.615>if <00:11:11.755>it <00:11:11.895>was, <00:11:12.035>uh,

215
00:11:13.485 --> 00:11:16.575
<00:11:13.485>that <00:11:13.625>user <00:11:13.765>was <00:11:13.905>on <00:11:14.045>some <00:11:14.185>kind <00:11:14.325>of <00:11:14.465>band <00:11:14.605>list <00:11:14.745>or <00:11:14.885>something.

216
00:11:17.315 --> 00:11:19.815
<00:11:17.315>So <00:11:17.515>we <00:11:17.715>needed <00:11:17.915>a <00:11:18.115>profiling <00:11:18.315>service <00:11:18.515>for <00:11:18.715>that.

217
00:11:20.395 --> 00:11:23.695
<00:11:20.395>Uh, <00:11:20.550>and <00:11:20.706>also <00:11:20.861>once <00:11:21.017>people <00:11:21.172>got <00:11:21.328>banned, <00:11:21.483>we <00:11:21.639>wanted <00:11:21.795>them

218
00:11:23.915 --> 00:11:28.055
<00:11:23.915>to <00:11:24.055>be <00:11:24.194>able <00:11:24.334>to <00:11:24.474>know <00:11:24.615>that <00:11:24.755>so <00:11:24.895>that <00:11:25.035>it <00:11:25.175>could <00:11:25.314>rejoin,

219
00:11:28.315 --> 00:11:29.415
<00:11:28.315>um, <00:11:28.810>the <00:11:29.305>platform.

220
00:11:29.835 --> 00:11:31.655
<00:11:29.835>So <00:11:30.035>we <00:11:30.235>also <00:11:30.435>needed <00:11:30.635>some <00:11:30.835>kind <00:11:31.035>of <00:11:31.235>way

221
00:11:31.655 --> 00:11:33.015
<00:11:31.655>to <00:11:31.961>send <00:11:32.266>the <00:11:32.573>notifications <00:11:32.879>there.

222
00:11:33.195 --> 00:11:35.855
<00:11:33.195>Of <00:11:33.335>course, <00:11:33.475>it's <00:11:33.615>kind <00:11:33.755>of <00:11:33.895>easy <00:11:34.035>if <00:11:34.175>you <00:11:34.315>have <00:11:34.455>all <00:11:34.595>those

223
00:11:35.855 --> 00:11:38.495
<00:11:35.855>information <00:11:36.205>already <00:11:36.555>inside <00:11:36.905>the <00:11:37.255>monolith

224
00:11:38.495 --> 00:11:39.815
<00:11:38.495>to <00:11:38.732>just <00:11:38.970>hack <00:11:39.207>it <00:11:39.445>on <00:11:39.683>there,

225
00:11:39.835 --> 00:11:43.665
<00:11:39.835>but <00:11:39.975>then <00:11:40.115>you <00:11:40.255>get <00:11:40.395>this <00:11:40.535>kind <00:11:40.675>of <00:11:40.815>gigantic <00:11:40.955>mess <00:11:41.095>of <00:11:41.235>things.

226
00:11:45.135 --> 00:11:48.515
<00:11:45.135>So <00:11:45.290>then <00:11:45.446>it's, <00:11:45.601>uh, <00:11:45.757>we <00:11:45.912>kind <00:11:46.068>of <00:11:46.223>put <00:11:46.379>it <00:11:46.535>apart.

227
00:11:49.215 --> 00:11:51.715
<00:11:49.215>And <00:11:49.370>most <00:11:49.526>of <00:11:49.681>those <00:11:49.837>things <00:11:49.992>was <00:11:50.148>based <00:11:50.303>on <00:11:50.459>the <00:11:50.615>database,

228
00:11:51.855 --> 00:11:56.085
<00:11:51.855>but <00:11:52.010>also <00:11:52.166>we <00:11:52.321>created <00:11:52.477>some <00:11:52.632>specific <00:11:52.788>events <00:11:52.943>for, <00:11:53.099>for <00:11:53.255>example,

229
00:11:56.185 --> 00:11:57.965
<00:11:56.185>for <00:11:56.464>when <00:11:56.744>a <00:11:57.025>consumer <00:11:57.305>was <00:11:57.584>blocked

230
00:11:58.725 --> 00:12:01.265
<00:11:58.725>so <00:11:58.958>we <00:11:59.191>could <00:11:59.425>specifically <00:11:59.658>listen <00:11:59.891>into <00:12:00.125>that.

231
00:12:01.625 --> 00:12:03.545
<00:12:01.625>'cause <00:12:01.825>that <00:12:02.025>was <00:12:02.225>a <00:12:02.425>specific <00:12:02.625>kind <00:12:02.825>of <00:12:03.025>intent.

232
00:12:05.455 --> 00:12:08.995
<00:12:05.455>Um, <00:12:05.595>and <00:12:05.735>some <00:12:05.875>of <00:12:06.015>the <00:12:06.155>advantage <00:12:06.295>of <00:12:06.435>this <00:12:06.575>was <00:12:06.715>also <00:12:06.855>that

233
00:12:09.375 --> 00:12:12.595
<00:12:09.375>for <00:12:09.530>the <00:12:09.686>profiling <00:12:09.841>servers, <00:12:09.997>we <00:12:10.152>were <00:12:10.308>using <00:12:10.463>an <00:12:10.619>external <00:12:10.775>server

234
00:12:13.105 --> 00:12:16.555
<00:12:13.105>that <00:12:13.260>we <00:12:13.416>could <00:12:13.571>just, <00:12:13.727>uh, <00:12:13.882>if <00:12:14.038>it <00:12:14.193>would <00:12:14.349>go <00:12:14.505>down,

235
00:12:16.815 --> 00:12:19.555
<00:12:16.815>we <00:12:17.015>could <00:12:17.215>just <00:12:17.415>make <00:12:17.615>sure <00:12:17.815>that <00:12:18.015>we, <00:12:18.215>uh,

236
00:12:19.555 --> 00:12:21.555
<00:12:19.555>handled <00:12:20.021>every <00:12:20.488>consumer <00:12:20.954>update

237
00:12:21.945 --> 00:12:24.675
<00:12:21.945>because <00:12:22.145>every <00:12:22.345>consumer <00:12:22.545>update <00:12:22.745>was <00:12:22.945>still <00:12:23.145>on <00:12:23.345>Kafka

238
00:12:24.975 --> 00:12:26.995
<00:12:24.975>and <00:12:25.208>we <00:12:25.441>could <00:12:25.675>just <00:12:25.908>keep <00:12:26.141>on <00:12:26.375>retrying

239
00:12:27.015 --> 00:12:28.675
<00:12:27.015>to <00:12:27.295>the <00:12:27.574>external <00:12:27.855>servers <00:12:28.135>worked <00:12:28.415>again.

240
00:12:29.875 --> 00:12:33.095
<00:12:29.875>So <00:12:30.050>it <00:12:30.225>makes, <00:12:30.400>uh, <00:12:30.575>some <00:12:30.750>of <00:12:30.925>those <00:12:31.100>things <00:12:31.275>easier.

241
00:12:34.885 --> 00:12:37.305
<00:12:34.885>So <00:12:35.085>the <00:12:35.285>big, <00:12:35.485>uh, <00:12:35.685>pro <00:12:35.885>of <00:12:36.085>that <00:12:36.285>is

242
00:12:37.305 --> 00:12:38.745
<00:12:37.305>that <00:12:37.628>you <00:12:37.953>get <00:12:38.277>decoupled <00:12:38.601>servers.

243
00:12:39.455 --> 00:12:41.665
<00:12:39.455>Also <00:12:39.630>something <00:12:39.805>you <00:12:39.980>see <00:12:40.155>of <00:12:40.330>often <00:12:40.505>with <00:12:40.680>these <00:12:40.855>kind

244
00:12:41.665 --> 00:12:44.305
<00:12:41.665>of <00:12:41.839>microservices <00:12:42.015>that <00:12:42.189>it's <00:12:42.365>easy <00:12:42.540>when <00:12:42.714>something <00:12:42.890>goes <00:12:43.064>wrong

245
00:12:44.845 --> 00:12:47.225
<00:12:44.845>to <00:12:45.020>just <00:12:45.195>throw <00:12:45.370>an <00:12:45.545>exception <00:12:45.720>and <00:12:45.895>go <00:12:46.070>out <00:12:46.245>and,

246
00:12:47.285 --> 00:12:49.025
<00:12:47.285>and <00:12:47.564>just <00:12:47.844>wait <00:12:48.125>till <00:12:48.405>it's <00:12:48.685>restarted.

247
00:12:49.165 --> 00:12:52.185
<00:12:49.165>It, <00:12:49.281>of <00:12:49.398>course, <00:12:49.515>if <00:12:49.631>you <00:12:49.748>have <00:12:49.865>like <00:12:49.981>a <00:12:50.098>bit <00:12:50.214>monolith <00:12:50.331>with <00:12:50.448>a <00:12:50.564>lot

248
00:12:52.185 --> 00:12:54.785
<00:12:52.185>of <00:12:52.312>things <00:12:52.439>going <00:12:52.566>on <00:12:52.694>at <00:12:52.821>the <00:12:52.948>same <00:12:53.075>time, <00:12:53.203>you <00:12:53.330>can't <00:12:53.457>really <00:12:53.584>do.

249
00:12:55.845 --> 00:12:57.425
<00:12:55.845>Uh, <00:12:56.545>and <00:12:57.245>uh,

250
00:12:59.865 --> 00:13:03.435
<00:12:59.865>another <00:13:00.040>advantage, <00:13:00.215>uh, <00:13:00.390>of <00:13:00.565>this <00:13:00.740>way <00:13:00.915>is <00:13:01.090>that, <00:13:01.265>um,

251
00:13:03.565 --> 00:13:06.155
<00:13:03.565>there <00:13:03.740>were <00:13:03.915>also <00:13:04.090>some <00:13:04.265>things <00:13:04.440>in <00:13:04.615>place <00:13:04.790>to, <00:13:04.965>uh,

252
00:13:06.155 --> 00:13:10.115
<00:13:06.155>create <00:13:06.310>from <00:13:06.466>the <00:13:06.621>whole <00:13:06.777>database <00:13:06.932>and <00:13:07.088>make <00:13:07.243>it <00:13:07.399>all <00:13:07.555>events.

253
00:13:12.185 --> 00:13:14.205
<00:13:12.185>Um, <00:13:12.418>'cause <00:13:12.651>we <00:13:12.885>were <00:13:13.118>using <00:13:13.351>proto <00:13:13.584>above.

254
00:13:14.205 --> 00:13:16.285
<00:13:14.205>And <00:13:14.438>then <00:13:14.671>sometimes <00:13:14.905>the <00:13:15.138>schema <00:13:15.371>would <00:13:15.605>change

255
00:13:16.465 --> 00:13:18.685
<00:13:16.465>and <00:13:16.640>then <00:13:16.815>we <00:13:16.990>would <00:13:17.165>need <00:13:17.340>all <00:13:17.515>those <00:13:17.690>events <00:13:17.865>again.

256
00:13:19.345 --> 00:13:21.245
<00:13:19.345>But <00:13:19.625>that <00:13:19.905>also <00:13:20.185>has <00:13:20.465>a <00:13:20.745>downside.

257
00:13:21.525 --> 00:13:24.045
<00:13:21.525>'cause <00:13:21.725>then <00:13:21.925>when <00:13:22.125>you <00:13:22.324>are <00:13:22.525>consuming <00:13:22.725>those <00:13:22.925>events,

258
00:13:24.705 --> 00:13:26.605
<00:13:24.705>you <00:13:24.985>don't <00:13:25.265>really <00:13:25.545>know <00:13:25.825>what <00:13:26.105>happens,

259
00:13:26.775 --> 00:13:29.285
<00:13:26.775>especially <00:13:27.008>since <00:13:27.241>you <00:13:27.475>just <00:13:27.708>sending <00:13:27.941>the <00:13:28.175>whole,

260
00:13:29.945 --> 00:13:31.845
<00:13:29.945>uh, <00:13:30.645>Mongo <00:13:31.345>documents.

261
00:13:32.535 --> 00:13:37.235
<00:13:32.535>So <00:13:32.651>if <00:13:32.768>you <00:13:32.885>want <00:13:33.001>to <00:13:33.118>know <00:13:33.235>what <00:13:33.351>has <00:13:33.468>changed, <00:13:33.584>you <00:13:33.701>either <00:13:33.818>need <00:13:33.935>to,

262
00:13:37.815 --> 00:13:40.635
<00:13:37.815>uh, <00:13:38.048>keep <00:13:38.281>the <00:13:38.515>last <00:13:38.748>stage <00:13:38.981>for <00:13:39.215>yourself

263
00:13:41.575 --> 00:13:43.235
<00:13:41.575>or <00:13:41.775>you <00:13:41.975>need <00:13:42.175>some <00:13:42.375>other <00:13:42.575>kind <00:13:42.775>of <00:13:42.975>trick.

264
00:13:43.375 --> 00:13:45.875
<00:13:43.375>So <00:13:43.725>that's <00:13:44.075>can <00:13:44.425>be, <00:13:44.775>uh,

265
00:13:47.375 --> 00:13:48.505
<00:13:47.375>make <00:13:47.883>things <00:13:48.392>difficult.

266
00:13:49.045 --> 00:13:50.985
<00:13:49.045>And <00:13:49.245>of <00:13:49.444>course <00:13:49.645>if <00:13:49.844>you <00:13:50.045>use <00:13:50.245>like, <00:13:50.444>uh,

267
00:13:51.365 --> 00:13:55.865
<00:13:51.365>if <00:13:51.520>more <00:13:51.676>like <00:13:51.831>event <00:13:51.987>sourcing, <00:13:52.142>then <00:13:52.298>you <00:13:52.453>have <00:13:52.609>more, <00:13:52.765>uh,

268
00:13:55.865 --> 00:13:59.345
<00:13:55.865>intentional <00:13:56.040>events <00:13:56.215>and <00:13:56.390>not <00:13:56.565>just <00:13:56.740>this <00:13:56.915>document <00:13:57.090>was <00:13:57.265>changed

269
00:13:59.405 --> 00:14:01.905
<00:13:59.405>and <00:13:59.545>this <00:13:59.685>is <00:13:59.824>the <00:13:59.964>latest <00:14:00.105>version <00:14:00.245>or <00:14:00.385>this <00:14:00.525>row <00:14:00.665>has <00:14:00.805>changed

270
00:14:01.925 --> 00:14:03.865
<00:14:01.925>and <00:14:02.099>this <00:14:02.275>is <00:14:02.449>the <00:14:02.625>latest <00:14:02.800>state <00:14:02.974>of <00:14:03.150>the <00:14:03.324>row.

271
00:14:04.445 --> 00:14:07.305
<00:14:04.445>And <00:14:04.620>then <00:14:04.795>it's <00:14:04.970>easier <00:14:05.145>to <00:14:05.320>really <00:14:05.495>handle <00:14:05.670>them <00:14:05.845>properly.

272
00:14:09.125 --> 00:14:12.185
<00:14:09.125>So, <00:14:09.265>uh, <00:14:09.405>that's <00:14:09.545>something <00:14:09.685>to <00:14:09.825>watch <00:14:09.965>out <00:14:10.105>for <00:14:10.245>that <00:14:10.385>the <00:14:10.525>data,

273
00:14:13.085 --> 00:14:14.385
<00:14:13.085>uh, <00:14:13.670>might <00:14:14.255>change.

274
00:14:15.685 --> 00:14:18.425
<00:14:15.685>Uh, <00:14:15.859>then <00:14:16.035>the <00:14:16.209>current <00:14:16.385>steps, <00:14:16.560>that's <00:14:16.734>actually <00:14:16.910>a <00:14:17.084>picture

275
00:14:18.485 --> 00:14:20.785
<00:14:18.485>of <00:14:18.685>me <00:14:18.885>running <00:14:19.085>then <00:14:19.285>it <00:14:19.485>was, <00:14:19.685>uh, <00:14:19.885>sunny,

276
00:14:20.885 --> 00:14:23.025
<00:14:20.885>so <00:14:21.118>it's <00:14:21.351>from <00:14:21.585>some <00:14:21.818>months <00:14:22.051>ago <00:14:22.285>now.

277
00:14:23.025 --> 00:14:24.745
<00:14:23.025>It's <00:14:23.305>not <00:14:23.584>so <00:14:23.865>sunny <00:14:24.145>anymore <00:14:24.425>more.

278
00:14:26.245 --> 00:14:30.905
<00:14:26.245>And <00:14:26.385>I'm, <00:14:26.525>I'm <00:14:26.665>lucky <00:14:26.805>to <00:14:26.945>have, <00:14:27.085>uh, <00:14:27.225>an <00:14:27.365>indoor <00:14:27.505>rowing <00:14:27.645>machine.

279
00:14:31.245 --> 00:14:32.865
<00:14:31.245>So <00:14:31.525>I'm <00:14:31.805>using <00:14:32.085>that <00:14:32.365>some <00:14:32.645>mornings

280
00:14:33.045 --> 00:14:34.585
<00:14:33.045>to <00:14:33.322>get <00:14:33.599>some <00:14:33.876>kind <00:14:34.153>of <00:14:34.431>exercise.

281
00:14:35.395 --> 00:14:37.375
<00:14:35.395>Uh, <00:14:35.628>and <00:14:35.861>this <00:14:36.095>is <00:14:36.328>about <00:14:36.561>my, <00:14:36.795>uh,

282
00:14:37.395 --> 00:14:39.775
<00:14:37.395>the <00:14:37.628>projects <00:14:37.861>I'm <00:14:38.095>current <00:14:38.328>currently <00:14:38.561>working <00:14:38.795>with,

283
00:14:40.145 --> 00:14:44.735
<00:14:40.145>which <00:14:40.319>is <00:14:40.495>basically <00:14:40.670>a <00:14:40.845>platform <00:14:41.020>to <00:14:41.194>share <00:14:41.370>data, <00:14:41.545>uh,

284
00:14:44.835 --> 00:14:49.335
<00:14:44.835>in <00:14:44.942>a <00:14:45.050>way <00:14:45.158>that's <00:14:45.265>easy <00:14:45.373>to <00:14:45.481>use <00:14:45.588>and <00:14:45.696>also, <00:14:45.804>uh, <00:14:45.911>to <00:14:46.019>make <00:14:46.127>it <00:14:46.235>secure.

285
00:14:51.425 --> 00:14:54.005
<00:14:51.425>Uh, <00:14:51.599>and <00:14:51.775>how <00:14:51.949>we <00:14:52.125>did <00:14:52.300>that <00:14:52.474>is <00:14:52.650>we <00:14:52.824>kind

286
00:14:54.005 --> 00:14:57.365
<00:14:54.005>of <00:14:54.205>broke <00:14:54.405>the <00:14:54.605>whole <00:14:54.805>stream <00:14:55.005>into <00:14:55.205>small <00:14:55.405>parts.

287
00:14:58.025 --> 00:15:00.725
<00:14:58.025>So <00:14:58.165>we <00:14:58.305>have <00:14:58.444>a, <00:14:58.584>a <00:14:58.725>separate <00:14:58.865>part <00:14:59.005>for <00:14:59.145>getting <00:14:59.285>the <00:14:59.425>data,

288
00:15:01.475 --> 00:15:06.165
<00:15:01.475>then <00:15:01.650>something <00:15:01.825>to <00:15:02.000>put <00:15:02.175>it <00:15:02.350>into, <00:15:02.525>uh, <00:15:02.700>Mongo, <00:15:02.875>something

289
00:15:06.165 --> 00:15:07.645
<00:15:06.165>to <00:15:06.431>put <00:15:06.697>it <00:15:06.964>into <00:15:07.230>elastic <00:15:07.497>search.

290
00:15:08.345 --> 00:15:10.765
<00:15:08.345>And <00:15:08.500>then <00:15:08.656>also <00:15:08.811>along <00:15:08.967>the <00:15:09.122>way <00:15:09.278>we'll <00:15:09.433>make <00:15:09.589>a <00:15:09.745>backup.

291
00:15:11.545 --> 00:15:13.725
<00:15:11.545>And <00:15:11.778>so <00:15:12.011>because <00:15:12.245>we <00:15:12.478>have <00:15:12.711>that <00:15:12.944>backup,

292
00:15:13.755 --> 00:15:17.085
<00:15:13.755>theoretically <00:15:13.930>we <00:15:14.105>could <00:15:14.280>just <00:15:14.455>read <00:15:14.630>back <00:15:14.805>from <00:15:14.980>the <00:15:15.155>backup

293
00:15:17.585 --> 00:15:19.805
<00:15:17.585>and <00:15:17.935>restore <00:15:18.285>the <00:15:18.635>whole <00:15:18.985>Mongo

294
00:15:19.865 --> 00:15:21.485
<00:15:19.865>and <00:15:20.145>restore <00:15:20.425>the <00:15:20.705>whole <00:15:20.985>elastic <00:15:21.265>search.

295
00:15:22.275 --> 00:15:23.895
<00:15:22.275>We <00:15:22.555>don't <00:15:22.834>do <00:15:23.115>that <00:15:23.395>very <00:15:23.675>often,

296
00:15:23.955 --> 00:15:27.495
<00:15:23.955>but <00:15:24.095>what <00:15:24.235>we <00:15:24.375>do <00:15:24.515>do <00:15:24.655>this, <00:15:24.795>uh, <00:15:24.935>that <00:15:25.075>based <00:15:25.215>on <00:15:25.355>Mongo,

297
00:15:27.495 --> 00:15:29.415
<00:15:27.495>we <00:15:27.845>can <00:15:28.195>rebuild <00:15:28.545>the <00:15:28.895>index

298
00:15:30.115 --> 00:15:32.615
<00:15:30.115>and <00:15:30.395>that's, <00:15:30.675>that's, <00:15:30.955>uh, <00:15:31.235>rather <00:15:31.515>helpful

299
00:15:33.055 --> 00:15:35.775
<00:15:33.055>'cause <00:15:33.194>then <00:15:33.334>we <00:15:33.474>don't <00:15:33.614>need <00:15:33.755>a <00:15:33.895>backup <00:15:34.035>of <00:15:34.175>the <00:15:34.314>elastic <00:15:34.454>search.

300
00:15:36.195 --> 00:15:38.135
<00:15:36.195>We <00:15:36.428>can <00:15:36.661>just <00:15:36.895>only <00:15:37.128>backup <00:15:37.361>up <00:15:37.595>Mongo

301
00:15:38.555 --> 00:15:41.735
<00:15:38.555>and <00:15:38.710>we <00:15:38.866>can <00:15:39.021>just, <00:15:39.177>uh, <00:15:39.332>run <00:15:39.488>a <00:15:39.643>job <00:15:39.799>to <00:15:39.954>uh,

302
00:15:42.405 --> 00:15:44.575
<00:15:42.405>make <00:15:42.579>sure <00:15:42.755>the <00:15:42.930>index <00:15:43.105>is <00:15:43.280>correct <00:15:43.454>again <00:15:43.630>when <00:15:43.805>needed.

303
00:15:45.845 --> 00:15:48.625
<00:15:45.845>And <00:15:45.985>then <00:15:46.125>we <00:15:46.265>also <00:15:46.405>know <00:15:46.545>that <00:15:46.685>it's <00:15:46.825>consistent <00:15:46.965>in <00:15:47.105>that <00:15:47.245>way.

304
00:15:50.345 --> 00:15:52.765
<00:15:50.345>So <00:15:50.545>that's <00:15:50.745>kind <00:15:50.945>of <00:15:51.145>some <00:15:51.345>kind <00:15:51.545>of <00:15:51.745>advantages.

305
00:15:53.025 --> 00:15:55.925
<00:15:53.025>So <00:15:53.165>the, <00:15:53.305>like <00:15:53.444>I <00:15:53.584>said, <00:15:53.725>the <00:15:53.865>databases <00:15:54.005>can <00:15:54.145>be <00:15:54.285>built <00:15:54.425>up

306
00:15:56.165 --> 00:15:57.165
<00:15:56.165>'cause <00:15:56.344>we <00:15:56.525>have <00:15:56.704>all <00:15:56.885>the <00:15:57.064>events.

307
00:15:57.825 --> 00:15:58.925
<00:15:57.825>Uh, <00:15:58.155>and <00:15:58.485>also <00:15:58.814>some

308
00:15:58.925 --> 00:16:01.445
<00:15:58.925>of <00:15:59.052>those <00:15:59.179>parts <00:15:59.306>can <00:15:59.434>be <00:15:59.561>done <00:15:59.688>in <00:15:59.815>parallel <00:15:59.943>if <00:16:00.070>we <00:16:00.197>need <00:16:00.324>them.

309
00:16:02.125 --> 00:16:05.965
<00:16:02.125>'cause <00:16:02.265>also <00:16:02.405>in <00:16:02.545>between <00:16:02.685>those <00:16:02.825>steps <00:16:02.965>there's <00:16:03.105>always <00:16:03.245>ka <00:16:03.385>In <00:16:03.525>this

310
00:16:06.085 --> 00:16:10.195
<00:16:06.085>case, <00:16:06.435>uh, <00:16:06.785>the <00:16:07.135>big <00:16:07.485>downside

311
00:16:10.215 --> 00:16:12.955
<00:16:10.215>of <00:16:10.370>this <00:16:10.526>way <00:16:10.681>is <00:16:10.837>that <00:16:10.992>it's, <00:16:11.148>uh, <00:16:11.303>one <00:16:11.459>way <00:16:11.615>traffic.

312
00:16:13.695 --> 00:16:15.875
<00:16:13.695>So <00:16:13.895>there's <00:16:14.095>no <00:16:14.295>way <00:16:14.495>to <00:16:14.695>change <00:16:14.895>the <00:16:15.095>data.

313
00:16:16.375 --> 00:16:18.635
<00:16:16.375>And <00:16:16.655>for <00:16:16.935>this <00:16:17.215>application <00:16:17.495>that's <00:16:17.775>fine

314
00:16:18.915 --> 00:16:20.995
<00:16:18.915>'cause <00:16:19.115>it's <00:16:19.314>not <00:16:19.515>intended <00:16:19.714>to <00:16:19.915>change <00:16:20.115>the <00:16:20.314>data.

315
00:16:21.175 --> 00:16:23.675
<00:16:21.175>You <00:16:21.408>can <00:16:21.641>just <00:16:21.875>consume <00:16:22.108>the <00:16:22.341>data <00:16:22.574>and,

316
00:16:23.735 --> 00:16:27.315
<00:16:23.735>and <00:16:23.910>ask <00:16:24.085>specific <00:16:24.260>questions <00:16:24.435>depending <00:16:24.610>on <00:16:24.785>what's <00:16:24.960>indexed <00:16:25.135>into

317
00:16:27.315 --> 00:16:30.835
<00:16:27.315>elastic <00:16:27.490>search <00:16:27.665>and <00:16:27.840>then <00:16:28.015>get <00:16:28.190>all <00:16:28.365>the <00:16:28.540>detail <00:16:28.715>information.

318
00:16:31.735 --> 00:16:32.835
<00:16:31.735>But <00:16:31.982>you <00:16:32.230>can <00:16:32.477>change <00:16:32.725>it

319
00:16:32.895 --> 00:16:35.035
<00:16:32.895>and <00:16:33.095>it's, <00:16:33.295>that's <00:16:33.495>for <00:16:33.694>this <00:16:33.895>case <00:16:34.095>it's <00:16:34.295>fine.

320
00:16:35.055 --> 00:16:37.755
<00:16:35.055>But <00:16:35.182>of <00:16:35.309>course <00:16:35.436>for <00:16:35.564>a <00:16:35.691>lot <00:16:35.818>of <00:16:35.945>other <00:16:36.073>applications <00:16:36.200>it <00:16:36.327>won't <00:16:36.454>be

321
00:16:38.955 --> 00:16:43.005
<00:16:38.955>then <00:16:39.095>off <00:16:39.235>to <00:16:39.375>the, <00:16:39.515>uh, <00:16:39.655>the, <00:16:39.795>the <00:16:39.935>demo <00:16:40.075>project <00:16:40.215>I <00:16:40.355>built.

322
00:16:43.825 --> 00:16:46.685
<00:16:43.825>So <00:16:44.058>it's <00:16:44.291>kind <00:16:44.525>of <00:16:44.758>A-C-Q-R-S <00:16:44.991>banking <00:16:45.225>demo.

323
00:16:47.385 --> 00:16:51.365
<00:16:47.385>And <00:16:47.560>I <00:16:47.735>thought <00:16:47.910>it <00:16:48.085>was <00:16:48.260>pretty <00:16:48.435>much <00:16:48.610>events <00:16:48.785>sourcing

324
00:16:52.115 --> 00:16:54.585
<00:16:52.115>till <00:16:52.581>I, <00:16:53.048>um, <00:16:53.515>um,

325
00:16:55.805 --> 00:16:59.305
<00:16:55.805>looked <00:16:55.960>up <00:16:56.116>some <00:16:56.271>bit <00:16:56.427>more <00:16:56.582>about <00:16:56.738>event <00:16:56.893>sourcing <00:16:57.049>also, <00:16:57.204>uh,

326
00:16:59.305 --> 00:17:01.545
<00:16:59.305>especially <00:16:59.584>like <00:16:59.864>replaying <00:17:00.145>the <00:17:00.425>events, <00:17:00.704>it's,

327
00:17:01.545 --> 00:17:02.625
<00:17:01.545>it's <00:17:01.788>also <00:17:02.031>kind <00:17:02.274>of <00:17:02.517>hard.

328
00:17:03.715 --> 00:17:08.095
<00:17:03.715>And <00:17:03.842>how <00:17:03.969>does <00:17:04.096>it <00:17:04.224>look <00:17:04.351>like, <00:17:04.478>um, <00:17:04.605>is <00:17:04.733>there <00:17:04.860>a <00:17:04.987>front <00:17:05.115>end

329
00:17:08.195 --> 00:17:09.535
<00:17:08.194>that's <00:17:08.597>just <00:17:08.999>getting <00:17:09.401>up?

330
00:17:09.755 --> 00:17:12.735
<00:17:09.755>Uh, <00:17:09.988>there's, <00:17:10.221>that's <00:17:10.455>actually <00:17:10.688>built <00:17:10.921>with <00:17:11.155>Cript

331
00:17:12.735 --> 00:17:13.775
<00:17:12.734>that's <00:17:13.047>not <00:17:13.358>really <00:17:13.671>important.

332
00:17:14.315 --> 00:17:16.615
<00:17:14.315>Uh, <00:17:14.548>then <00:17:14.781>there's <00:17:15.015>a <00:17:15.248>graphic <00:17:15.481>QL <00:17:15.715>endpoint

333
00:17:16.625 --> 00:17:18.615
<00:17:16.625>where <00:17:16.858>the <00:17:17.091>client <00:17:17.325>can <00:17:17.558>get <00:17:17.791>information <00:17:18.025>from.

334
00:17:19.195 --> 00:17:22.095
<00:17:19.194>Uh, <00:17:19.369>that <00:17:19.544>has, <00:17:19.720>its, <00:17:19.895>that <00:17:20.069>is <00:17:20.244>also <00:17:20.419>an <00:17:20.595>application

335
00:17:22.095 --> 00:17:23.455
<00:17:22.095>with <00:17:22.502>its <00:17:22.911>own <00:17:23.319>database.

336
00:17:24.445 --> 00:17:27.825
<00:17:24.444>So <00:17:24.645>there's <00:17:24.845>no <00:17:25.044>separations <00:17:25.244>really <00:17:25.444>of <00:17:25.645>the <00:17:25.845>queries

337
00:17:28.145 --> 00:17:31.505
<00:17:28.145>'cause <00:17:28.285>it's <00:17:28.425>just, <00:17:28.565>uh, <00:17:28.705>listening <00:17:28.845>to <00:17:28.985>all <00:17:29.125>the <00:17:29.264>events <00:17:29.405>coming <00:17:29.545>in

338
00:17:31.925 --> 00:17:35.265
<00:17:31.925>and <00:17:32.080>then <00:17:32.236>building <00:17:32.391>up <00:17:32.547>its <00:17:32.702>own <00:17:32.858>aggregate <00:17:33.013>and <00:17:33.169>using <00:17:33.325>that.

339
00:17:35.965 --> 00:17:39.865
<00:17:35.965>And <00:17:36.105>then <00:17:36.245>it's, <00:17:36.385>uh, <00:17:36.524>connected <00:17:36.665>via <00:17:36.804>Kafka <00:17:36.945>to <00:17:37.084>a <00:17:37.225>command <00:17:37.365>handler

340
00:17:40.445 --> 00:17:44.185
<00:17:40.445>that's, <00:17:40.645>uh, <00:17:40.845>executing <00:17:41.044>those <00:17:41.245>commands <00:17:41.445>on <00:17:41.645>a <00:17:41.845>database.

341
00:17:45.615 --> 00:17:50.005
<00:17:45.615>And <00:17:45.731>one <00:17:45.848>of <00:17:45.965>the <00:17:46.081>downsides <00:17:46.198>here <00:17:46.315>is <00:17:46.431>that <00:17:46.548>it's <00:17:46.665>not, <00:17:46.781>I <00:17:46.898>can't, <00:17:47.015>it,

342
00:17:50.025 --> 00:17:51.565
<00:17:50.025>it <00:17:50.371>can't <00:17:50.718>really <00:17:51.064>handle <00:17:51.411>errors.

343
00:17:52.265 --> 00:17:55.925
<00:17:52.265>So <00:17:52.420>if, <00:17:52.576>uh, <00:17:52.731>something <00:17:52.887>fails, <00:17:53.042>then <00:17:53.198>you <00:17:53.353>need <00:17:53.509>some <00:17:53.665>kind

344
00:17:55.925 --> 00:17:58.445
<00:17:55.925>of <00:17:56.125>the <00:17:56.325>command <00:17:56.524>field <00:17:56.725>message <00:17:56.925>to <00:17:57.125>send <00:17:57.325>back

345
00:17:58.825 --> 00:18:01.245
<00:17:58.825>and <00:17:59.025>that <00:17:59.225>you <00:17:59.425>need <00:17:59.625>to <00:17:59.825>process <00:18:00.025>that <00:18:00.225>again.

346
00:18:01.885 --> 00:18:03.565
<00:18:01.885>I <00:18:02.235>can <00:18:02.585>demo <00:18:02.935>the <00:18:03.285>application.

347
00:18:06.085 --> 00:18:10.815
<00:18:06.085>Um, <00:18:06.260>yes. <00:18:06.435>So <00:18:06.610>it's, <00:18:06.785>do <00:18:06.960>you <00:18:07.135>rally <00:18:07.310>install <00:18:07.485>earlier?

348
00:18:11.235 --> 00:18:15.855
<00:18:11.235>You <00:18:11.375>can <00:18:11.514>just, <00:18:11.655>you <00:18:11.794>basically <00:18:11.935>can <00:18:12.074>just <00:18:12.215>run <00:18:12.354>it <00:18:12.495>using <00:18:12.635>Docker,

349
00:18:16.275 --> 00:18:19.575
<00:18:16.275>but <00:18:16.430>you <00:18:16.586>still <00:18:16.741>have <00:18:16.897>to <00:18:17.052>meet, <00:18:17.208>uh, <00:18:17.363>landing <00:18:17.519>it <00:18:17.675>installed.

350
00:18:19.755 --> 00:18:24.735
<00:18:19.755>And <00:18:19.910>even <00:18:20.066>so, <00:18:20.221>uh, <00:18:20.377>I <00:18:20.532>can <00:18:20.688>log <00:18:20.843>any <00:18:20.999>like <00:18:21.155>anything

351
00:18:24.835 --> 00:18:27.095
<00:18:24.835>and <00:18:25.035>then <00:18:25.235>when <00:18:25.435>it's, <00:18:25.635>the <00:18:25.835>name <00:18:26.035>won't <00:18:26.235>exist

352
00:18:27.395 --> 00:18:28.775
<00:18:27.395>to <00:18:27.705>create <00:18:28.016>a <00:18:28.326>new <00:18:28.637>account

353
00:18:30.215 --> 00:18:33.195
<00:18:30.215>and <00:18:30.370>then <00:18:30.526>it's <00:18:30.681>showing <00:18:30.837>the <00:18:30.992>transactions <00:18:31.148>and <00:18:31.303>I <00:18:31.459>can <00:18:31.615>transfer

354
00:18:33.215 --> 00:18:36.755
<00:18:33.215>and <00:18:33.342>I <00:18:33.469>can <00:18:33.596>also <00:18:33.724>kind <00:18:33.851>of <00:18:33.978>pretend <00:18:34.105>to <00:18:34.233>be <00:18:34.360>a <00:18:34.487>bank <00:18:34.615>employee

355
00:18:36.895 --> 00:18:38.995
<00:18:36.895>and <00:18:37.245>then <00:18:37.595>see <00:18:37.945>current <00:18:38.295>transactions.

356
00:18:39.375 --> 00:18:43.675
<00:18:39.375>And <00:18:39.502>then <00:18:39.629>for <00:18:39.756>example, <00:18:39.884>if <00:18:40.011>I, <00:18:40.138>uh, <00:18:40.265>try <00:18:40.393>to <00:18:40.520>transfer <00:18:40.647>money <00:18:40.775>to

357
00:18:43.675 --> 00:18:44.155
<00:18:43.675>that <00:18:44.107>one,

358
00:18:54.365 --> 00:18:55.415
<00:18:54.365>then <00:18:54.601>you <00:18:54.837>see <00:18:55.073>it's <00:18:55.310>here.

359
00:18:55.595 --> 00:18:57.735
<00:18:55.595>And <00:18:55.945>also <00:18:56.295>bank <00:18:56.645>MP <00:18:56.995>also.

360
00:18:58.035 --> 00:19:02.495
<00:18:58.035>And <00:18:58.175>this <00:18:58.315>is <00:18:58.455>also <00:18:58.595>the <00:18:58.735>using <00:18:58.875>the, <00:18:59.015>uh, <00:18:59.155>streaming <00:18:59.295>from <00:18:59.435>GraphQL.

361
00:19:03.075 --> 00:19:04.935
<00:19:03.075>So <00:19:03.355>then <00:19:03.635>it's <00:19:03.915>coming <00:19:04.195>from <00:19:04.475>Kafka

362
00:19:04.995 --> 00:19:07.815
<00:19:04.995>and <00:19:05.195>then <00:19:05.395>it's <00:19:05.594>streamed <00:19:05.794>straight <00:19:05.995>to <00:19:06.195>the <00:19:06.395>client.

363
00:19:07.995 --> 00:19:10.135
<00:19:07.995>But <00:19:08.150>it <00:19:08.306>was <00:19:08.461>kind <00:19:08.617>of <00:19:08.772>nice <00:19:08.928>to <00:19:09.083>get <00:19:09.239>that <00:19:09.395>working,

364
00:19:11.155 --> 00:19:12.295
<00:19:11.155>uh, <00:19:11.411>in <00:19:11.668>a <00:19:11.924>demo <00:19:12.181>project.

365
00:19:17.425 --> 00:19:21.195
<00:19:17.425>Yeah, <00:19:17.580>so, <00:19:17.736>uh, <00:19:17.891>one <00:19:18.047>of <00:19:18.202>the <00:19:18.358>pros <00:19:18.513>here <00:19:18.669>is <00:19:18.825>that

366
00:19:21.195 --> 00:19:25.835
<00:19:21.195>because, <00:19:21.350>um, <00:19:21.506>I <00:19:21.661>set <00:19:21.817>the <00:19:21.972>Kafka <00:19:22.128>topics <00:19:22.283>to <00:19:22.439>just, <00:19:22.595>uh,

367
00:19:25.865 --> 00:19:27.235
<00:19:25.865>forever <00:19:26.276>store <00:19:26.687>the <00:19:27.098>data.

368
00:19:27.855 --> 00:19:31.755
<00:19:27.855>So <00:19:27.982>I <00:19:28.109>can <00:19:28.236>always <00:19:28.364>see <00:19:28.491>if <00:19:28.618>there <00:19:28.745>was <00:19:28.873>a <00:19:29.000>transaction <00:19:29.127>made, <00:19:29.255>who,

369
00:19:31.855 --> 00:19:34.515
<00:19:31.855>who <00:19:32.088>made <00:19:32.321>it, <00:19:32.555>uh, <00:19:32.788>and, <00:19:33.021>and <00:19:33.255>when,

370
00:19:34.995 --> 00:19:36.835
<00:19:34.995>'cause <00:19:35.274>Kafka <00:19:35.554>is <00:19:35.834>also <00:19:36.114>always <00:19:36.395>storing

371
00:19:37.255 --> 00:19:38.395
<00:19:37.255>the <00:19:37.511>date <00:19:37.768>when <00:19:38.024>it <00:19:38.281>happened.

372
00:19:39.415 --> 00:19:40.675
<00:19:39.415>Um, <00:19:40.549>and

373
00:19:41.295 --> 00:19:45.235
<00:19:41.295>but <00:19:41.435>I <00:19:41.575>also <00:19:41.715>did <00:19:41.855>in <00:19:41.995>this <00:19:42.135>application <00:19:42.275>was <00:19:42.415>um, <00:19:42.555>making <00:19:42.695>sure

374
00:19:45.235 --> 00:19:48.595
<00:19:45.235>that <00:19:45.390>the <00:19:45.546>external <00:19:45.701>API <00:19:45.857>was <00:19:46.012>decoupled <00:19:46.168>from <00:19:46.323>the <00:19:46.479>internal <00:19:46.635>model

375
00:19:49.055 --> 00:19:51.075
<00:19:49.055>so <00:19:49.405>that, <00:19:49.755>uh, <00:19:50.105>any <00:19:50.455>change

376
00:19:51.295 --> 00:19:54.435
<00:19:51.295>to <00:19:51.450>the <00:19:51.606>internal <00:19:51.761>model <00:19:51.917>wouldn't <00:19:52.072>need <00:19:52.228>to <00:19:52.383>change <00:19:52.539>the <00:19:52.695>API.

377
00:19:54.635 --> 00:19:58.205
<00:19:54.635>'cause <00:19:54.790>what <00:19:54.946>you <00:19:55.101>also <00:19:55.257>see <00:19:55.412>often <00:19:55.568>with <00:19:55.723>really <00:19:55.879>like, <00:19:56.035>uh,

378
00:19:58.205 --> 00:20:01.125
<00:19:58.205>simple <00:19:58.438>grid <00:19:58.671>applications <00:19:58.905>is <00:19:59.138>that <00:19:59.371>the <00:19:59.605>objects

379
00:20:01.125 --> 00:20:04.445
<00:20:01.125>inside <00:20:01.300>the <00:20:01.475>database <00:20:01.650>are <00:20:01.825>also <00:20:02.000>exactly <00:20:02.175>the <00:20:02.350>same <00:20:02.525>objects

380
00:20:04.445 --> 00:20:06.085
<00:20:04.445>that <00:20:04.725>you <00:20:05.004>expose <00:20:05.284>in <00:20:05.564>the <00:20:05.845>API.

381
00:20:06.505 --> 00:20:09.325
<00:20:06.505>But <00:20:06.680>then <00:20:06.855>of <00:20:07.030>course <00:20:07.205>when <00:20:07.380>you <00:20:07.555>change <00:20:07.730>something <00:20:07.905>internally

382
00:20:09.625 --> 00:20:11.965
<00:20:09.625>that's <00:20:09.905>immediately <00:20:10.185>also <00:20:10.465>exposing <00:20:10.745>the <00:20:11.025>API

383
00:20:11.965 --> 00:20:14.645
<00:20:11.965>and <00:20:12.139>often <00:20:12.314>you <00:20:12.490>want <00:20:12.665>to, <00:20:12.840>uh, <00:20:13.014>decouple <00:20:13.189>those <00:20:13.365>things,

384
00:20:14.745 --> 00:20:18.525
<00:20:14.745>but <00:20:14.900>of <00:20:15.056>course <00:20:15.211>it's <00:20:15.367>much <00:20:15.522>simpler <00:20:15.678>application <00:20:15.833>if <00:20:15.989>you <00:20:16.145>don't.

385
00:20:20.415 --> 00:20:23.635
<00:20:20.415>Um, <00:20:20.648>the <00:20:20.881>downsides <00:20:21.115>with <00:20:21.348>this <00:20:21.581>was <00:20:21.815>basically

386
00:20:23.635 --> 00:20:27.205
<00:20:23.635>that <00:20:23.868>it <00:20:24.101>was <00:20:24.335>very <00:20:24.568>complex, <00:20:24.801>uh, <00:20:25.035>also

387
00:20:27.205 --> 00:20:30.125
<00:20:27.205>because, <00:20:27.554>uh, <00:20:27.905>I <00:20:28.254>used <00:20:28.605>schema

388
00:20:30.145 --> 00:20:32.405
<00:20:30.145>for <00:20:30.495>this, <00:20:30.845>uh, <00:20:31.195>with <00:20:31.545>Afro.

389
00:20:32.625 --> 00:20:34.845
<00:20:32.625>So <00:20:32.825>it <00:20:33.025>was <00:20:33.225>basically <00:20:33.425>a <00:20:33.625>lot <00:20:33.825>of <00:20:34.025>hassle

390
00:20:35.665 --> 00:20:38.405
<00:20:35.665>to <00:20:35.945>get <00:20:36.225>the <00:20:36.504>correct <00:20:36.784>command <00:20:37.065>messages

391
00:20:38.505 --> 00:20:40.085
<00:20:38.505>and <00:20:38.785>also <00:20:39.065>to <00:20:39.345>re <00:20:39.625>reply <00:20:39.905>messages.

392
00:20:40.665 --> 00:20:44.405
<00:20:40.665>Uh, <00:20:40.820>and <00:20:40.976>then <00:20:41.131>having <00:20:41.287>them <00:20:41.442>handled <00:20:41.598>correctly <00:20:41.753>by, <00:20:41.909>by <00:20:42.065>Kafka.

393
00:20:45.225 --> 00:20:50.085
<00:20:45.225>Uh, <00:20:45.365>and <00:20:45.504>by <00:20:45.645>using <00:20:45.784>Kafka <00:20:45.925>kind <00:20:46.064>of <00:20:46.205>as <00:20:46.344>my <00:20:46.485>event <00:20:46.625>store,

394
00:20:50.675 --> 00:20:53.445
<00:20:50.675>it's <00:20:50.955>also <00:20:51.235>a <00:20:51.514>problem <00:20:51.794>with <00:20:52.075>rereading

395
00:20:53.445 --> 00:20:57.465
<00:20:53.445>because <00:20:53.620>um, <00:20:53.794>with <00:20:53.970>Kafka <00:20:54.145>you <00:20:54.320>can <00:20:54.495>basically <00:20:54.669>have <00:20:54.845>either

396
00:20:57.605 --> 00:21:00.505
<00:20:57.605>or <00:20:57.760>messages <00:20:57.916>or <00:20:58.071>you <00:20:58.227>can <00:20:58.382>have <00:20:58.538>a <00:20:58.693>lot <00:20:58.849>of <00:20:59.005>messages,

397
00:21:01.045 --> 00:21:02.865
<00:21:01.045>but <00:21:01.245>you <00:21:01.445>can't <00:21:01.645>really <00:21:01.845>have <00:21:02.045>both <00:21:02.245>of <00:21:02.445>them.

398
00:21:03.525 --> 00:21:07.305
<00:21:03.525>So <00:21:03.641>you <00:21:03.758>need <00:21:03.875>to, <00:21:03.991>if <00:21:04.108>you <00:21:04.225>would <00:21:04.341>do <00:21:04.458>this <00:21:04.575>on <00:21:04.691>a <00:21:04.808>ground <00:21:04.925>scale,

399
00:21:07.485 --> 00:21:08.865
<00:21:07.485>do <00:21:07.795>you <00:21:08.106>have <00:21:08.416>to <00:21:08.727>compromise?

400
00:21:09.565 --> 00:21:11.385
<00:21:09.565>And <00:21:09.765>then <00:21:09.965>of <00:21:10.165>course <00:21:10.365>if <00:21:10.565>you <00:21:10.765>reread <00:21:10.965>them

401
00:21:11.645 --> 00:21:15.465
<00:21:11.645>and <00:21:11.820>the <00:21:11.995>order <00:21:12.170>is <00:21:12.345>slightly <00:21:12.520>different, <00:21:12.695>that <00:21:12.870>might <00:21:13.045>lead

402
00:21:15.525 --> 00:21:17.065
<00:21:15.525>to <00:21:16.218>strange <00:21:16.911>errors

403
00:21:18.895 --> 00:21:21.635
<00:21:18.895>or <00:21:19.050>you <00:21:19.206>have <00:21:19.361>just, <00:21:19.517>uh, <00:21:19.672>you, <00:21:19.828>you <00:21:19.983>limit <00:21:20.139>the <00:21:20.295>performance,

404
00:21:21.635 --> 00:21:23.835
<00:21:21.635>which <00:21:21.915>you, <00:21:22.195>yeah, <00:21:22.475>you, <00:21:22.754>you <00:21:23.035>want

405
00:21:23.835 --> 00:21:26.195
<00:21:23.835>to <00:21:23.975>scale <00:21:24.115>probably <00:21:24.255>if <00:21:24.395>you <00:21:24.535>want <00:21:24.675>to <00:21:24.815>use <00:21:24.955>the <00:21:25.095>in <00:21:25.235>production.

406
00:21:28.015 --> 00:21:31.635
<00:21:28.015>Uh, <00:21:28.155>then <00:21:28.295>the <00:21:28.435>future <00:21:28.575>steps, <00:21:28.715>that's <00:21:28.855>also <00:21:28.995>a <00:21:29.135>running <00:21:29.275>sign <00:21:29.415>there

407
00:21:31.635 --> 00:21:33.435
<00:21:31.635>because <00:21:31.985>it's <00:21:32.335>still <00:21:32.685>in <00:21:33.035>progress.

408
00:21:33.675 --> 00:21:37.395
<00:21:33.675>I <00:21:33.815>hope <00:21:33.955>to <00:21:34.095>be <00:21:34.235>further, <00:21:34.375>but <00:21:34.514>it's <00:21:34.655>quite <00:21:34.794>complex <00:21:34.935>to <00:21:35.075>um,

409
00:21:37.505 --> 00:21:38.515
<00:21:37.505>getting <00:21:37.959>the <00:21:38.414>whole

410
00:21:38.745 --> 00:21:42.155
<00:21:38.745>because <00:21:38.945>um, <00:21:39.145>actual, <00:21:39.344>I <00:21:39.544>use <00:21:39.745>the <00:21:39.945>actual <00:21:40.145>framework

411
00:21:42.175 --> 00:21:45.635
<00:21:42.175>and <00:21:42.375>it's <00:21:42.575>actually <00:21:42.774>doing <00:21:42.975>a <00:21:43.175>lot <00:21:43.375>of <00:21:43.575>things

412
00:21:46.345 --> 00:21:47.675
<00:21:46.345>besides <00:21:46.943>event <00:21:47.542>sourcing.

413
00:21:48.655 --> 00:21:51.235
<00:21:48.655>So <00:21:48.855>it's <00:21:49.055>also <00:21:49.254>really <00:21:49.455>about, <00:21:49.655>uh, <00:21:49.855>event <00:21:50.055>modeling

414
00:21:51.655 --> 00:21:52.955
<00:21:51.655>and <00:21:52.045>getting <00:21:52.435>that <00:21:52.824>right.

415
00:21:53.415 --> 00:21:57.075
<00:21:53.415>So <00:21:53.570>I'm <00:21:53.726>now <00:21:53.881>kind <00:21:54.037>of <00:21:54.192>retrofitting <00:21:54.348>the <00:21:54.503>application <00:21:54.659>I <00:21:54.815>had

416
00:21:57.585 --> 00:22:00.995
<00:21:57.585>with <00:21:57.785>the <00:21:57.985>events <00:21:58.185>and <00:21:58.385>also <00:21:58.585>the <00:21:58.785>queries, <00:21:58.985>like

417
00:22:01.175 --> 00:22:04.315
<00:22:01.175>how <00:22:01.330>they <00:22:01.486>are <00:22:01.641>supposed <00:22:01.797>to <00:22:01.952>be <00:22:02.108>in <00:22:02.263>the <00:22:02.419>actual <00:22:02.575>framework.

418
00:22:05.885 --> 00:22:09.345
<00:22:05.885>But <00:22:06.118>so <00:22:06.351>far <00:22:06.585>it's <00:22:06.818>working <00:22:07.051>quite <00:22:07.285>nice

419
00:22:09.935 --> 00:22:13.785
<00:22:09.935>because, <00:22:10.075>uh, <00:22:10.215>the <00:22:10.355>big <00:22:10.495>change <00:22:10.635>here <00:22:10.774>that <00:22:10.915>Excel <00:22:11.054>is <00:22:11.195>really <00:22:11.335>uh,

420
00:22:13.925 --> 00:22:15.705
<00:22:13.925>in <00:22:14.391>the <00:22:14.858>middle, <00:22:15.325>uh,

421
00:22:16.285 --> 00:22:19.345
<00:22:16.285>and <00:22:16.460>um, <00:22:16.635>uh, <00:22:16.810>for <00:22:16.985>example, <00:22:17.160>there <00:22:17.335>is <00:22:17.510>the <00:22:17.685>reactor

422
00:22:19.525 --> 00:22:22.345
<00:22:19.525>and <00:22:19.680>that <00:22:19.836>has <00:22:19.991>just <00:22:20.147>kind <00:22:20.302>of <00:22:20.458>like <00:22:20.613>an <00:22:20.769>eternal <00:22:20.925>database.

423
00:22:22.805 --> 00:22:25.585
<00:22:22.805>And <00:22:22.980>when <00:22:23.155>you <00:22:23.330>start <00:22:23.505>it <00:22:23.680>again, <00:22:23.855>it'll <00:22:24.030>just, <00:22:24.205>uh,

424
00:22:25.775 --> 00:22:28.345
<00:22:25.775>read <00:22:25.975>all <00:22:26.175>the <00:22:26.375>events <00:22:26.575>from <00:22:26.775>Exon <00:22:26.975>Server <00:22:27.175>again.

425
00:22:28.885 --> 00:22:30.745
<00:22:28.885>Um, <00:22:29.235>and <00:22:29.585>then <00:22:29.935>it's <00:22:30.285>queryable.

426
00:22:31.445 --> 00:22:35.825
<00:22:31.445>And <00:22:31.572>also <00:22:31.699>something <00:22:31.826>that's <00:22:31.954>nice <00:22:32.081>is, <00:22:32.208>uh, <00:22:32.335>if <00:22:32.463>there <00:22:32.590>is <00:22:32.717>a <00:22:32.845>amount

427
00:22:35.845 --> 00:22:39.105
<00:22:35.845>and <00:22:36.000>it <00:22:36.156>fills, <00:22:36.311>then <00:22:36.467>you <00:22:36.622>can <00:22:36.778>just <00:22:36.933>throw <00:22:37.089>an <00:22:37.245>error

428
00:22:39.565 --> 00:22:41.345
<00:22:39.565>and <00:22:39.798>that <00:22:40.031>error <00:22:40.265>is, <00:22:40.498>is <00:22:40.731>sending <00:22:40.965>back.

429
00:22:41.405 --> 00:22:44.545
<00:22:41.405>So <00:22:41.605>you <00:22:41.805>don't <00:22:42.004>need <00:22:42.205>to <00:22:42.405>have <00:22:42.605>specific <00:22:42.805>messages

430
00:22:44.645 --> 00:22:46.425
<00:22:44.645>for <00:22:44.845>every <00:22:45.045>kind <00:22:45.245>of <00:22:45.445>error <00:22:45.645>you <00:22:45.845>can <00:22:46.045>have.

431
00:22:46.965 --> 00:22:49.545
<00:22:46.965>And <00:22:47.105>then <00:22:47.245>of <00:22:47.385>course <00:22:47.524>at <00:22:47.665>the <00:22:47.804>points <00:22:47.945>that <00:22:48.084>you <00:22:48.225>handle <00:22:48.365>it,

432
00:22:49.545 --> 00:22:52.265
<00:22:49.545>you <00:22:49.700>can <00:22:49.856>determine <00:22:50.011>if <00:22:50.167>you <00:22:50.322>want <00:22:50.478>to <00:22:50.633>send <00:22:50.789>an <00:22:50.945>error

433
00:22:52.365 --> 00:22:53.745
<00:22:52.365>to <00:22:52.572>the <00:22:52.779>client <00:22:52.985>or <00:22:53.193>do <00:22:53.399>something <00:22:53.607>else.

434
00:22:55.615 --> 00:22:58.275
<00:22:55.615>And <00:22:55.848>it's <00:22:56.081>really <00:22:56.315>working <00:22:56.548>with <00:22:56.781>spring <00:22:57.015>boots,

435
00:22:58.375 --> 00:23:00.435
<00:22:58.375>it <00:22:58.608>makes <00:22:58.841>it <00:22:59.075>very <00:22:59.308>easy <00:22:59.541>to <00:22:59.775>use.

436
00:23:00.835 --> 00:23:03.235
<00:23:00.835>'cause <00:23:01.010>it's <00:23:01.185>really, <00:23:01.360>if <00:23:01.535>you're <00:23:01.710>familiar <00:23:01.885>with <00:23:02.060>Spring <00:23:02.235>Boot

437
00:23:03.825 --> 00:23:05.955
<00:23:03.825>then <00:23:04.025>you <00:23:04.225>know, <00:23:04.425>there <00:23:04.625>are <00:23:04.825>all <00:23:05.025>these <00:23:05.225>kind

438
00:23:05.955 --> 00:23:09.075
<00:23:05.955>of <00:23:06.129>starters <00:23:06.304>which <00:23:06.480>is <00:23:06.655>basically <00:23:06.830>just <00:23:07.004>one <00:23:07.179>MA <00:23:07.355>dependency

439
00:23:09.575 --> 00:23:13.195
<00:23:09.575>and <00:23:09.715>that <00:23:09.855>will <00:23:09.995>pull <00:23:10.135>in <00:23:10.275>all <00:23:10.415>the <00:23:10.555>kind <00:23:10.695>of <00:23:10.835>configuration <00:23:10.975>with,

440
00:23:13.375 --> 00:23:15.475
<00:23:13.375>uh, <00:23:13.655>defaults <00:23:13.935>and <00:23:14.215>all <00:23:14.495>the <00:23:14.775>dependencies

441
00:23:15.475 --> 00:23:17.355
<00:23:15.475>that <00:23:15.754>are <00:23:16.034>needed <00:23:16.314>to <00:23:16.594>run <00:23:16.875>something.

442
00:23:17.775 --> 00:23:20.275
<00:23:17.775>So <00:23:17.915>it's <00:23:18.055>really <00:23:18.195>just <00:23:18.335>if <00:23:18.475>you <00:23:18.615>have <00:23:18.755>an <00:23:18.895>existing <00:23:19.035>Spring <00:23:19.175>boot

443
00:23:20.275 --> 00:23:22.965
<00:23:20.275>project, <00:23:20.625>it's <00:23:20.975>adding <00:23:21.325>one <00:23:21.675>uh,

444
00:23:25.475 --> 00:23:28.165
<00:23:25.475>plus <00:23:25.615>the <00:23:25.754>part <00:23:25.895>in <00:23:26.034>the <00:23:26.175>project <00:23:26.314>you <00:23:26.455>wish <00:23:26.594>you <00:23:26.735>knew <00:23:26.875>beforehand.

445
00:23:29.955 --> 00:23:32.055
<00:23:29.955>Uh, <00:23:30.188>so <00:23:30.421>anonymous, <00:23:30.655>I <00:23:30.888>don't <00:23:31.121>really <00:23:31.355>know

446
00:23:33.025 --> 00:23:34.535
<00:23:33.025>which <00:23:33.478>project <00:23:33.931>you're <00:23:34.384>mentioning,

447
00:23:34.555 --> 00:23:36.055
<00:23:34.555>so <00:23:34.825>I <00:23:35.095>would <00:23:35.365>like <00:23:35.635>some <00:23:35.905>clarification

448
00:23:36.075 --> 00:23:38.175
<00:23:36.075>and <00:23:36.308>again, <00:23:36.541>get <00:23:36.775>back <00:23:37.008>to <00:23:37.241>that <00:23:37.475>question.

449
00:23:39.235 --> 00:23:44.105
<00:23:39.235>Um, <00:23:39.701>yes, <00:23:40.168>so <00:23:40.635>um,

450
00:23:45.445 --> 00:23:48.455
<00:23:45.445>like <00:23:45.585>I <00:23:45.725>said, <00:23:45.865>if <00:23:46.004>you <00:23:46.145>use, <00:23:46.284>if <00:23:46.425>you <00:23:46.564>use <00:23:46.705>Spring <00:23:46.845>Boot,

451
00:23:48.525 --> 00:23:49.775
<00:23:48.525>it's <00:23:48.750>very <00:23:48.975>easy <00:23:49.200>to <00:23:49.425>set <00:23:49.650>up

452
00:23:49.975 --> 00:23:51.815
<00:23:49.975>'cause <00:23:50.254>it's <00:23:50.534>just <00:23:50.814>one <00:23:51.094>additional <00:23:51.375>dependency.

453
00:23:52.395 --> 00:23:55.415
<00:23:52.395>Uh, <00:23:52.535>and <00:23:52.675>oh <00:23:52.815>yeah, <00:23:52.955>I <00:23:53.095>have <00:23:53.235>say <00:23:53.375>I <00:23:53.514>I <00:23:53.655>use <00:23:53.795>this

454
00:23:55.415 --> 00:23:57.735
<00:23:55.415>with <00:23:55.590>Excellent <00:23:55.764>server, <00:23:55.940>but <00:23:56.115>there <00:23:56.290>are <00:23:56.465>actually <00:23:56.639>all <00:23:56.815>these

455
00:23:58.085 --> 00:24:01.015
<00:23:58.085>different <00:23:58.285>bits <00:23:58.485>and <00:23:58.685>pieces <00:23:58.885>of <00:23:59.085>the <00:23:59.285>actual <00:23:59.485>framework.

456
00:24:01.875 --> 00:24:04.935
<00:24:01.875>Uh, <00:24:02.015>you, <00:24:02.155>you <00:24:02.295>can <00:24:02.435>also <00:24:02.575>just <00:24:02.715>take <00:24:02.855>a <00:24:02.995>few <00:24:03.135>of <00:24:03.275>them.

457
00:24:05.315 --> 00:24:09.315
<00:24:05.315>But <00:24:05.455>for <00:24:05.595>this <00:24:05.735>example, <00:24:05.875>I <00:24:06.015>want <00:24:06.155>to <00:24:06.295>really <00:24:06.435>use <00:24:06.575>as <00:24:06.715>much

458
00:24:09.335 --> 00:24:11.035
<00:24:09.335>of <00:24:09.615>the <00:24:09.895>action <00:24:10.175>framework <00:24:10.455>as <00:24:10.735>possible.

459
00:24:11.095 --> 00:24:13.935
<00:24:11.095>So <00:24:11.295>I <00:24:11.495>also <00:24:11.695>use <00:24:11.895>the <00:24:12.095>Action <00:24:12.295>Surfer, <00:24:12.495>um,

460
00:24:14.955 --> 00:24:16.215
<00:24:14.955>as, <00:24:16.089>yes.

461
00:24:16.555 --> 00:24:19.295
<00:24:16.555>So <00:24:16.710>a <00:24:16.866>lot <00:24:17.021>of <00:24:17.177>those <00:24:17.332>things <00:24:17.488>in <00:24:17.643>the <00:24:17.799>framework <00:24:17.955>are,

462
00:24:19.395 --> 00:24:23.515
<00:24:19.395>are <00:24:19.628>battle <00:24:19.861>tested <00:24:20.095>on, <00:24:20.328>on <00:24:20.561>best <00:24:20.795>practices.

463
00:24:23.855 --> 00:24:28.475
<00:24:23.855>So <00:24:23.971>there's <00:24:24.088>things <00:24:24.205>like <00:24:24.321>a <00:24:24.438>command <00:24:24.555>need <00:24:24.671>to <00:24:24.788>have <00:24:24.905>a <00:24:25.021>unique <00:24:25.138>ID <00:24:25.255>so

464
00:24:28.475 --> 00:24:31.155
<00:24:28.475>that <00:24:28.649>you, <00:24:28.824>in <00:24:29.000>case <00:24:29.175>that <00:24:29.350>you <00:24:29.524>have <00:24:29.699>conflicted <00:24:29.875>commands,

465
00:24:31.155 --> 00:24:33.795
<00:24:31.155>you <00:24:31.310>know <00:24:31.466>which <00:24:31.621>one <00:24:31.777>came <00:24:31.932>first <00:24:32.088>and <00:24:32.243>stuff <00:24:32.399>like <00:24:32.555>that.

466
00:24:33.905 --> 00:24:37.155
<00:24:33.905>Well, <00:24:34.060>in <00:24:34.216>the <00:24:34.371>Kafka <00:24:34.527>example, <00:24:34.682>I <00:24:34.838>had <00:24:34.993>to <00:24:35.149>really <00:24:35.305>think

467
00:24:37.155 --> 00:24:41.195
<00:24:37.155>for <00:24:37.310>myself, <00:24:37.466>'cause <00:24:37.621>Kafka <00:24:37.777>is <00:24:37.932>ordering <00:24:38.088>things <00:24:38.243>by <00:24:38.399>the <00:24:38.555>key,

468
00:24:41.875 --> 00:24:44.875
<00:24:41.875>I <00:24:42.002>really <00:24:42.129>had <00:24:42.256>to <00:24:42.384>think <00:24:42.511>what <00:24:42.638>do <00:24:42.765>I <00:24:42.893>need <00:24:43.020>to <00:24:43.147>put <00:24:43.275>into,

469
00:24:44.985 --> 00:24:49.035
<00:24:44.985>into <00:24:45.112>the <00:24:45.239>key <00:24:45.366>and <00:24:45.494>how <00:24:45.621>will <00:24:45.748>that <00:24:45.875>be <00:24:46.003>handled <00:24:46.130>by <00:24:46.257>the <00:24:46.385>application

470
00:24:50.175 --> 00:24:52.715
<00:24:50.175>and <00:24:50.350>with <00:24:50.524>the <00:24:50.700>Axon <00:24:50.875>that <00:24:51.050>doesn't <00:24:51.225>need <00:24:51.399>to <00:24:51.575>be.

471
00:24:53.455 --> 00:24:55.915
<00:24:53.455>And <00:24:53.688>also <00:24:53.921>like <00:24:54.155>the <00:24:54.388>free <00:24:54.621>re <00:24:54.855>replayability.

472
00:24:56.195 --> 00:25:00.195
<00:24:56.195>'cause <00:24:56.335>I <00:24:56.475>never <00:24:56.615>got <00:24:56.754>with <00:24:56.895>the <00:24:57.034>Kafka <00:24:57.175>solution, <00:24:57.314>I <00:24:57.455>never <00:24:57.595>got

473
00:25:00.195 --> 00:25:01.195
<00:25:00.195>to <00:25:00.645>the <00:25:01.095>Replayability.

474
00:25:01.935 --> 00:25:03.715
<00:25:01.935>But <00:25:02.110>like <00:25:02.284>I <00:25:02.460>said, <00:25:02.635>it's <00:25:02.810>kind <00:25:02.985>of <00:25:03.159>hard <00:25:03.335>also

475
00:25:03.715 --> 00:25:05.675
<00:25:03.715>because <00:25:03.948>I'm <00:25:04.181>using <00:25:04.415>a <00:25:04.648>stage <00:25:04.881>for <00:25:05.115>database.

476
00:25:06.375 --> 00:25:09.555
<00:25:06.375>So <00:25:06.515>then <00:25:06.655>somehow <00:25:06.795>I <00:25:06.935>need <00:25:07.075>to <00:25:07.215>know <00:25:07.355>when <00:25:07.495>the <00:25:07.635>application <00:25:07.775>starts,

477
00:25:10.255 --> 00:25:12.075
<00:25:10.255>if <00:25:10.535>it's <00:25:10.815>running <00:25:11.095>behind <00:25:11.375>or <00:25:11.655>not,

478
00:25:12.375 --> 00:25:15.435
<00:25:12.375>and <00:25:12.530>then <00:25:12.686>from <00:25:12.841>Kafka <00:25:12.997>gets <00:25:13.152>all <00:25:13.308>the <00:25:13.463>events <00:25:13.619>or <00:25:13.775>not.

479
00:25:16.135 --> 00:25:19.755
<00:25:16.135>So <00:25:16.368>that's, <00:25:16.601>uh, <00:25:16.835>that's <00:25:17.068>a <00:25:17.301>bit <00:25:17.535>harder.

480
00:25:22.005 --> 00:25:23.105
<00:25:22.005>Um, <00:25:22.500>oh <00:25:22.995>yeah,

481
00:25:23.105 --> 00:25:27.385
<00:25:23.105>but <00:25:23.280>another <00:25:23.455>pro <00:25:23.630>is <00:25:23.805>that <00:25:23.980>Axon <00:25:24.155>is <00:25:24.330>really <00:25:24.505>made

482
00:25:27.645 --> 00:25:30.145
<00:25:27.645>as <00:25:27.995>an <00:25:28.345>um, <00:25:28.695>defense <00:25:29.045>store

483
00:25:30.485 --> 00:25:32.825
<00:25:30.485>and <00:25:30.685>there <00:25:30.885>are <00:25:31.084>also <00:25:31.284>similar <00:25:31.485>solutions <00:25:31.685>like <00:25:31.885>that.

484
00:25:33.445 --> 00:25:36.025
<00:25:33.445>And <00:25:33.645>one <00:25:33.845>of <00:25:34.044>the <00:25:34.245>advantages <00:25:34.445>that <00:25:34.645>is <00:25:34.845>that

485
00:25:36.695 --> 00:25:41.265
<00:25:36.695>once <00:25:36.835>you <00:25:36.975>have <00:25:37.115>like <00:25:37.254>millions <00:25:37.395>of <00:25:37.534>events, <00:25:37.675>it <00:25:37.814>won't <00:25:37.955>slow <00:25:38.095>down.

486
00:25:41.435 --> 00:25:42.585
<00:25:41.435>It'll <00:25:41.693>still <00:25:41.952>be <00:25:42.211>as <00:25:42.470>fast.

487
00:25:43.215 --> 00:25:45.945
<00:25:43.215>Well <00:25:43.415>if <00:25:43.615>you <00:25:43.814>still <00:25:44.014>use <00:25:44.215>a <00:25:44.415>traditional <00:25:44.615>database

488
00:25:46.045 --> 00:25:49.945
<00:25:46.045>to <00:25:46.220>store <00:25:46.395>your <00:25:46.570>events, <00:25:46.745>then <00:25:46.920>eventually <00:25:47.095>it'll <00:25:47.270>get <00:25:47.445>slower.

489
00:25:50.645 --> 00:25:52.905
<00:25:50.645>And <00:25:50.878>that's <00:25:51.111>mainly <00:25:51.345>because <00:25:51.578>it's <00:25:51.811>treating <00:25:52.045>every

490
00:25:53.075 --> 00:25:54.705
<00:25:53.075>event <00:25:53.775>the <00:25:54.475>same.

491
00:25:55.455 --> 00:25:57.945
<00:25:55.455>Well, <00:25:55.655>in <00:25:55.855>practice <00:25:56.054>you <00:25:56.254>want <00:25:56.455>the, <00:25:56.655>the <00:25:56.855>latest

492
00:25:58.485 --> 00:26:00.625
<00:25:58.485>events <00:25:58.764>are <00:25:59.044>the <00:25:59.324>most <00:25:59.604>interesting <00:25:59.885>ones

493
00:26:00.765 --> 00:26:03.985
<00:26:00.765>and <00:26:00.940>the <00:26:01.115>ones <00:26:01.290>that, <00:26:01.465>um, <00:26:01.640>applications <00:26:01.815>want <00:26:01.990>to <00:26:02.165>have.

494
00:26:05.725 --> 00:26:10.065
<00:26:05.725>Um, <00:26:05.865>and <00:26:06.004>the <00:26:06.145>biggest <00:26:06.284>downside <00:26:06.425>so <00:26:06.564>far, <00:26:06.705>the <00:26:06.844>Excel <00:26:06.985>framework <00:26:07.125>is

495
00:26:10.065 --> 00:26:13.905
<00:26:10.065>that <00:26:10.240>you <00:26:10.415>kind <00:26:10.590>of <00:26:10.765>need <00:26:10.940>Spring <00:26:11.115>Boot, <00:26:11.290>uh, <00:26:11.465>to,

496
00:26:13.965 --> 00:26:15.465
<00:26:13.965>to <00:26:14.302>get <00:26:14.639>it <00:26:14.977>working <00:26:15.314>fast.

497
00:26:16.245 --> 00:26:19.985
<00:26:16.245>Uh, <00:26:16.385>there <00:26:16.524>are <00:26:16.665>several <00:26:16.804>other <00:26:16.945>ways <00:26:17.084>to <00:26:17.225>use <00:26:17.364>it <00:26:17.504>I <00:26:17.645>guess,

498
00:26:20.005 --> 00:26:22.545
<00:26:20.005>but <00:26:20.180>then <00:26:20.355>you <00:26:20.530>need <00:26:20.705>to <00:26:20.880>do <00:26:21.055>more <00:26:21.230>work <00:26:21.405>yourself.

499
00:26:23.605 --> 00:26:27.025
<00:26:23.605>Uh, <00:26:23.745>and <00:26:23.885>also <00:26:24.025>if <00:26:24.165>you <00:26:24.305>want <00:26:24.445>to <00:26:24.585>use <00:26:24.725>clustering, <00:26:24.865>you <00:26:25.005>need

500
00:26:27.025 --> 00:26:29.425
<00:26:27.025>to <00:26:27.225>use <00:26:27.425>the <00:26:27.625>enterprise <00:26:27.825>edition <00:26:28.025>of <00:26:28.225>Excel <00:26:28.425>server.

501
00:26:29.525 --> 00:26:32.905
<00:26:29.525>But <00:26:29.652>like <00:26:29.779>I <00:26:29.906>said, <00:26:30.034>you <00:26:30.161>can <00:26:30.288>also <00:26:30.415>do <00:26:30.543>it <00:26:30.670>without <00:26:30.797>Excel <00:26:30.925>server.

502
00:26:33.405 --> 00:26:37.465
<00:26:33.405>So <00:26:33.532>what <00:26:33.659>the <00:26:33.786>framework <00:26:33.914>kind <00:26:34.041>of <00:26:34.168>give <00:26:34.295>you <00:26:34.423>is <00:26:34.550>that <00:26:34.677>it's, <00:26:34.805>uh,

503
00:26:37.785 --> 00:26:39.585
<00:26:37.785>prescribing <00:26:38.065>you <00:26:38.345>to <00:26:38.625>have <00:26:38.905>click <00:26:39.185>amounts

504
00:26:39.615 --> 00:26:41.065
<00:26:39.615>with <00:26:39.941>things <00:26:40.267>like <00:26:40.593>an <00:26:40.920>id.

505
00:26:41.645 --> 00:26:44.965
<00:26:41.645>Uh, <00:26:41.761>and <00:26:41.878>one <00:26:41.995>of <00:26:42.111>the <00:26:42.228>things <00:26:42.345>that <00:26:42.461>can <00:26:42.578>also <00:26:42.695>do <00:26:42.811>is <00:26:42.928>route <00:26:43.045>your

506
00:26:45.645 --> 00:26:47.805
<00:26:45.645>queries <00:26:45.995>to <00:26:46.345>the <00:26:46.695>correct <00:26:47.045>endpoint.

507
00:26:50.355 --> 00:26:54.455
<00:26:50.355>Um, <00:26:50.495>yeah. <00:26:50.635>And <00:26:50.775>then <00:26:50.915>the, <00:26:51.055>the <00:26:51.195>key <00:26:51.335>takeaway <00:26:51.475>is <00:26:51.615>basically, <00:26:51.755>uh,

508
00:26:54.805 --> 00:26:58.095
<00:26:54.805>that <00:26:54.960>it <00:26:55.116>depends <00:26:55.271>if <00:26:55.427>you <00:26:55.582>want <00:26:55.738>to <00:26:55.893>go <00:26:56.049>full, <00:26:56.205>uh,

509
00:26:58.345 --> 00:26:59.455
<00:26:58.345>event <00:26:58.678>sourcing <00:26:59.011>or <00:26:59.344>not.

510
00:26:59.815 --> 00:27:02.495
<00:26:59.815>'cause <00:26:59.990>it's <00:27:00.165>kind <00:27:00.340>of <00:27:00.515>complex <00:27:00.690>to <00:27:00.865>get <00:27:01.040>it <00:27:01.215>working.

511
00:27:03.635 --> 00:27:07.615
<00:27:03.635>One <00:27:03.762>of <00:27:03.889>the <00:27:04.016>biggest <00:27:04.144>ones <00:27:04.271>just <00:27:04.398>is <00:27:04.525>you <00:27:04.653>can <00:27:04.780>always <00:27:04.907>trace <00:27:05.035>changes

512
00:27:07.725 --> 00:27:11.615
<00:27:07.725>back <00:27:07.899>'cause <00:27:08.074>you <00:27:08.250>can <00:27:08.425>only <00:27:08.600>make <00:27:08.774>changes <00:27:08.949>with <00:27:09.125>commands.

513
00:27:11.915 --> 00:27:14.295
<00:27:11.915>Uh, <00:27:12.264>commands <00:27:12.615>always <00:27:12.965>regular <00:27:13.315>events.

514
00:27:14.995 --> 00:27:17.815
<00:27:14.995>So <00:27:15.150>if <00:27:15.306>you <00:27:15.461>have <00:27:15.617>all <00:27:15.772>the <00:27:15.928>events, <00:27:16.083>you <00:27:16.239>always <00:27:16.395>know

515
00:27:18.755 --> 00:27:20.135
<00:27:18.755>why <00:27:19.169>something <00:27:19.583>has <00:27:19.997>changed.

516
00:27:21.035 --> 00:27:23.935
<00:27:21.035>Uh, <00:27:21.190>you <00:27:21.346>don't <00:27:21.501>have <00:27:21.657>that <00:27:21.812>with <00:27:21.968>a <00:27:22.123>normal <00:27:22.279>work <00:27:22.435>application.

517
00:27:26.025 --> 00:27:26.765
<00:27:26.025>So <00:27:26.358>that's <00:27:26.691>it.