WEBVTT

1
00:00:17.225 --> 00:00:18.045
<00:00:17.225>Oh, <00:00:17.963>hi.

2
00:00:18.915 --> 00:00:22.165
<00:00:18.915>Nice <00:00:19.042>to <00:00:19.169>hear <00:00:19.296>you. <00:00:19.424>At <00:00:19.551>least, <00:00:19.678>hopefully <00:00:19.805>at <00:00:19.933>some <00:00:20.060>point <00:00:20.187>in <00:00:20.314>time.

3
00:00:22.635 --> 00:00:24.525
<00:00:22.635>Nice <00:00:22.868>to <00:00:23.101>see <00:00:23.335>you <00:00:23.568>also, <00:00:23.801>um, <00:00:24.035>that

4
00:00:24.545 --> 00:00:26.125
<00:00:24.545>so <00:00:24.825>many <00:00:25.105>people <00:00:25.385>are <00:00:25.665>joining <00:00:25.945>online.

5
00:00:26.585 --> 00:00:28.725
<00:00:26.585>Um, <00:00:26.818>it's <00:00:27.051>fantastic. <00:00:27.285>Um, <00:00:27.518>I'm <00:00:27.751>really <00:00:27.985>thrilled

6
00:00:28.745 --> 00:00:31.245
<00:00:28.745>to <00:00:29.025>talk <00:00:29.305>about <00:00:29.585>rethinking <00:00:29.865>reactive <00:00:30.145>architectures

7
00:00:31.245 --> 00:00:32.325
<00:00:31.245>with <00:00:31.569>craft <00:00:31.893>quail <00:00:32.217>Today.

8
00:00:32.805 --> 00:00:34.645
<00:00:32.805>I <00:00:33.038>talked <00:00:33.271>a <00:00:33.505>lot <00:00:33.738>about <00:00:33.971>frontend <00:00:34.205>architectures,

9
00:00:34.685 --> 00:00:36.685
<00:00:34.685>a <00:00:35.035>lot <00:00:35.385>about <00:00:35.735>reactive <00:00:36.085>programming,

10
00:00:36.885 --> 00:00:38.645
<00:00:36.885>a <00:00:37.085>lot <00:00:37.285>about <00:00:37.485>the <00:00:37.684>concept <00:00:37.885>of <00:00:38.085>craft <00:00:38.285>quell.

11
00:00:38.645 --> 00:00:40.365
<00:00:38.645>And <00:00:38.878>now <00:00:39.111>I <00:00:39.345>finally <00:00:39.578>have <00:00:39.811>the <00:00:40.045>opportunity,

12
00:00:40.585 --> 00:00:42.605
<00:00:40.585>or <00:00:40.935>we <00:00:41.285>developers <00:00:41.635>invited <00:00:41.985>me

13
00:00:43.025 --> 00:00:45.805
<00:00:43.025>to <00:00:43.180>talk <00:00:43.336>about <00:00:43.491>all <00:00:43.647>this <00:00:43.802>together <00:00:43.958>in <00:00:44.113>one <00:00:44.269>single <00:00:44.425>session

14
00:00:45.985 --> 00:00:47.245
<00:00:45.985>to <00:00:46.363>streamline <00:00:46.741>all <00:00:47.119>this

15
00:00:47.265 --> 00:00:50.045
<00:00:47.265>to <00:00:47.440>one <00:00:47.615>session <00:00:47.790>streamline <00:00:47.965>perfect <00:00:48.140>word <00:00:48.315>in <00:00:48.490>this <00:00:48.665>context.

16
00:00:50.545 --> 00:00:51.765
<00:00:50.545>So <00:00:50.728>I'm <00:00:50.911>really <00:00:51.094>happy <00:00:51.277>to <00:00:51.460>guide <00:00:51.643>you

17
00:00:51.765 --> 00:00:53.325
<00:00:51.765>to <00:00:51.998>this <00:00:52.231>in <00:00:52.465>the <00:00:52.698>next <00:00:52.931>45 <00:00:53.165>minutes.

18
00:00:53.395 --> 00:00:57.165
<00:00:53.395>Yeah. <00:00:53.535>But <00:00:53.675>first <00:00:53.815>things <00:00:53.955>first, <00:00:54.095>uh, <00:00:54.235>my <00:00:54.375>name <00:00:54.515>is <00:00:54.655>David <00:00:54.795>Lightner.

19
00:00:57.225 --> 00:00:58.325
<00:00:57.225>I'm <00:00:57.555>coming <00:00:57.885>from <00:00:58.215>Vena.

20
00:00:58.325 --> 00:00:59.805
<00:00:58.325>Maybe <00:00:58.491>you <00:00:58.658>can <00:00:58.824>hear <00:00:58.991>it <00:00:59.157>also <00:00:59.324>on <00:00:59.490>the <00:00:59.657>Voice.

21
00:01:00.045 --> 00:01:01.685
<00:01:00.045>I <00:01:00.278>am, <00:01:00.511>I'm, <00:01:00.745>I'm <00:01:00.978>located <00:01:01.211>in <00:01:01.445>Vienna.

22
00:01:01.685 --> 00:01:04.805
<00:01:01.685>I'm <00:01:01.840>working <00:01:01.996>for <00:01:02.151>a <00:01:02.307>Viennese <00:01:02.462>company <00:01:02.618>as <00:01:02.773>a <00:01:02.929>coding <00:01:03.085>architect.

23
00:01:04.865 --> 00:01:07.685
<00:01:04.864>So <00:01:05.039>we <00:01:05.214>do <00:01:05.390>a <00:01:05.565>lot <00:01:05.740>of <00:01:05.914>technical <00:01:06.089>consulting, <00:01:06.265>reactive,

24
00:01:07.685 --> 00:01:10.845
<00:01:07.685>microservice, <00:01:07.918>architect, <00:01:08.151>just <00:01:08.385>graph, <00:01:08.618>graph, <00:01:08.851>ret, <00:01:09.085>Kafka,

25
00:01:10.945 --> 00:01:13.205
<00:01:10.945>modern <00:01:11.178>web <00:01:11.411>platform <00:01:11.645>tools <00:01:11.878>like <00:01:12.111>React <00:01:12.345>Wealth

26
00:01:13.465 --> 00:01:14.525
<00:01:13.465>and <00:01:13.655>so <00:01:13.846>on <00:01:14.037>and <00:01:14.228>so <00:01:14.419>forth.

27
00:01:15.425 --> 00:01:18.085
<00:01:15.425>But <00:01:15.580>the <00:01:15.736>main <00:01:15.891>goal <00:01:16.047>beside <00:01:16.202>all <00:01:16.358>this <00:01:16.513>technical <00:01:16.669>excellence <00:01:16.825>we

28
00:01:18.085 --> 00:01:20.685
<00:01:18.085>usually <00:01:18.240>bring <00:01:18.396>is <00:01:18.551>that <00:01:18.707>we <00:01:18.862>want <00:01:19.018>to <00:01:19.173>help <00:01:19.329>the <00:01:19.485>customer

29
00:01:20.825 --> 00:01:21.965
<00:01:20.825>to <00:01:21.167>build <00:01:21.509>great <00:01:21.851>products.

30
00:01:21.965 --> 00:01:24.325
<00:01:21.965>And <00:01:22.165>we <00:01:22.365>do <00:01:22.565>this <00:01:22.765>by <00:01:22.965>classical <00:01:23.165>technical <00:01:23.365>consulting

31
00:01:24.825 --> 00:01:27.365
<00:01:24.825>or <00:01:25.058>by <00:01:25.291>really <00:01:25.525>providing <00:01:25.758>full <00:01:25.991>teams, <00:01:26.225>um,

32
00:01:27.365 --> 00:01:30.805
<00:01:27.365>that <00:01:27.565>can <00:01:27.765>bring <00:01:27.964>technical <00:01:28.164>or <00:01:28.365>digital <00:01:28.565>initiatives <00:01:28.765>forward.

33
00:01:30.955 --> 00:01:35.085
<00:01:30.955>Yeah. <00:01:31.110>And <00:01:31.266>one <00:01:31.421>thing <00:01:31.577>we <00:01:31.732>realize <00:01:31.888>very <00:01:32.043>often <00:01:32.199>these <00:01:32.355>days

34
00:01:35.085 --> 00:01:37.445
<00:01:35.085>that <00:01:35.551>reactivity, <00:01:36.018>reactive <00:01:36.485>architectures,

35
00:01:37.445 --> 00:01:38.565
<00:01:37.445>reactive <00:01:38.453>programming,

36
00:01:38.705 --> 00:01:41.885
<00:01:38.705>all <00:01:38.880>this <00:01:39.054>reactiveness <00:01:39.230>we <00:01:39.405>see <00:01:39.580>out <00:01:39.755>in <00:01:39.929>software <00:01:40.105>engineering

37
00:01:42.785 --> 00:01:45.085
<00:01:42.785>is <00:01:43.065>kind <00:01:43.345>of <00:01:43.625>a <00:01:43.905>very <00:01:44.185>interesting,

38
00:01:45.365 --> 00:01:47.445
<00:01:45.365>I <00:01:45.598>would <00:01:45.831>call <00:01:46.065>it <00:01:46.298>password <00:01:46.531>for <00:01:46.765>manys.

39
00:01:47.445 --> 00:01:50.645
<00:01:47.445>And <00:01:47.561>I <00:01:47.678>would <00:01:47.794>like <00:01:47.911>to <00:01:48.028>dig <00:01:48.145>a <00:01:48.261>little <00:01:48.378>bit <00:01:48.494>deeper <00:01:48.611>into <00:01:48.728>the <00:01:48.845>concept

40
00:01:50.825 --> 00:01:54.405
<00:01:50.825>of <00:01:51.000>reactivity, <00:01:51.175>because <00:01:51.350>if <00:01:51.525>we <00:01:51.700>talk <00:01:51.875>about <00:01:52.050>reactive <00:01:52.225>reactors,

41
00:01:54.405 --> 00:01:55.845
<00:01:54.405>we <00:01:54.621>first <00:01:54.837>of <00:01:55.053>all <00:01:55.269>need <00:01:55.485>to <00:01:55.701>understand

42
00:01:55.845 --> 00:01:57.285
<00:01:55.845>what <00:01:56.277>reactive <00:01:56.709>basically <00:01:57.140>means.

43
00:01:57.285 --> 00:01:59.805
<00:01:57.285>And <00:01:57.425>as <00:01:57.565>I <00:01:57.705>said, <00:01:57.845>we <00:01:57.985>see <00:01:58.125>reactive <00:01:58.265>very <00:01:58.405>often <00:01:58.545>these <00:01:58.685>days.

44
00:02:00.425 --> 00:02:01.445
<00:02:00.425>We <00:02:00.654>see <00:02:00.884>it <00:02:01.113>in <00:02:01.342>react.

45
00:02:01.955 --> 00:02:05.245
<00:02:01.955>Well <00:02:02.130>already <00:02:02.304>the <00:02:02.480>name <00:02:02.655>says <00:02:02.830>it's <00:02:03.005>kind <00:02:03.179>of <00:02:03.355>reactive

46
00:02:05.245 --> 00:02:07.645
<00:02:05.245>or <00:02:05.420>the <00:02:05.595>logo <00:02:05.770>shows <00:02:05.945>a <00:02:06.120>little <00:02:06.295>bit <00:02:06.470>of <00:02:06.645>activity.

47
00:02:08.025 --> 00:02:10.405
<00:02:08.025>We <00:02:08.225>see <00:02:08.425>project <00:02:08.625>reactor <00:02:08.825>in <00:02:09.025>the <00:02:09.225>spring <00:02:09.425>ecosystem.

48
00:02:10.465 --> 00:02:14.005
<00:02:10.465>We <00:02:10.640>see <00:02:10.815>reactive <00:02:10.990>extensions, <00:02:11.165>um, <00:02:11.340>to <00:02:11.515>provide, <00:02:11.690>um, <00:02:11.865>reactive

49
00:02:14.575 --> 00:02:15.725
<00:02:14.575>extensions <00:02:15.092>for <00:02:15.609>most

50
00:02:15.725 --> 00:02:17.645
<00:02:15.725>of <00:02:15.924>the <00:02:16.125>programming <00:02:16.325>languages <00:02:16.525>we <00:02:16.725>have <00:02:16.924>these <00:02:17.125>days.

51
00:02:18.105 --> 00:02:20.885
<00:02:18.105>So <00:02:18.244>it <00:02:18.385>seems <00:02:18.524>there's <00:02:18.665>a <00:02:18.804>little <00:02:18.945>bit <00:02:19.084>of <00:02:19.225>pass, <00:02:19.364>a <00:02:19.505>lot

52
00:02:20.885 --> 00:02:23.485
<00:02:20.885>of <00:02:21.024>pass <00:02:21.165>actually, <00:02:21.304>I <00:02:21.445>would <00:02:21.584>say <00:02:21.725>going <00:02:21.864>on <00:02:22.005>in <00:02:22.144>this <00:02:22.285>directive.

53
00:02:23.825 --> 00:02:25.605
<00:02:23.825>So <00:02:24.105>what <00:02:24.385>does <00:02:24.665>reactivity <00:02:24.945>actually <00:02:25.225>mean?

54
00:02:26.545 --> 00:02:28.605
<00:02:26.545>Is <00:02:26.895>nothing <00:02:27.245>else <00:02:27.595>than <00:02:27.945>programming

55
00:02:28.605 --> 00:02:31.045
<00:02:28.605>and <00:02:28.885>designing <00:02:29.165>upon <00:02:29.445>asynchronous <00:02:29.725>status <00:02:30.005>streams.

56
00:02:31.075 --> 00:02:35.865
<00:02:31.075>Yeah. <00:02:31.274>And <00:02:31.475>to <00:02:31.674>understand <00:02:31.875>this, <00:02:32.075>we <00:02:32.274>really <00:02:32.475>need

57
00:02:35.865 --> 00:02:37.105
<00:02:35.865>to <00:02:36.144>start <00:02:36.423>with <00:02:36.702>the <00:02:36.981>basics.

58
00:02:37.105 --> 00:02:38.385
<00:02:37.105>We <00:02:37.393>really <00:02:37.680>need <00:02:37.969>to <00:02:38.257>understand

59
00:02:38.535 --> 00:02:40.345
<00:02:38.535>what <00:02:38.815>is <00:02:39.095>an <00:02:39.375>asynchronous <00:02:39.655>status <00:02:39.935>stream.

60
00:02:40.485 --> 00:02:43.105
<00:02:40.485>And <00:02:40.612>many <00:02:40.739>of <00:02:40.866>you <00:02:40.994>for <00:02:41.121>sure <00:02:41.248>will <00:02:41.375>understand <00:02:41.503>it <00:02:41.630>to <00:02:41.757>say, <00:02:41.885>okay,

61
00:02:43.145 --> 00:02:44.305
<00:02:43.145>I <00:02:43.406>know, <00:02:43.667>I <00:02:43.928>know <00:02:44.189>streams.

62
00:02:44.305 --> 00:02:46.905
<00:02:44.305>Yeah. <00:02:44.445>But <00:02:44.585>for <00:02:44.725>many, <00:02:44.865>or <00:02:45.005>at <00:02:45.145>least <00:02:45.285>as <00:02:45.425>is <00:02:45.565>our <00:02:45.705>observation

63
00:02:47.445 --> 00:02:51.705
<00:02:47.445>in <00:02:47.584>the <00:02:47.725>daily <00:02:47.864>doing <00:02:48.005>streams <00:02:48.144>are <00:02:48.285>still <00:02:48.424>kind <00:02:48.565>of <00:02:48.704>a <00:02:48.845>yeah,

64
00:02:52.365 --> 00:02:56.305
<00:02:52.365>not <00:02:52.520>so <00:02:52.676>well <00:02:52.831>known <00:02:52.987>term, <00:02:53.142>kind <00:02:53.298>of <00:02:53.453>a <00:02:53.609>woo-hoo <00:02:53.765>term

65
00:02:56.435 --> 00:02:58.745
<00:02:56.435>where <00:02:56.668>people <00:02:56.901>do <00:02:57.135>not <00:02:57.368>always <00:02:57.601>know <00:02:57.835>what,

66
00:02:58.775 --> 00:03:00.685
<00:02:58.775>what <00:02:59.055>we <00:02:59.335>really <00:02:59.615>mean <00:02:59.895>by <00:03:00.175>streams.

67
00:03:01.185 --> 00:03:03.405
<00:03:01.185>But <00:03:01.418>streams <00:03:01.651>are <00:03:01.885>very <00:03:02.118>natural <00:03:02.351>things. <00:03:02.585>Yeah.

68
00:03:04.285 --> 00:03:05.445
<00:03:04.285>A <00:03:04.546>a <00:03:04.807>very <00:03:05.067>natural <00:03:05.329>thing

69
00:03:05.445 --> 00:03:08.205
<00:03:05.445>because <00:03:05.620>if <00:03:05.795>you <00:03:05.970>think <00:03:06.144>about <00:03:06.320>programming <00:03:06.495>on <00:03:06.670>a <00:03:06.845>very

70
00:03:08.565 --> 00:03:09.645
<00:03:08.565>abstract <00:03:09.051>concept <00:03:09.537>Yeah.

71
00:03:09.995 --> 00:03:13.165
<00:03:09.995>Then <00:03:10.170>we <00:03:10.345>have <00:03:10.520>data <00:03:10.695>containers <00:03:10.870>on <00:03:11.045>two <00:03:11.220>different <00:03:11.395>axis.

72
00:03:13.265 --> 00:03:16.005
<00:03:13.265>We <00:03:13.392>have <00:03:13.519>them <00:03:13.646>on <00:03:13.774>space, <00:03:13.901>and <00:03:14.028>we <00:03:14.155>have <00:03:14.283>them <00:03:14.410>on <00:03:14.537>time. <00:03:14.665>Yeah.

73
00:03:16.945 --> 00:03:19.205
<00:03:16.945>And <00:03:17.144>if <00:03:17.345>we <00:03:17.545>now <00:03:17.745>think <00:03:17.945>in <00:03:18.144>singular <00:03:18.345>space

74
00:03:19.385 --> 00:03:23.045
<00:03:19.385>and <00:03:19.540>in <00:03:19.696>synchronous <00:03:19.851>time, <00:03:20.007>then <00:03:20.162>we <00:03:20.318>have <00:03:20.473>a <00:03:20.629>data <00:03:20.785>container,

75
00:03:23.045 --> 00:03:25.125
<00:03:23.045>which <00:03:23.245>we <00:03:23.445>tend <00:03:23.645>to <00:03:23.845>call <00:03:24.045>a <00:03:24.245>value <00:03:24.445>wall.

76
00:03:25.405 --> 00:03:29.805
<00:03:25.405>A <00:03:25.532>value, <00:03:25.659>yeah. <00:03:25.786>Mind <00:03:25.914>blowing. <00:03:26.041>But <00:03:26.168>basically <00:03:26.295>a <00:03:26.423>value <00:03:26.550>as <00:03:26.677>a <00:03:26.805>get.

77
00:03:29.805 --> 00:03:33.325
<00:03:29.805>And <00:03:29.945>the <00:03:30.085>setter, <00:03:30.225>if <00:03:30.365>we <00:03:30.505>now <00:03:30.645>move <00:03:30.785>in <00:03:30.925>space <00:03:31.065>from <00:03:31.205>singular

78
00:03:33.505 --> 00:03:36.765
<00:03:33.505>to <00:03:33.632>plu, <00:03:33.759>well, <00:03:33.886>what <00:03:34.014>we <00:03:34.141>usually <00:03:34.268>have <00:03:34.395>is <00:03:34.523>kind <00:03:34.650>of <00:03:34.777>a <00:03:34.905>collection

79
00:03:36.835 --> 00:03:38.565
<00:03:36.835>with <00:03:37.115>an <00:03:37.395>iterator <00:03:37.675>and <00:03:37.955>a <00:03:38.235>generator.

80
00:03:38.815 --> 00:03:41.725
<00:03:38.815>Right. <00:03:39.095>These <00:03:39.375>are <00:03:39.655>the <00:03:39.935>basic <00:03:40.215>ideas.

81
00:03:41.895 --> 00:03:44.605
<00:03:41.895>Every <00:03:42.070>program <00:03:42.245>line <00:03:42.420>supports <00:03:42.595>this <00:03:42.770>out <00:03:42.945>of <00:03:43.120>the <00:03:43.295>box.

82
00:03:44.665 --> 00:03:47.445
<00:03:44.665>So <00:03:44.864>we <00:03:45.065>have <00:03:45.265>this <00:03:45.465>concept <00:03:45.665>nearly <00:03:45.864>everywhere. <00:03:46.065>Yeah.

83
00:03:48.955 --> 00:03:52.295
<00:03:48.954>If <00:03:49.110>we <00:03:49.266>now <00:03:49.421>move <00:03:49.577>from <00:03:49.732>synchronous <00:03:49.888>time <00:03:50.043>to <00:03:50.199>asynchronous <00:03:50.355>time,

84
00:03:52.305 --> 00:03:54.095
<00:03:52.305>which <00:03:52.505>means <00:03:52.705>that <00:03:52.905>we <00:03:53.105>do <00:03:53.305>not <00:03:53.505>get <00:03:53.705>data

85
00:03:54.615 --> 00:03:57.255
<00:03:54.615>directly <00:03:54.790>once <00:03:54.965>we <00:03:55.140>request <00:03:55.315>it, <00:03:55.490>but <00:03:55.665>we <00:03:55.840>get <00:03:56.015>it

86
00:03:57.255 --> 00:04:00.135
<00:03:57.255>after <00:03:57.454>some <00:03:57.655>time, <00:03:57.855>we <00:03:58.055>usually <00:03:58.255>have <00:03:58.454>something <00:03:58.655>in

87
00:04:00.375 --> 00:04:01.655
<00:04:00.375>singular <00:04:01.527>space.

88
00:04:01.795 --> 00:04:04.295
<00:04:01.795>But <00:04:01.950>in <00:04:02.106>asynchronous <00:04:02.261>time, <00:04:02.417>which <00:04:02.572>we <00:04:02.728>tend <00:04:02.883>to <00:04:03.039>call <00:04:03.195>promise

89
00:04:05.125 --> 00:04:07.255
<00:04:05.125>because <00:04:05.475>it <00:04:05.825>promise, <00:04:06.175>promise <00:04:06.525>us

90
00:04:07.485 --> 00:04:09.815
<00:04:07.485>that <00:04:07.640>it <00:04:07.796>will <00:04:07.951>provide <00:04:08.107>us <00:04:08.262>some <00:04:08.418>value <00:04:08.573>in <00:04:08.729>the <00:04:08.885>future.

91
00:04:09.965 --> 00:04:11.015
<00:04:09.965>Doesn't <00:04:10.280>tell <00:04:10.595>us <00:04:10.910>when,

92
00:04:11.875 --> 00:04:14.335
<00:04:11.875>but <00:04:12.002>it <00:04:12.129>promises <00:04:12.256>you <00:04:12.384>will <00:04:12.511>get <00:04:12.638>it <00:04:12.765>at <00:04:12.893>some <00:04:13.020>point <00:04:13.147>in <00:04:13.275>time.

93
00:04:14.525 --> 00:04:17.055
<00:04:14.525>Yeah. <00:04:14.700>If <00:04:14.875>you <00:04:15.050>ever <00:04:15.225>worked <00:04:15.400>with <00:04:15.575>promise, <00:04:15.750>you <00:04:15.925>know

94
00:04:17.055 --> 00:04:18.615
<00:04:17.055>that <00:04:17.288>this <00:04:17.521>promise <00:04:17.755>is <00:04:17.988>not <00:04:18.221>always <00:04:18.454>true.

95
00:04:19.075 --> 00:04:21.935
<00:04:19.075>But <00:04:19.308>many <00:04:19.541>programming <00:04:19.774>languages, <00:04:20.008>many <00:04:20.241>ecosystems <00:04:20.474>come

96
00:04:21.935 --> 00:04:23.815
<00:04:21.935>with <00:04:22.168>pro <00:04:22.401>promises <00:04:22.635>out <00:04:22.868>of <00:04:23.101>the <00:04:23.335>box.

97
00:04:24.035 --> 00:04:26.135
<00:04:24.035>So <00:04:24.268>JavaScript, <00:04:24.501>for <00:04:24.735>example, <00:04:24.968>has <00:04:25.201>native <00:04:25.435>support

98
00:04:26.135 --> 00:04:28.535
<00:04:26.135>for <00:04:26.335>promises <00:04:26.534>in <00:04:26.735>our, <00:04:26.935>we <00:04:27.135>have <00:04:27.335>computable <00:04:27.534>features,

99
00:04:28.635 --> 00:04:32.055
<00:04:28.635>so <00:04:28.775>we <00:04:28.914>see <00:04:29.055>promises <00:04:29.195>be <00:04:29.335>baked <00:04:29.474>into <00:04:29.615>most <00:04:29.755>of <00:04:29.895>the <00:04:30.034>languages.

100
00:04:32.675 --> 00:04:37.455
<00:04:32.675>But <00:04:32.815>if <00:04:32.955>you <00:04:33.095>now <00:04:33.235>go <00:04:33.375>from <00:04:33.515>singular <00:04:33.655>space <00:04:33.795>to <00:04:33.935>plural <00:04:34.075>space,

101
00:04:37.755 --> 00:04:40.455
<00:04:37.755>and <00:04:37.988>from <00:04:38.221>synchronous <00:04:38.455>time <00:04:38.688>to <00:04:38.921>synchronous <00:04:39.155>time,

102
00:04:41.195 --> 00:04:43.485
<00:04:41.195>then <00:04:41.350>you <00:04:41.506>ultimately <00:04:41.661>end <00:04:41.817>up <00:04:41.972>in <00:04:42.128>the <00:04:42.283>world <00:04:42.439>of <00:04:42.594>streams.

103
00:04:43.865 --> 00:04:45.045
<00:04:43.865>So <00:04:44.219>streams <00:04:44.573>are <00:04:44.927>natural.

104
00:04:45.265 --> 00:04:46.885
<00:04:45.265>If <00:04:45.420>you, <00:04:45.576>if <00:04:45.731>you <00:04:45.887>take <00:04:46.042>a <00:04:46.198>look <00:04:46.353>at <00:04:46.509>this <00:04:46.664>graph,

105
00:04:46.945 --> 00:04:50.565
<00:04:46.945>you <00:04:47.085>see <00:04:47.224>a <00:04:47.365>stream <00:04:47.505>is <00:04:47.645>a <00:04:47.784>data <00:04:47.925>container <00:04:48.065>which <00:04:48.205>exists, <00:04:48.344>which,

106
00:04:50.565 --> 00:04:52.045
<00:04:50.565>which <00:04:51.009>always <00:04:51.453>existed, <00:04:51.897>right?

107
00:04:52.345 --> 00:04:54.325
<00:04:52.345>But <00:04:52.520>people <00:04:52.695>now <00:04:52.870>start <00:04:53.045>to <00:04:53.220>use <00:04:53.395>them <00:04:53.570>more <00:04:53.745>often.

108
00:04:55.145 --> 00:04:57.165
<00:04:55.145>And <00:04:55.378>we <00:04:55.611>see <00:04:55.844>that <00:04:56.078>many <00:04:56.311>programming <00:04:56.544>language,

109
00:04:57.165 --> 00:05:00.405
<00:04:57.165>many <00:04:57.340>ecosystems <00:04:57.515>didn't <00:04:57.690>come <00:04:57.865>with <00:04:58.040>native <00:04:58.215>support <00:04:58.390>for <00:04:58.565>streams.

110
00:05:00.405 --> 00:05:02.405
<00:05:00.405>This <00:05:00.638>is <00:05:00.871>why <00:05:01.104>we <00:05:01.338>introduced <00:05:01.571>reactive <00:05:01.804>extensions

111
00:05:02.405 --> 00:05:05.125
<00:05:02.405>where <00:05:02.684>we <00:05:02.965>provide <00:05:03.244>reactive <00:05:03.525>data <00:05:03.804>containers

112
00:05:05.125 --> 00:05:06.645
<00:05:05.125>for <00:05:05.467>nearly <00:05:05.808>all <00:05:06.151>programming <00:05:06.493>languages.

113
00:05:06.945 --> 00:05:10.925
<00:05:06.945>But <00:05:07.085>we <00:05:07.224>see <00:05:07.365>a <00:05:07.505>lot <00:05:07.645>of <00:05:07.784>ongoing <00:05:07.925>initiatives <00:05:08.065>in <00:05:08.205>most <00:05:08.344>ecosystems.

114
00:05:10.925 --> 00:05:13.645
<00:05:10.925>For <00:05:11.125>example, <00:05:11.325>Java <00:05:11.525>Project <00:05:11.725>Loom <00:05:11.925>with <00:05:12.125>virtual <00:05:12.325>threats,

115
00:05:13.655 --> 00:05:15.445
<00:05:13.655>which <00:05:14.005>actually <00:05:14.354>is <00:05:14.705>just <00:05:15.054>created,

116
00:05:15.585 --> 00:05:17.965
<00:05:15.585>or <00:05:15.740>one <00:05:15.896>of <00:05:16.051>the <00:05:16.207>main <00:05:16.362>goals <00:05:16.518>to <00:05:16.673>create <00:05:16.829>this <00:05:16.984>is

117
00:05:17.985 --> 00:05:21.445
<00:05:17.985>to <00:05:18.160>support <00:05:18.335>reactive <00:05:18.510>programming <00:05:18.685>better <00:05:18.860>in <00:05:19.035>the, <00:05:19.210>in <00:05:19.385>the,

118
00:05:21.465 --> 00:05:22.605
<00:05:21.465>in <00:05:21.807>the <00:05:22.149>Java <00:05:22.491>ecosystem.

119
00:05:22.605 --> 00:05:24.405
<00:05:22.605>Right? <00:05:22.885>So <00:05:23.165>this <00:05:23.445>is <00:05:23.725>streams, <00:05:24.005>right?

120
00:05:24.795 --> 00:05:26.885
<00:05:24.795>Very <00:05:25.075>simple, <00:05:25.355>just <00:05:25.635>a <00:05:25.915>basic <00:05:26.195>concept

121
00:05:26.905 --> 00:05:30.085
<00:05:26.905>of <00:05:27.080>a <00:05:27.255>data <00:05:27.429>container <00:05:27.604>in <00:05:27.780>Synchron <00:05:27.955>in <00:05:28.130>a <00:05:28.304>synchronous

122
00:05:30.085 --> 00:05:31.605
<00:05:30.085>time <00:05:30.541>and <00:05:30.997>approval <00:05:31.453>space.

123
00:05:32.865 --> 00:05:35.165
<00:05:32.865>But <00:05:33.020>what <00:05:33.176>has <00:05:33.331>this <00:05:33.487>all <00:05:33.642>to <00:05:33.798>do <00:05:33.953>with <00:05:34.109>reactive <00:05:34.265>programming?

124
00:05:35.725 --> 00:05:38.575
<00:05:35.725>Because <00:05:35.900>before <00:05:36.075>we <00:05:36.250>go <00:05:36.425>into <00:05:36.600>reactive <00:05:36.775>architectures, <00:05:36.950>we <00:05:37.125>need

125
00:05:38.575 --> 00:05:39.935
<00:05:38.575>to <00:05:38.779>talk <00:05:38.983>a <00:05:39.187>little <00:05:39.391>bit <00:05:39.595>about <00:05:39.799>reactive

126
00:05:39.935 --> 00:05:41.375
<00:05:39.935>programming <00:05:40.194>and <00:05:40.453>the <00:05:40.712>goals <00:05:40.971>behind <00:05:41.231>it.

127
00:05:42.405 --> 00:05:44.575
<00:05:42.405>Well, <00:05:42.604>let's <00:05:42.804>start <00:05:43.005>with <00:05:43.205>a <00:05:43.405>very <00:05:43.604>simple <00:05:43.804>example.

128
00:05:45.425 --> 00:05:49.535
<00:05:45.425>Let's <00:05:45.580>start <00:05:45.736>with <00:05:45.891>the <00:05:46.047>idea <00:05:46.202>of <00:05:46.358>three <00:05:46.513>lines <00:05:46.669>of <00:05:46.825>code.

129
00:05:50.265 --> 00:05:52.895
<00:05:50.265>Where <00:05:50.440>we <00:05:50.615>have <00:05:50.789>a <00:05:50.965>counter, <00:05:51.140>where <00:05:51.315>we <00:05:51.490>have <00:05:51.664>doubled,

130
00:05:53.395 --> 00:05:55.215
<00:05:53.395>and <00:05:53.628>the <00:05:53.861>counter <00:05:54.094>is <00:05:54.328>set <00:05:54.561>to <00:05:54.794>one

131
00:05:55.215 --> 00:05:57.525
<00:05:55.215>and <00:05:55.448>doubled <00:05:55.681>is <00:05:55.915>counter <00:05:56.148>multiplied <00:05:56.381>by <00:05:56.615>two.

132
00:05:57.865 --> 00:06:00.445
<00:05:57.865>So <00:05:58.005>doubled <00:05:58.145>in <00:05:58.285>this <00:05:58.425>situation <00:05:58.565>would <00:05:58.705>end <00:05:58.845>up <00:05:58.985>in <00:05:59.125>two, <00:05:59.265>right?

133
00:06:01.505 --> 00:06:05.005
<00:06:01.505>If <00:06:01.645>we <00:06:01.784>now <00:06:01.925>change <00:06:02.065>the <00:06:02.205>counter <00:06:02.344>to <00:06:02.485>three, <00:06:02.625>what <00:06:02.765>will <00:06:02.905>happen?

134
00:06:06.365 --> 00:06:07.455
<00:06:06.365>Well, <00:06:06.855>basically <00:06:07.346>nothing.

135
00:06:07.765 --> 00:06:09.295
<00:06:07.765>Well, <00:06:07.961>we <00:06:08.158>set <00:06:08.355>it <00:06:08.551>the <00:06:08.748>counter <00:06:08.945>to <00:06:09.142>three,

136
00:06:09.315 --> 00:06:11.255
<00:06:09.315>but <00:06:09.548>the <00:06:09.781>doubled <00:06:10.015>still <00:06:10.248>stays <00:06:10.481>at <00:06:10.715>two.

137
00:06:11.875 --> 00:06:14.695
<00:06:11.875>So <00:06:12.002>if <00:06:12.129>we <00:06:12.256>want <00:06:12.384>to <00:06:12.511>update <00:06:12.638>it <00:06:12.765>double, <00:06:12.893>what <00:06:13.020>we <00:06:13.147>actually <00:06:13.275>need

138
00:06:14.695 --> 00:06:16.535
<00:06:14.695>to <00:06:14.928>do <00:06:15.161>is <00:06:15.395>we <00:06:15.628>need <00:06:15.861>to <00:06:16.094>reassign

139
00:06:16.535 --> 00:06:18.335
<00:06:16.535>to <00:06:16.815>double <00:06:17.095>counter <00:06:17.375>multiplied <00:06:17.655>by <00:06:17.935>two.

140
00:06:20.145 --> 00:06:23.765
<00:06:20.145>And <00:06:20.320>this <00:06:20.495>relation <00:06:20.669>between <00:06:20.844>counter <00:06:21.020>and <00:06:21.195>doubles <00:06:21.370>is <00:06:21.544>implicit.

141
00:06:24.115 --> 00:06:27.005
<00:06:24.115>It's, <00:06:24.255>it's <00:06:24.395>just <00:06:24.535>an <00:06:24.675>idea <00:06:24.815>in <00:06:24.955>the <00:06:25.095>mind <00:06:25.235>of <00:06:25.375>the <00:06:25.515>programmers,

142
00:06:28.105 --> 00:06:30.365
<00:06:28.105>but <00:06:28.305>it <00:06:28.505>should <00:06:28.705>be <00:06:28.905>baked <00:06:29.105>into <00:06:29.305>the <00:06:29.505>language.

143
00:06:30.465 --> 00:06:31.925
<00:06:30.465>It <00:06:30.727>should <00:06:30.990>exist <00:06:31.253>for <00:06:31.516>all <00:06:31.779>time.

144
00:06:31.925 --> 00:06:33.765
<00:06:31.925>That, <00:06:32.125>that's, <00:06:32.325>that's <00:06:32.525>the <00:06:32.725>re <00:06:32.925>request <00:06:33.125>from <00:06:33.325>the

145
00:06:33.805 --> 00:06:34.965
<00:06:33.805>reactive <00:06:34.849>community.

146
00:06:35.775 --> 00:06:38.995
<00:06:35.775>So <00:06:35.914>they <00:06:36.054>say <00:06:36.195>the <00:06:36.335>counter <00:06:36.474>and <00:06:36.614>double <00:06:36.755>should <00:06:36.895>be <00:06:37.034>bound, <00:06:37.174>right?

147
00:06:39.695 --> 00:06:41.155
<00:06:39.695>And <00:06:40.023>from <00:06:40.352>very <00:06:40.680>old <00:06:41.008>idea

148
00:06:41.155 --> 00:06:43.795
<00:06:41.155>and <00:06:41.354>reactive <00:06:41.554>programming <00:06:41.755>is <00:06:41.955>the <00:06:42.155>so-called <00:06:42.354>destiny <00:06:42.554>operator.

149
00:06:44.845 --> 00:06:48.335
<00:06:44.845>Yeah. <00:06:45.045>There's <00:06:45.245>lots <00:06:45.445>of <00:06:45.645>writing <00:06:45.845>about <00:06:46.045>destiny <00:06:46.245>operator

150
00:06:48.355 --> 00:06:50.455
<00:06:48.355>and <00:06:48.530>how <00:06:48.705>it <00:06:48.880>could <00:06:49.055>be <00:06:49.230>implemented <00:06:49.405>here, <00:06:49.580>just <00:06:49.755>here,

151
00:06:50.455 --> 00:06:52.815
<00:06:50.455>a <00:06:50.610>simple <00:06:50.766>example <00:06:50.921>on <00:06:51.077>line <00:06:51.232>two <00:06:51.388>where <00:06:51.543>we <00:06:51.699>say, <00:06:51.854>okay,

152
00:06:53.195 --> 00:06:56.175
<00:06:53.195>double <00:06:53.370>is <00:06:53.545>bound <00:06:53.719>to <00:06:53.895>count <00:06:54.070>the <00:06:54.245>multiplied <00:06:54.420>by <00:06:54.594>two.

153
00:06:56.175 --> 00:06:57.695
<00:06:56.175>You <00:06:56.370>see, <00:06:56.565>it's <00:06:56.761>not <00:06:56.956>just <00:06:57.152>an <00:06:57.347>equal <00:06:57.543>sign.

154
00:06:57.965 --> 00:06:59.575
<00:06:57.965>It's <00:06:58.315>the <00:06:58.665>destiny <00:06:59.015>operator <00:06:59.365>here.

155
00:07:00.315 --> 00:07:02.215
<00:07:00.315>And <00:07:00.490>if <00:07:00.665>we <00:07:00.840>now <00:07:01.015>set <00:07:01.190>the <00:07:01.365>counter <00:07:01.540>to <00:07:01.715>three

156
00:07:02.595 --> 00:07:05.095
<00:07:02.595>and <00:07:02.828>then <00:07:03.061>check <00:07:03.295>doubled, <00:07:03.528>it'll <00:07:03.761>be <00:07:03.995>six.

157
00:07:05.125 --> 00:07:08.055
<00:07:05.125>Because <00:07:05.475>we <00:07:05.825>bound <00:07:06.175>double <00:07:06.525>always

158
00:07:08.075 --> 00:07:09.895
<00:07:08.075>to <00:07:08.354>the <00:07:08.635>current <00:07:08.914>value <00:07:09.195>of <00:07:09.474>counter.

159
00:07:10.775 --> 00:07:12.875
<00:07:10.775>And <00:07:10.950>if <00:07:11.125>this <00:07:11.299>is <00:07:11.474>just <00:07:11.650>an <00:07:11.825>abstract <00:07:12.000>example, <00:07:12.174>let's,

160
00:07:12.875 --> 00:07:14.515
<00:07:12.875>let's <00:07:13.075>take <00:07:13.275>a <00:07:13.475>look <00:07:13.675>at <00:07:13.875>real <00:07:14.075>world <00:07:14.275>example

161
00:07:14.515 --> 00:07:17.315
<00:07:14.515>because <00:07:14.748>we <00:07:14.981>already, <00:07:15.215>as <00:07:15.448>I <00:07:15.681>said, <00:07:15.914>many

162
00:07:17.315 --> 00:07:19.475
<00:07:17.315>of <00:07:17.490>us <00:07:17.665>do <00:07:17.840>reactive <00:07:18.015>programming <00:07:18.190>on <00:07:18.365>a <00:07:18.540>daily <00:07:18.715>basis.

163
00:07:19.575 --> 00:07:23.085
<00:07:19.575>If <00:07:19.775>you, <00:07:19.974>for <00:07:20.175>example, <00:07:20.375>work, <00:07:20.575>um, <00:07:20.775>with <00:07:20.974>Angular

164
00:07:24.055 --> 00:07:27.155
<00:07:24.055>or <00:07:24.255>with, <00:07:24.455>with, <00:07:24.655>with <00:07:24.855>other <00:07:25.055>reactive <00:07:25.255>extension <00:07:25.455>tools,

165
00:07:27.975 --> 00:07:29.555
<00:07:27.975>we <00:07:28.325>can <00:07:28.675>use <00:07:29.025>this <00:07:29.375>concepts,

166
00:07:30.015 --> 00:07:33.035
<00:07:30.015>but <00:07:30.142>they <00:07:30.269>always <00:07:30.396>work <00:07:30.524>with <00:07:30.651>kind <00:07:30.778>of <00:07:30.905>a <00:07:31.033>stream <00:07:31.160>under <00:07:31.287>the <00:07:31.414>hood.

167
00:07:33.055 --> 00:07:35.115
<00:07:33.055>And <00:07:33.230>this <00:07:33.405>is <00:07:33.580>why <00:07:33.755>I <00:07:33.930>showed <00:07:34.105>you <00:07:34.280>streams <00:07:34.455>before,

168
00:07:35.385 --> 00:07:37.835
<00:07:35.385>because <00:07:35.540>if <00:07:35.696>you <00:07:35.851>now <00:07:36.007>take <00:07:36.162>a <00:07:36.318>look <00:07:36.473>at <00:07:36.629>this, <00:07:36.784>what

169
00:07:37.865 --> 00:07:41.075
<00:07:37.865>what <00:07:38.020>usually <00:07:38.176>happens <00:07:38.331>is <00:07:38.487>that <00:07:38.642>counter <00:07:38.798>is <00:07:38.953>a <00:07:39.109>stream, <00:07:39.265>right?

170
00:07:41.425 --> 00:07:44.035
<00:07:41.425>Counter <00:07:41.580>is <00:07:41.736>a <00:07:41.891>stream <00:07:42.047>with <00:07:42.202>an <00:07:42.358>initial <00:07:42.513>value <00:07:42.669>of <00:07:42.825>one,

171
00:07:45.525 --> 00:07:47.625
<00:07:45.525>and <00:07:45.804>doubled <00:07:46.085>is <00:07:46.364>a <00:07:46.645>transformed <00:07:46.924>stream.

172
00:07:48.165 --> 00:07:51.585
<00:07:48.165>We <00:07:48.340>take <00:07:48.515>the <00:07:48.690>counter <00:07:48.865>stream, <00:07:49.040>transform <00:07:49.215>it, <00:07:49.390>map <00:07:49.565>it.

173
00:07:51.725 --> 00:07:53.545
<00:07:51.725>So <00:07:52.005>take <00:07:52.285>each <00:07:52.565>value, <00:07:52.845>multiply <00:07:53.125>it

174
00:07:53.545 --> 00:07:54.825
<00:07:53.545>by <00:07:53.775>two, <00:07:54.005>and <00:07:54.236>get <00:07:54.466>another <00:07:54.697>stream.

175
00:07:55.605 --> 00:07:57.905
<00:07:55.605>In <00:07:55.780>this <00:07:55.955>situation, <00:07:56.130>the <00:07:56.305>stream <00:07:56.480>would <00:07:56.655>have <00:07:56.830>the <00:07:57.005>value.

176
00:07:58.005 --> 00:08:02.065
<00:07:58.005>Two, <00:07:58.160>if <00:07:58.316>you <00:07:58.471>now <00:07:58.627>assign <00:07:58.782>a <00:07:58.938>new <00:07:59.093>value <00:07:59.249>to <00:07:59.405>counter,

177
00:08:02.365 --> 00:08:05.345
<00:08:02.365>for <00:08:02.540>example <00:08:02.715>three, <00:08:02.890>we <00:08:03.065>will <00:08:03.240>put <00:08:03.415>this <00:08:03.590>value <00:08:03.765>into

178
00:08:05.345 --> 00:08:06.745
<00:08:05.345>the <00:08:05.765>existing <00:08:06.185>stream <00:08:06.605>counter.

179
00:08:07.165 --> 00:08:10.465
<00:08:07.165>And <00:08:07.365>this <00:08:07.565>will <00:08:07.765>automatically <00:08:07.965>update <00:08:08.165>the <00:08:08.365>double <00:08:08.565>stream

180
00:08:10.695 --> 00:08:13.385
<00:08:10.695>because <00:08:10.895>it's <00:08:11.094>just <00:08:11.295>subscribing <00:08:11.495>to <00:08:11.695>the <00:08:11.895>previous <00:08:12.094>stream

181
00:08:13.725 --> 00:08:15.985
<00:08:13.725>and <00:08:14.005>transforming, <00:08:14.285>transforming <00:08:14.565>it <00:08:14.845>by <00:08:15.125>map,

182
00:08:16.285 --> 00:08:18.505
<00:08:16.285>and <00:08:16.485>then <00:08:16.685>putting <00:08:16.885>six <00:08:17.085>into <00:08:17.285>the <00:08:17.485>double <00:08:17.685>stream.

183
00:08:20.465 --> 00:08:23.205
<00:08:20.465>So <00:08:20.640>this <00:08:20.815>is <00:08:20.989>how <00:08:21.164>the <00:08:21.340>destiny <00:08:21.515>operators <00:08:21.690>usually <00:08:21.864>implemented.

184
00:08:23.545 --> 00:08:24.885
<00:08:23.545>And <00:08:23.786>as <00:08:24.027>I <00:08:24.268>said, <00:08:24.509>already, <00:08:24.751>some

185
00:08:24.885 --> 00:08:27.365
<00:08:24.885>of <00:08:25.025>us <00:08:25.164>are <00:08:25.305>working <00:08:25.445>on <00:08:25.585>a <00:08:25.724>daily <00:08:25.865>basis <00:08:26.005>with <00:08:26.145>this <00:08:26.284>already.

186
00:08:27.795 --> 00:08:29.895
<00:08:27.795>Because <00:08:28.145>if <00:08:28.495>we <00:08:28.845>now <00:08:29.195>go

187
00:08:29.975 --> 00:08:33.125
<00:08:29.975>and <00:08:30.208>say, <00:08:30.441>okay, <00:08:30.675>doubled <00:08:30.908>is <00:08:31.141>six, <00:08:31.375>right?

188
00:08:33.125 --> 00:08:36.045
<00:08:33.125>Because <00:08:33.280>we <00:08:33.436>updated <00:08:33.591>the <00:08:33.747>count <00:08:33.902>in <00:08:34.058>a <00:08:34.213>way <00:08:34.369>to <00:08:34.525>three

189
00:08:36.045 --> 00:08:37.165
<00:08:36.044>and <00:08:36.296>doubled <00:08:36.549>will <00:08:36.800>be <00:08:37.053>six.

190
00:08:37.835 --> 00:08:39.295
<00:08:37.835>In <00:08:38.097>real <00:08:38.360>world <00:08:38.623>examples, <00:08:38.886>I <00:08:39.149>said,

191
00:08:39.295 --> 00:08:40.935
<00:08:39.294>with <00:08:39.495>IX <00:08:39.694>js, <00:08:39.895>this <00:08:40.094>would <00:08:40.294>look <00:08:40.495>like <00:08:40.694>this.

192
00:08:41.785 --> 00:08:43.045
<00:08:41.784>We <00:08:42.011>would <00:08:42.238>have <00:08:42.465>a <00:08:42.692>behavior <00:08:42.919>subject

193
00:08:43.075 --> 00:08:45.085
<00:08:43.075>with <00:08:43.275>an <00:08:43.475>initial <00:08:43.675>value <00:08:43.875>of <00:08:44.075>one <00:08:44.275>online <00:08:44.475>one.

194
00:08:45.385 --> 00:08:47.925
<00:08:45.385>So <00:08:45.525>this <00:08:45.665>is <00:08:45.805>a <00:08:45.944>stream <00:08:46.085>with <00:08:46.225>an <00:08:46.365>initial <00:08:46.505>value <00:08:46.645>of <00:08:46.785>one,

195
00:08:48.855 --> 00:08:50.245
<00:08:48.855>we'll <00:08:49.272>have <00:08:49.689>a <00:08:50.106>doubled,

196
00:08:50.335 --> 00:08:52.765
<00:08:50.335>which <00:08:50.535>is <00:08:50.735>just <00:08:50.935>a <00:08:51.135>transformed <00:08:51.335>stream <00:08:51.535>of <00:08:51.735>counter.

197
00:08:52.865 --> 00:08:56.245
<00:08:52.865>So <00:08:52.992>we <00:08:53.119>take <00:08:53.246>the <00:08:53.374>counter <00:08:53.501>stream, <00:08:53.628>map <00:08:53.755>it, <00:08:53.883>multiply <00:08:54.010>it <00:08:54.137>by <00:08:54.265>two,

198
00:08:56.425 --> 00:08:57.765
<00:08:56.425>all <00:08:56.666>the <00:08:56.907>values <00:08:57.148>within <00:08:57.389>the <00:08:57.631>stream.

199
00:08:58.345 --> 00:09:01.805
<00:08:58.345>And <00:08:58.472>if <00:08:58.599>we <00:08:58.726>change <00:08:58.854>the <00:08:58.981>counter, <00:08:59.108>we <00:08:59.235>just <00:08:59.363>emit <00:08:59.490>the <00:08:59.617>new <00:08:59.745>value

200
00:09:01.865 --> 00:09:04.045
<00:09:01.865>to <00:09:02.145>it <00:09:02.425>in <00:09:02.705>this <00:09:02.985>situation <00:09:03.265>three.

201
00:09:04.705 --> 00:09:07.565
<00:09:04.705>And <00:09:04.832>if <00:09:04.959>we <00:09:05.086>then <00:09:05.214>insert <00:09:05.341>it, <00:09:05.468>we'll <00:09:05.595>see <00:09:05.723>double <00:09:05.850>value <00:09:05.977>to <00:09:06.105>six.

202
00:09:08.715 --> 00:09:10.455
<00:09:08.715>And <00:09:08.948>that's <00:09:09.181>reactive <00:09:09.415>program <00:09:09.648>in <00:09:09.881>its <00:09:10.115>heart

203
00:09:10.755 --> 00:09:13.735
<00:09:10.755>by <00:09:10.955>using <00:09:11.155>streams <00:09:11.355>in <00:09:11.555>the <00:09:11.755>form <00:09:11.955>of <00:09:12.155>ix,

204
00:09:13.735 --> 00:09:15.655
<00:09:13.735>JavaScript <00:09:14.201>in <00:09:14.668>this <00:09:15.135>situation.

205
00:09:16.355 --> 00:09:21.125
<00:09:16.355>And <00:09:16.510>more <00:09:16.666>modern <00:09:16.821>frameworks <00:09:16.977>even <00:09:17.132>bring <00:09:17.288>this <00:09:17.443>a <00:09:17.599>step <00:09:17.755>further

206
00:09:21.125 --> 00:09:23.205
<00:09:21.125>because <00:09:21.325>you <00:09:21.525>see <00:09:21.725>it's <00:09:21.925>kind <00:09:22.125>of <00:09:22.325>RB <00:09:22.525>here.

207
00:09:23.505 --> 00:09:26.605
<00:09:23.505>And <00:09:23.660>for <00:09:23.816>example, <00:09:23.971>Selter <00:09:24.127>very <00:09:24.282>modern <00:09:24.438>web <00:09:24.593>framework <00:09:24.749>these <00:09:24.905>days

208
00:09:27.015 --> 00:09:29.125
<00:09:27.015>tries <00:09:27.215>to <00:09:27.415>introduce <00:09:27.615>the <00:09:27.814>destiny, <00:09:28.015>operate <00:09:28.215>in <00:09:28.415>a,

209
00:09:29.125 --> 00:09:32.925
<00:09:29.125>in <00:09:29.252>a <00:09:29.379>very <00:09:29.506>simple <00:09:29.634>but <00:09:29.761>but <00:09:29.888>beautiful <00:09:30.015>way <00:09:30.143>to <00:09:30.270>just <00:09:30.397>say, <00:09:30.525>okay,

210
00:09:33.155 --> 00:09:36.605
<00:09:33.155>each <00:09:33.310>value, <00:09:33.466>which <00:09:33.621>is <00:09:33.777>prefix, <00:09:33.932>prefixed <00:09:34.088>with <00:09:34.243>the <00:09:34.399>dollar <00:09:34.555>sign,

211
00:09:37.275 --> 00:09:39.325
<00:09:37.275>will <00:09:37.741>automatically <00:09:38.208>be <00:09:38.675>bound.

212
00:09:39.745 --> 00:09:42.405
<00:09:39.745>So <00:09:39.900>in <00:09:40.056>this <00:09:40.211>situation, <00:09:40.367>double <00:09:40.522>will <00:09:40.678>be <00:09:40.833>bound <00:09:40.989>to <00:09:41.145>counter

213
00:09:42.405 --> 00:09:44.885
<00:09:42.405>because <00:09:42.560>we <00:09:42.716>put <00:09:42.871>the <00:09:43.027>dollar <00:09:43.182>sign <00:09:43.338>in <00:09:43.493>front <00:09:43.649>of <00:09:43.805>double.

214
00:09:46.235 --> 00:09:48.695
<00:09:46.235>And <00:09:46.435>that's <00:09:46.635>the <00:09:46.835>main <00:09:47.035>idea <00:09:47.235>of <00:09:47.435>reactive <00:09:47.635>programming.

215
00:09:48.795 --> 00:09:50.015
<00:09:48.795>That's <00:09:49.069>all <00:09:49.343>it <00:09:49.618>is, <00:09:49.893>right?

216
00:09:51.015 --> 00:09:55.395
<00:09:51.015>So <00:09:51.215>we <00:09:51.415>make <00:09:51.615>this <00:09:51.814>binding <00:09:52.015>between <00:09:52.215>values <00:09:52.415>explicit.

217
00:09:56.675 --> 00:09:59.495
<00:09:56.675>So <00:09:56.875>the <00:09:57.074>reactive <00:09:57.275>pro <00:09:57.474>powering <00:09:57.675>is <00:09:57.875>based <00:09:58.074>on

218
00:10:00.015 --> 00:10:02.335
<00:10:00.015>synchronous <00:10:00.365>streams, <00:10:00.715>which <00:10:01.064>propagate <00:10:01.415>change.

219
00:10:02.795 --> 00:10:06.055
<00:10:02.795>So <00:10:02.922>when <00:10:03.049>we <00:10:03.176>want <00:10:03.304>to <00:10:03.431>propagate <00:10:03.558>change, <00:10:03.685>we <00:10:03.813>talk <00:10:03.940>from <00:10:04.067>a <00:10:04.194>caller

220
00:10:06.475 --> 00:10:09.615
<00:10:06.475>to <00:10:06.630>stream <00:10:06.786>and <00:10:06.941>we <00:10:07.097>observe <00:10:07.252>from <00:10:07.408>the <00:10:07.563>receiver <00:10:07.719>the <00:10:07.875>stream.

221
00:10:10.115 --> 00:10:12.815
<00:10:10.115>And <00:10:10.315>whenever <00:10:10.515>we <00:10:10.715>kind <00:10:10.915>of <00:10:11.115>need <00:10:11.315>a <00:10:11.515>change,

222
00:10:13.205 --> 00:10:16.815
<00:10:13.205>then <00:10:13.438>the <00:10:13.671>receiver <00:10:13.905>automatically <00:10:14.138>gets <00:10:14.371>pushed <00:10:14.605>instead

223
00:10:17.035 --> 00:10:18.855
<00:10:17.035>of <00:10:17.314>needing <00:10:17.594>to <00:10:17.875>pull <00:10:18.155>this <00:10:18.435>change.

224
00:10:20.375 --> 00:10:23.875
<00:10:20.375>So <00:10:20.502>if <00:10:20.629>we <00:10:20.756>move <00:10:20.884>this <00:10:21.011>concept <00:10:21.138>a <00:10:21.265>little <00:10:21.393>bit <00:10:21.520>higher <00:10:21.647>to <00:10:21.775>the,

225
00:10:23.875 --> 00:10:26.035
<00:10:23.875>to <00:10:24.108>a <00:10:24.341>concrete <00:10:24.575>example <00:10:24.808>of <00:10:25.041>software <00:10:25.275>design,

226
00:10:26.365 --> 00:10:29.555
<00:10:26.365>let's <00:10:26.505>assume <00:10:26.645>we <00:10:26.785>build <00:10:26.925>a <00:10:27.065>mobile <00:10:27.205>client, <00:10:27.345>a <00:10:27.485>a <00:10:27.625>male <00:10:27.765>client.

227
00:10:29.705 --> 00:10:32.395
<00:10:29.705>Yeah. <00:10:29.860>Let's <00:10:30.016>assume <00:10:30.171>we <00:10:30.327>build <00:10:30.482>a <00:10:30.638>mail <00:10:30.793>client <00:10:30.949>like <00:10:31.105>Gmail

228
00:10:32.535 --> 00:10:34.995
<00:10:32.535>or <00:10:32.735>many <00:10:32.935>others, <00:10:33.135>yet <00:10:33.334>another <00:10:33.535>email <00:10:33.735>service, <00:10:33.935>right?

229
00:10:35.775 --> 00:10:37.715
<00:10:35.775>And <00:10:36.008>let's <00:10:36.241>assume <00:10:36.475>on <00:10:36.708>this <00:10:36.941>email <00:10:37.175>service,

230
00:10:37.815 --> 00:10:39.755
<00:10:37.815>you <00:10:38.015>see <00:10:38.215>the <00:10:38.415>emails <00:10:38.615>which <00:10:38.815>you <00:10:39.015>user <00:10:39.215>has.

231
00:10:41.255 --> 00:10:43.475
<00:10:41.255>So <00:10:41.395>in <00:10:41.535>this <00:10:41.675>situation, <00:10:41.814>we <00:10:41.955>have <00:10:42.095>one <00:10:42.235>new <00:10:42.375>email, <00:10:42.515>a <00:10:42.655>list

232
00:10:43.475 --> 00:10:44.995
<00:10:43.475>of <00:10:43.703>emails, <00:10:43.931>and <00:10:44.159>at <00:10:44.387>the <00:10:44.615>bottom <00:10:44.843>we

233
00:10:44.995 --> 00:10:46.115
<00:10:44.995>see <00:10:45.196>the <00:10:45.398>amount <00:10:45.599>of <00:10:45.801>all <00:10:46.003>emails.

234
00:10:46.495 --> 00:10:48.635
<00:10:46.495>So <00:10:46.670>if <00:10:46.845>we <00:10:47.020>now <00:10:47.195>want <00:10:47.370>to <00:10:47.545>reload <00:10:47.720>those <00:10:47.895>emails,

235
00:10:48.695 --> 00:10:50.635
<00:10:48.695>we <00:10:48.928>would <00:10:49.161>introduce <00:10:49.395>a <00:10:49.628>reload <00:10:49.861>button, <00:10:50.095>right?

236
00:10:51.305 --> 00:10:53.315
<00:10:51.305>This <00:10:51.584>reload <00:10:51.864>button <00:10:52.145>would <00:10:52.425>actually <00:10:52.704>go

237
00:10:53.315 --> 00:10:54.515
<00:10:53.315>to <00:10:53.585>kind <00:10:53.855>of <00:10:54.125>a <00:10:54.395>controller.

238
00:10:54.985 --> 00:10:57.315
<00:10:54.985>This <00:10:55.185>controller <00:10:55.385>would <00:10:55.585>maybe <00:10:55.785>store <00:10:55.985>the <00:10:56.185>current <00:10:56.385>emails,

239
00:10:57.725 --> 00:11:00.835
<00:10:57.725>would <00:10:57.852>then <00:10:57.979>go <00:10:58.106>to <00:10:58.234>a <00:10:58.361>rest <00:10:58.488>client <00:10:58.615>would <00:10:58.743>ask <00:10:58.870>for <00:10:58.997>new <00:10:59.125>emails,

240
00:11:00.885 --> 00:11:03.795
<00:11:00.885>would <00:11:01.165>update <00:11:01.444>its <00:11:01.725>records <00:11:02.005>of <00:11:02.285>emails,

241
00:11:03.975 --> 00:11:06.875
<00:11:03.975>and <00:11:04.175>would <00:11:04.375>kind <00:11:04.575>of <00:11:04.775>trigger <00:11:04.975>the <00:11:05.175>UI <00:11:05.375>drop.

242
00:11:06.935 --> 00:11:09.315
<00:11:06.935>It <00:11:07.135>would <00:11:07.334>go <00:11:07.535>to <00:11:07.734>all <00:11:07.935>the <00:11:08.135>UI <00:11:08.334>elements

243
00:11:09.785 --> 00:11:11.475
<00:11:09.785>that <00:11:10.064>are <00:11:10.344>interested <00:11:10.625>in <00:11:10.905>the <00:11:11.185>CMS

244
00:11:11.475 --> 00:11:13.915
<00:11:11.475>and <00:11:11.650>would <00:11:11.825>say, <00:11:12.000>Hey, <00:11:12.175>cool, <00:11:12.350>opt <00:11:12.525>this <00:11:12.700>UI <00:11:12.875>element,

245
00:11:14.135 --> 00:11:16.435
<00:11:14.135>opt <00:11:14.310>this <00:11:14.485>U <00:11:14.660>element <00:11:14.835>and <00:11:15.010>update <00:11:15.185>this <00:11:15.360>U <00:11:15.535>element.

246
00:11:18.605 --> 00:11:20.425
<00:11:18.605>If <00:11:18.780>you <00:11:18.955>would <00:11:19.130>build <00:11:19.305>this <00:11:19.480>in <00:11:19.655>a <00:11:19.830>reactive <00:11:20.005>manner,

247
00:11:20.845 --> 00:11:23.425
<00:11:20.845>the <00:11:21.000>first <00:11:21.156>thing <00:11:21.311>that <00:11:21.467>would <00:11:21.622>change <00:11:21.778>is <00:11:21.933>that <00:11:22.089>you <00:11:22.245>basically,

248
00:11:23.585 --> 00:11:24.945
<00:11:23.585>I <00:11:23.789>guess, <00:11:23.993>wouldn't <00:11:24.197>have <00:11:24.401>a <00:11:24.605>wheel <00:11:24.809>button

249
00:11:25.935 --> 00:11:27.505
<00:11:25.935>because <00:11:26.214>you <00:11:26.494>would <00:11:26.775>have <00:11:27.055>a <00:11:27.334>stream,

250
00:11:28.205 --> 00:11:31.665
<00:11:28.205>and <00:11:28.345>this <00:11:28.485>stream <00:11:28.625>would <00:11:28.765>contain <00:11:28.905>all <00:11:29.045>the <00:11:29.185>emails, <00:11:29.325>all <00:11:29.465>the <00:11:29.605>emails

251
00:11:31.665 --> 00:11:33.025
<00:11:31.665>that <00:11:31.909>are <00:11:32.154>relevant <00:11:32.399>for <00:11:32.644>your <00:11:32.889>service.

252
00:11:33.805 --> 00:11:37.785
<00:11:33.805>And <00:11:33.921>what <00:11:34.038>we <00:11:34.155>basically <00:11:34.271>do <00:11:34.388>is <00:11:34.505>we, <00:11:34.621>as <00:11:34.738>I <00:11:34.854>said <00:11:34.971>before <00:11:35.088>with <00:11:35.204>this,

253
00:11:37.785 --> 00:11:40.105
<00:11:37.785>or <00:11:37.940>as <00:11:38.096>I <00:11:38.251>showed <00:11:38.407>before, <00:11:38.562>with <00:11:38.718>a <00:11:38.873>simple <00:11:39.029>map <00:11:39.185>operator,

254
00:11:40.885 --> 00:11:42.905
<00:11:40.885>we <00:11:41.351>would <00:11:41.818>simply <00:11:42.285>map

255
00:11:43.325 --> 00:11:47.385
<00:11:43.325>or <00:11:43.605>run, <00:11:43.885>uh, <00:11:44.165>defer <00:11:44.445>the <00:11:44.725>stream

256
00:11:47.765 --> 00:11:50.225
<00:11:47.765>to <00:11:47.920>specific <00:11:48.076>streams <00:11:48.231>as <00:11:48.387>we <00:11:48.542>need <00:11:48.698>them <00:11:48.853>on <00:11:49.009>the <00:11:49.165>ui.

257
00:11:51.365 --> 00:11:53.445
<00:11:51.365>So <00:11:51.645>this <00:11:51.925>transformation <00:11:52.205>looks, <00:11:52.485>for <00:11:52.765>example,

258
00:11:53.505 --> 00:11:56.005
<00:11:53.505>in <00:11:53.680>this <00:11:53.855>situation, <00:11:54.030>just <00:11:54.205>by <00:11:54.380>subscribing <00:11:54.555>to <00:11:54.730>the <00:11:54.905>stream

259
00:11:56.265 --> 00:11:59.005
<00:11:56.265>and <00:11:56.392>making <00:11:56.519>a <00:11:56.646>count <00:11:56.774>on <00:11:56.901>the <00:11:57.028>stream <00:11:57.155>so <00:11:57.283>that <00:11:57.410>we <00:11:57.537>see, <00:11:57.665>okay,

260
00:11:59.175 --> 00:12:01.205
<00:11:59.175>there <00:11:59.375>are <00:11:59.574>four <00:11:59.775>emails <00:11:59.974>currently <00:12:00.175>in <00:12:00.375>the <00:12:00.574>inbox.

261
00:12:02.105 --> 00:12:04.165
<00:12:02.105>In <00:12:02.305>this <00:12:02.505>situation, <00:12:02.705>we <00:12:02.905>would <00:12:03.105>just <00:12:03.305>say, <00:12:03.505>okay,

262
00:12:04.855 --> 00:12:06.965
<00:12:04.855>let's <00:12:05.088>collect <00:12:05.321>all <00:12:05.555>the <00:12:05.788>emails <00:12:06.021>in <00:12:06.255>the

263
00:12:06.965 --> 00:12:08.605
<00:12:06.965>stream <00:12:07.315>and <00:12:07.665>let's <00:12:08.015>map <00:12:08.365>them.

264
00:12:09.105 --> 00:12:11.085
<00:12:09.105>So <00:12:09.338>instead <00:12:09.571>of <00:12:09.805>showing <00:12:10.038>the <00:12:10.271>the <00:12:10.505>chase

265
00:12:11.085 --> 00:12:14.205
<00:12:11.085>and <00:12:11.240>email, <00:12:11.396>we <00:12:11.551>would <00:12:11.707>transform <00:12:11.862>it <00:12:12.018>to <00:12:12.173>a <00:12:12.329>single <00:12:12.485>line,

266
00:12:14.375 --> 00:12:16.605
<00:12:14.375>which <00:12:14.550>can <00:12:14.725>be <00:12:14.900>easily <00:12:15.075>shown <00:12:15.250>on <00:12:15.425>a <00:12:15.600>male <00:12:15.775>client.

267
00:12:17.465 --> 00:12:20.005
<00:12:17.465>And <00:12:17.620>in <00:12:17.776>this <00:12:17.931>situation, <00:12:18.087>above <00:12:18.242>where <00:12:18.398>we <00:12:18.553>show <00:12:18.709>the <00:12:18.865>amount

268
00:12:20.005 --> 00:12:22.325
<00:12:20.005>of <00:12:20.180>new <00:12:20.355>emails, <00:12:20.530>we <00:12:20.705>would <00:12:20.880>filter <00:12:21.055>the <00:12:21.230>new <00:12:21.405>ones

269
00:12:22.545 --> 00:12:24.325
<00:12:22.545>and <00:12:22.824>would <00:12:23.104>then <00:12:23.385>count <00:12:23.665>them, <00:12:23.944>right?

270
00:12:25.005 --> 00:12:27.385
<00:12:25.005>So <00:12:25.180>we <00:12:25.355>would <00:12:25.530>always <00:12:25.705>just <00:12:25.880>subscribe <00:12:26.055>to <00:12:26.230>a <00:12:26.405>stream,

271
00:12:27.905 --> 00:12:30.785
<00:12:27.905>transform <00:12:28.021>the <00:12:28.138>stream <00:12:28.255>in <00:12:28.371>a <00:12:28.488>way <00:12:28.605>how <00:12:28.721>we <00:12:28.838>need <00:12:28.954>it <00:12:29.071>from <00:12:29.188>the <00:12:29.305>UI,

272
00:12:31.245 --> 00:12:34.545
<00:12:31.245>and <00:12:31.400>would <00:12:31.556>bind <00:12:31.711>to <00:12:31.867>this <00:12:32.022>new <00:12:32.178>stream <00:12:32.333>from <00:12:32.489>the <00:12:32.645>ui.

273
00:12:35.945 --> 00:12:39.545
<00:12:35.945>And <00:12:36.072>when <00:12:36.199>a <00:12:36.326>new <00:12:36.454>email <00:12:36.581>arrives, <00:12:36.708>we <00:12:36.835>wouldn't <00:12:36.963>use <00:12:37.090>a <00:12:37.217>REST <00:12:37.345>client

274
00:12:39.545 --> 00:12:41.065
<00:12:39.545>because <00:12:39.887>rest <00:12:40.229>is <00:12:40.571>always <00:12:40.913>pulling.

275
00:12:41.165 --> 00:12:43.345
<00:12:41.165>We <00:12:41.305>pull <00:12:41.444>for <00:12:41.584>data, <00:12:41.724>we <00:12:41.865>ask, <00:12:42.005>Hey, <00:12:42.145>is <00:12:42.285>the <00:12:42.425>new <00:12:42.564>email?

276
00:12:43.345 --> 00:12:44.545
<00:12:43.345>Is <00:12:43.615>the <00:12:43.885>new <00:12:44.155>email? <00:12:44.425>No,

277
00:12:44.685 --> 00:12:46.465
<00:12:44.685>we <00:12:44.918>would <00:12:45.151>maybe <00:12:45.385>use <00:12:45.618>something <00:12:45.851>which <00:12:46.084>supports

278
00:12:46.465 --> 00:12:47.745
<00:12:46.465>pushing <00:12:46.849>us <00:12:47.233>new <00:12:47.617>emails.

279
00:12:48.005 --> 00:12:49.865
<00:12:48.005>And <00:12:48.180>this <00:12:48.355>would, <00:12:48.530>for <00:12:48.705>example, <00:12:48.880>be <00:12:49.055>a <00:12:49.230>simple <00:12:49.405>web.

280
00:12:49.865 --> 00:12:51.745
<00:12:49.865>So <00:12:50.215>client, <00:12:50.565>which <00:12:50.915>sends <00:12:51.265>us

281
00:12:51.985 --> 00:12:55.545
<00:12:51.985>whenever <00:12:52.125>a <00:12:52.265>new <00:12:52.405>email <00:12:52.545>is <00:12:52.685>available, <00:12:52.825>this <00:12:52.965>email <00:12:53.105>to <00:12:53.245>the <00:12:53.385>stream,

282
00:12:57.115 --> 00:12:59.535
<00:12:57.115>and <00:12:57.465>automatically <00:12:57.815>everything <00:12:58.165>will <00:12:58.515>update

283
00:12:59.535 --> 00:13:01.775
<00:12:59.535>because <00:12:59.735>we <00:12:59.935>are <00:13:00.135>just <00:13:00.334>subscribing <00:13:00.535>to <00:13:00.735>the <00:13:00.935>stream.

284
00:13:01.835 --> 00:13:04.815
<00:13:01.835>And <00:13:02.010>whenever <00:13:02.185>a <00:13:02.360>new <00:13:02.535>element <00:13:02.710>in <00:13:02.885>the <00:13:03.060>stream <00:13:03.235>arrives,

285
00:13:04.835 --> 00:13:07.415
<00:13:04.835>we <00:13:05.035>don't <00:13:05.235>need <00:13:05.435>to <00:13:05.635>do <00:13:05.835>any <00:13:06.035>manual <00:13:06.235>updating

286
00:13:07.415 --> 00:13:09.015
<00:13:07.415>because <00:13:07.881>we <00:13:08.348>just <00:13:08.814>subscribe.

287
00:13:09.145 --> 00:13:12.295
<00:13:09.145>Right? <00:13:09.319>And <00:13:09.495>every <00:13:09.670>a <00:13:09.845>new <00:13:10.020>email <00:13:10.194>there <00:13:10.370>will <00:13:10.545>automatically

288
00:13:12.295 --> 00:13:14.335
<00:13:12.295>trigger <00:13:12.645>all <00:13:12.995>the <00:13:13.344>derived <00:13:13.694>streams

289
00:13:14.355 --> 00:13:16.935
<00:13:14.355>and <00:13:14.555>will <00:13:14.755>update <00:13:14.955>the <00:13:15.155>UI <00:13:15.355>from <00:13:15.555>our <00:13:15.755>perspective.

290
00:13:16.995 --> 00:13:18.335
<00:13:16.995>So <00:13:17.236>if <00:13:17.477>a <00:13:17.718>new <00:13:17.959>email <00:13:18.201>arrives,

291
00:13:18.675 --> 00:13:21.135
<00:13:18.675>all <00:13:18.875>these <00:13:19.074>UI <00:13:19.275>elements <00:13:19.474>will <00:13:19.675>be <00:13:19.875>automatically <00:13:20.074>updated.

292
00:13:21.395 --> 00:13:23.535
<00:13:21.395>And <00:13:21.628>that's <00:13:21.861>actually <00:13:22.095>the <00:13:22.328>power <00:13:22.561>of <00:13:22.795>asynchronous,

293
00:13:23.675 --> 00:13:25.735
<00:13:23.675>of <00:13:24.141>reactive <00:13:24.608>programming, <00:13:25.074>right?

294
00:13:26.045 --> 00:13:28.695
<00:13:26.045>Because <00:13:26.278>we <00:13:26.511>move <00:13:26.745>from <00:13:26.978>pool <00:13:27.211>based <00:13:27.444>design

295
00:13:28.715 --> 00:13:30.495
<00:13:28.715>to <00:13:29.065>asynchronous <00:13:29.415>push <00:13:29.765>based <00:13:30.115>design.

296
00:13:30.495 --> 00:13:32.095
<00:13:30.495>Yeah. <00:13:30.845>And <00:13:31.195>that's <00:13:31.545>the <00:13:31.895>idea

297
00:13:32.095 --> 00:13:34.135
<00:13:32.095>of <00:13:32.375>reactive <00:13:32.655>programming <00:13:32.935>in <00:13:33.215>its <00:13:33.495>heart.

298
00:13:34.445 --> 00:13:36.975
<00:13:34.445>That <00:13:34.645>that's <00:13:34.845>basically <00:13:35.045>it. <00:13:35.245>It's <00:13:35.445>not <00:13:35.645>super <00:13:35.845>complicated.

299
00:13:36.975 --> 00:13:38.975
<00:13:36.975>Whoever <00:13:37.255>tells <00:13:37.535>you <00:13:37.815>it's <00:13:38.095>super <00:13:38.375>complicated

300
00:13:38.975 --> 00:13:40.135
<00:13:38.975>wants <00:13:39.236>to <00:13:39.497>sell <00:13:39.758>you <00:13:40.019>something.

301
00:13:40.435 --> 00:13:41.455
<00:13:40.435>But <00:13:40.664>that, <00:13:40.894>that's <00:13:41.123>the <00:13:41.353>idea.

302
00:13:41.455 --> 00:13:43.055
<00:13:41.455>And <00:13:41.735>moving <00:13:42.015>from <00:13:42.295>pool <00:13:42.575>based <00:13:42.855>design

303
00:13:43.515 --> 00:13:45.455
<00:13:43.515>to <00:13:43.795>push <00:13:44.074>based <00:13:44.355>asynchronous <00:13:44.635>design <00:13:44.915>side.

304
00:13:47.425 --> 00:13:50.005
<00:13:47.425>So <00:13:47.580>for <00:13:47.736>those <00:13:47.891>of <00:13:48.047>you <00:13:48.202>who <00:13:48.358>didn't <00:13:48.513>know <00:13:48.669>reactive <00:13:48.824>programming,

305
00:13:50.125 --> 00:13:52.485
<00:13:50.125>I <00:13:50.325>guess <00:13:50.525>you <00:13:50.725>have <00:13:50.925>a <00:13:51.125>basic <00:13:51.325>understanding <00:13:51.525>now,

306
00:13:53.105 --> 00:13:54.965
<00:13:53.105>but <00:13:53.338>for <00:13:53.571>the <00:13:53.805>others <00:13:54.038>they're <00:13:54.271>maybe <00:13:54.505>disappointed

307
00:13:54.965 --> 00:13:57.245
<00:13:54.965>because, <00:13:55.245>hey, <00:13:55.525>we <00:13:55.805>didn't, <00:13:56.085>we <00:13:56.365>didn't,

308
00:13:57.305 --> 00:13:59.285
<00:13:57.305>we <00:13:57.538>didn't <00:13:57.771>reactive <00:13:58.005>programming <00:13:58.238>in <00:13:58.471>the <00:13:58.704>title,

309
00:13:59.385 --> 00:14:01.045
<00:13:59.385>we <00:13:59.851>read <00:14:00.318>reactive <00:14:00.785>architectures.

310
00:14:01.045 --> 00:14:02.725
<00:14:01.045>Yeah. <00:14:01.395>So <00:14:01.745>please <00:14:02.094>finally <00:14:02.444>start

311
00:14:02.725 --> 00:14:04.765
<00:14:02.725>to <00:14:03.075>talk <00:14:03.425>about <00:14:03.775>reactive <00:14:04.125>architectures.

312
00:14:06.845 --> 00:14:09.815
<00:14:06.845>Well, <00:14:07.078>as <00:14:07.311>so <00:14:07.545>often <00:14:07.778>in <00:14:08.011>software <00:14:08.245>engineering,

313
00:14:11.375 --> 00:14:14.145
<00:14:11.375>when <00:14:11.608>we <00:14:11.841>try <00:14:12.075>to <00:14:12.308>reuse <00:14:12.541>concepts, <00:14:12.775>yeah,

314
00:14:14.405 --> 00:14:16.585
<00:14:14.405>we <00:14:14.638>start <00:14:14.871>on <00:14:15.105>the <00:14:15.338>software <00:14:15.571>design <00:14:15.805>level.

315
00:14:16.645 --> 00:14:19.265
<00:14:16.645>In <00:14:16.845>this <00:14:17.045>situation, <00:14:17.245>we <00:14:17.444>start <00:14:17.645>with <00:14:17.845>reactive <00:14:18.045>programming,

316
00:14:19.605 --> 00:14:21.865
<00:14:19.605>but <00:14:19.805>we <00:14:20.005>try <00:14:20.205>to <00:14:20.405>move <00:14:20.605>this <00:14:20.805>concepts <00:14:21.005>up.

317
00:14:22.745 --> 00:14:25.085
<00:14:22.745>We <00:14:22.945>try <00:14:23.145>to <00:14:23.345>move <00:14:23.545>the <00:14:23.745>same <00:14:23.945>concepts <00:14:24.145>actually

318
00:14:25.225 --> 00:14:26.805
<00:14:25.225>to <00:14:25.575>the <00:14:25.925>software <00:14:26.275>architecture <00:14:26.625>level.

319
00:14:27.225 --> 00:14:28.285
<00:14:27.225>And <00:14:27.415>this <00:14:27.606>is <00:14:27.797>why <00:14:27.988>we <00:14:28.179>tend

320
00:14:28.285 --> 00:14:30.405
<00:14:28.285>to <00:14:28.564>call <00:14:28.844>these <00:14:29.125>things <00:14:29.405>reactive <00:14:29.685>architectures.

321
00:14:31.125 --> 00:14:32.625
<00:14:31.125>And <00:14:31.395>that's <00:14:31.665>a <00:14:31.935>very <00:14:32.205>important <00:14:32.475>point

322
00:14:32.625 --> 00:14:35.665
<00:14:32.625>because <00:14:32.765>we <00:14:32.905>see <00:14:33.045>this <00:14:33.185>very <00:14:33.325>often <00:14:33.465>taking <00:14:33.605>the <00:14:33.745>same <00:14:33.885>concepts <00:14:34.025>we

323
00:14:35.665 --> 00:14:36.665
<00:14:35.665>have <00:14:35.964>in <00:14:36.265>software <00:14:36.564>design

324
00:14:36.665 --> 00:14:38.665
<00:14:36.665>and <00:14:36.944>applying <00:14:37.224>them <00:14:37.505>to <00:14:37.785>software <00:14:38.064>architecture.

325
00:14:39.565 --> 00:14:42.945
<00:14:39.565>And <00:14:39.720>so <00:14:39.876>we <00:14:40.031>take <00:14:40.187>the <00:14:40.342>same <00:14:40.498>concepts <00:14:40.653>from <00:14:40.809>reactive <00:14:40.965>program

326
00:14:43.165 --> 00:14:46.025
<00:14:43.165>and <00:14:43.339>basically <00:14:43.515>just <00:14:43.689>move <00:14:43.865>them <00:14:44.040>up <00:14:44.214>to <00:14:44.390>system <00:14:44.564>architecture.

327
00:14:46.765 --> 00:14:49.065
<00:14:46.765>And <00:14:47.045>this <00:14:47.324>is <00:14:47.605>where <00:14:47.885>reactive <00:14:48.165>probing

328
00:14:49.825 --> 00:14:51.650
<00:14:49.825>actually <00:14:50.291>becomes <00:14:50.758>reactive <00:14:51.225>architecture.

329
00:14:51.915 --> 00:14:54.645
<00:14:51.915>It's <00:14:52.070>the <00:14:52.226>same <00:14:52.381>idea. <00:14:52.537>It's <00:14:52.692>just <00:14:52.848>applied <00:14:53.003>on <00:14:53.159>different <00:14:53.314>levels

330
00:14:54.665 --> 00:14:55.805
<00:14:54.665>of <00:14:55.178>software <00:14:55.690>engineering.

331
00:14:55.805 --> 00:14:57.735
<00:14:55.805>Yeah. <00:14:56.155>And <00:14:56.505>we <00:14:56.854>do <00:14:57.204>this

332
00:14:57.735 --> 00:14:59.495
<00:14:57.735>and <00:14:57.910>hope <00:14:58.085>for <00:14:58.260>the <00:14:58.435>best <00:14:58.610>that <00:14:58.785>it <00:14:58.960>works, <00:14:59.135>right?

333
00:15:00.635 --> 00:15:03.415
<00:15:00.635>And <00:15:00.790>basically, <00:15:00.946>we <00:15:01.101>found <00:15:01.257>out <00:15:01.412>that <00:15:01.568>it <00:15:01.723>works <00:15:01.879>very <00:15:02.035>often.

334
00:15:03.995 --> 00:15:05.935
<00:15:03.995>And <00:15:04.228>if <00:15:04.461>we <00:15:04.695>talk <00:15:04.928>about <00:15:05.161>reactive <00:15:05.395>architecture,

335
00:15:05.935 --> 00:15:09.295
<00:15:05.935>it's <00:15:06.074>worth <00:15:06.214>taking <00:15:06.354>a <00:15:06.494>look <00:15:06.635>at <00:15:06.775>the <00:15:06.915>Reactive <00:15:07.055>manifesto, <00:15:07.194>which <00:15:07.334>is

336
00:15:09.315 --> 00:15:11.095
<00:15:09.315>around <00:15:09.548>for <00:15:09.781>a <00:15:10.015>couple <00:15:10.248>of <00:15:10.481>years <00:15:10.715>already.

337
00:15:11.715 --> 00:15:14.255
<00:15:11.715>So <00:15:11.915>you <00:15:12.115>see, <00:15:12.315>it <00:15:12.515>was <00:15:12.715>published <00:15:12.915>in <00:15:13.115>2014,

338
00:15:15.205 --> 00:15:17.745
<00:15:15.205>and <00:15:15.485>it's <00:15:15.765>a <00:15:16.045>very <00:15:16.325>basic <00:15:16.605>concept.

339
00:15:17.935 --> 00:15:20.385
<00:15:17.935>It's <00:15:18.135>a <00:15:18.334>very <00:15:18.535>guiding <00:15:18.734>principle <00:15:18.935>when <00:15:19.135>it <00:15:19.334>comes

340
00:15:20.405 --> 00:15:21.665
<00:15:20.405>to <00:15:20.972>reactive <00:15:21.539>architectures.

341
00:15:22.405 --> 00:15:24.425
<00:15:22.405>The <00:15:22.560>problem <00:15:22.716>is, <00:15:22.871>if, <00:15:23.027>if <00:15:23.182>I <00:15:23.338>go <00:15:23.493>to, <00:15:23.649>to <00:15:23.805>clients

342
00:15:24.425 --> 00:15:25.905
<00:15:24.425>and <00:15:24.691>ask <00:15:24.957>them, <00:15:25.224>Hey, <00:15:25.490>let, <00:15:25.757>let's,

343
00:15:25.915 --> 00:15:27.345
<00:15:25.915>let's <00:15:26.236>talk <00:15:26.558>about <00:15:26.880>reactive <00:15:27.202>systems.

344
00:15:27.365 --> 00:15:29.265
<00:15:27.365>And <00:15:27.598>they <00:15:27.831>already <00:15:28.065>started <00:15:28.298>to <00:15:28.531>build <00:15:28.765>something.

345
00:15:29.265 --> 00:15:31.425
<00:15:29.265>Maybe <00:15:29.465>I <00:15:29.665>said, <00:15:29.865>did <00:15:30.064>you <00:15:30.265>redirect <00:15:30.465>to <00:15:30.665>manifesto?

346
00:15:31.425 --> 00:15:33.425
<00:15:31.425>Did <00:15:31.564>you <00:15:31.704>understand <00:15:31.844>it? <00:15:31.984>And <00:15:32.125>they <00:15:32.265>said, <00:15:32.405>yeah, <00:15:32.545>I <00:15:32.685>read <00:15:32.824>it.

347
00:15:33.445 --> 00:15:36.585
<00:15:33.445>But <00:15:33.620>hmm, <00:15:33.795>there's <00:15:33.970>on <00:15:34.145>the <00:15:34.320>second <00:15:34.495>page <00:15:34.670>this <00:15:34.845>kind

348
00:15:36.585 --> 00:15:40.625
<00:15:36.585>of <00:15:36.725>very <00:15:36.865>complex <00:15:37.005>graph, <00:15:37.145>which <00:15:37.285>shows <00:15:37.425>lots <00:15:37.565>of, <00:15:37.705>um, <00:15:37.845>errors <00:15:37.985>and,

349
00:15:40.625 --> 00:15:42.785
<00:15:40.625>and <00:15:40.752>it's <00:15:40.879>a <00:15:41.006>little <00:15:41.134>bit, <00:15:41.261>it's <00:15:41.388>a <00:15:41.515>little <00:15:41.643>bit <00:15:41.770>hard <00:15:41.897>to <00:15:42.025>press.

350
00:15:42.815 --> 00:15:45.975
<00:15:42.815>Yeah. <00:15:43.015>And <00:15:43.215>maybe <00:15:43.415>it <00:15:43.615>is, <00:15:43.815>I <00:15:44.015>don't <00:15:44.215>know.

351
00:15:46.835 --> 00:15:49.255
<00:15:46.835>But <00:15:46.962>usually <00:15:47.089>I <00:15:47.216>try <00:15:47.344>to <00:15:47.471>explain <00:15:47.598>it <00:15:47.725>to <00:15:47.853>them <00:15:47.980>in <00:15:48.107>a <00:15:48.235>way

352
00:15:49.255 --> 00:15:51.495
<00:15:49.255>that <00:15:49.382>they <00:15:49.509>understand <00:15:49.636>it, <00:15:49.764>it <00:15:49.891>in <00:15:50.018>a, <00:15:50.145>in <00:15:50.273>a, <00:15:50.400>in <00:15:50.527>a <00:15:50.655>very,

353
00:15:51.555 --> 00:15:52.975
<00:15:51.555>in <00:15:51.767>a <00:15:51.981>very <00:15:52.194>short <00:15:52.407>amount <00:15:52.620>of <00:15:52.833>time.

354
00:15:52.975 --> 00:15:56.295
<00:15:52.975>Yeah. <00:15:53.150>Because <00:15:53.325>it's <00:15:53.500>the <00:15:53.675>basic <00:15:53.850>idea <00:15:54.025>of <00:15:54.200>reactive <00:15:54.375>systems.

355
00:15:56.395 --> 00:15:58.415
<00:15:56.395>You <00:15:56.675>need <00:15:56.954>to <00:15:57.235>understand <00:15:57.515>reactive <00:15:57.795>manifest

356
00:15:58.875 --> 00:16:01.055
<00:15:58.875>to <00:15:59.108>understand <00:15:59.341>the <00:15:59.575>concept <00:15:59.808>of <00:16:00.041>reactive <00:16:00.275>systems.

357
00:16:01.835 --> 00:16:04.295
<00:16:01.835>So <00:16:01.975>we'll <00:16:02.115>try <00:16:02.255>to <00:16:02.395>explain <00:16:02.535>it <00:16:02.675>to <00:16:02.815>you <00:16:02.955>even <00:16:03.095>faster. <00:16:03.235>Yeah.

358
00:16:05.675 --> 00:16:10.105
<00:16:05.675>So <00:16:05.875>what <00:16:06.074>the <00:16:06.275>Reactive <00:16:06.474>Manifesto <00:16:06.675>actually <00:16:06.875>says <00:16:07.074>is

359
00:16:10.105 --> 00:16:13.105
<00:16:10.105>that <00:16:10.305>the <00:16:10.505>main <00:16:10.705>idea <00:16:10.905>behind <00:16:11.105>reactive <00:16:11.305>systems <00:16:11.505>is

360
00:16:13.105 --> 00:16:14.385
<00:16:13.105>that <00:16:13.489>they <00:16:13.873>are <00:16:14.257>responsive.

361
00:16:15.005 --> 00:16:16.985
<00:16:15.005>So <00:16:15.285>responsiveness <00:16:15.564>is <00:16:15.845>so <00:16:16.125>many <00:16:16.405>analysis

362
00:16:16.985 --> 00:16:18.305
<00:16:16.985>and <00:16:17.579>non-functional <00:16:18.173>requirement.

363
00:16:18.765 --> 00:16:21.065
<00:16:18.765>The <00:16:18.920>system <00:16:19.076>could <00:16:19.231>be <00:16:19.387>elastic, <00:16:19.542>a <00:16:19.698>system <00:16:19.853>could <00:16:20.009>be <00:16:20.165>scalable,

364
00:16:21.345 --> 00:16:23.745
<00:16:21.345>a <00:16:21.500>system <00:16:21.656>could <00:16:21.811>be <00:16:21.967>maintainable, <00:16:22.122>a <00:16:22.278>system <00:16:22.433>could <00:16:22.589>be <00:16:22.745>testable.

365
00:16:24.445 --> 00:16:28.745
<00:16:24.445>But <00:16:24.585>if <00:16:24.725>we <00:16:24.865>will <00:16:25.005>build <00:16:25.145>reactive <00:16:25.285>systems, <00:16:25.425>our <00:16:25.565>main <00:16:25.705>goal <00:16:25.845>is

366
00:16:28.745 --> 00:16:31.705
<00:16:28.745>that <00:16:28.900>we <00:16:29.056>build <00:16:29.211>them <00:16:29.367>in <00:16:29.522>a <00:16:29.678>responsive <00:16:29.833>manner, <00:16:29.989>which <00:16:30.145>means

367
00:16:31.855 --> 00:16:34.105
<00:16:31.855>that <00:16:32.135>the <00:16:32.415>user <00:16:32.695>always <00:16:32.975>gets <00:16:33.255>feedback.

368
00:16:34.685 --> 00:16:37.505
<00:16:34.685>If <00:16:34.824>he <00:16:34.964>talks <00:16:35.104>to <00:16:35.244>the <00:16:35.385>system, <00:16:35.525>he <00:16:35.665>always <00:16:35.805>gets <00:16:35.944>a <00:16:36.084>response.

369
00:16:38.205 --> 00:16:40.185
<00:16:38.205>And <00:16:38.438>we <00:16:38.671>see <00:16:38.905>that <00:16:39.138>this <00:16:39.371>non-functional <00:16:39.605>requirement

370
00:16:40.185 --> 00:16:41.745
<00:16:40.185>of <00:16:40.535>responsiveness <00:16:40.885>is <00:16:41.234>getting <00:16:41.584>more

371
00:16:41.745 --> 00:16:44.025
<00:16:41.745>and <00:16:41.978>more <00:16:42.211>important <00:16:42.445>in <00:16:42.678>modern <00:16:42.911>software <00:16:43.145>engineering.

372
00:16:44.685 --> 00:16:47.345
<00:16:44.685>So <00:16:44.801>why <00:16:44.918>is <00:16:45.035>this <00:16:45.151>the <00:16:45.268>case? <00:16:45.385>Why <00:16:45.501>is <00:16:45.618>it <00:16:45.734>so <00:16:45.851>more <00:16:45.968>important <00:16:46.084>than,

373
00:16:47.345 --> 00:16:48.545
<00:16:47.345>for <00:16:47.615>example, <00:16:47.885>10 <00:16:48.155>years <00:16:48.425>ago?

374
00:16:49.415 --> 00:16:51.105
<00:16:49.415>Well, <00:16:49.615>10 <00:16:49.814>years <00:16:50.015>ago <00:16:50.214>is <00:16:50.415>a <00:16:50.615>good <00:16:50.814>number

375
00:16:51.105 --> 00:16:53.745
<00:16:51.105>because <00:16:51.232>if <00:16:51.359>you <00:16:51.486>take <00:16:51.614>a <00:16:51.741>look <00:16:51.868>at <00:16:51.995>the <00:16:52.123>internet, <00:16:52.250>10 <00:16:52.377>years <00:16:52.505>ago,

376
00:16:54.445 --> 00:16:57.745
<00:16:54.445>2010, <00:16:54.911>the <00:16:55.378>internet <00:16:55.845>had

377
00:16:57.845 --> 00:17:00.025
<00:16:57.845>1.4 <00:16:58.311>billion <00:16:58.778>users, <00:16:59.245>right?

378
00:17:00.965 --> 00:17:05.185
<00:17:00.965>2020, <00:17:01.198>the <00:17:01.431>internet <00:17:01.665>had <00:17:01.898>4.7 <00:17:02.131>billion <00:17:02.365>users.

379
00:17:07.115 --> 00:17:08.995
<00:17:07.115>Facebook <00:17:07.464>has <00:17:07.815>2.8 <00:17:08.165>billion <00:17:08.515>users.

380
00:17:10.065 --> 00:17:12.595
<00:17:10.065>YouTube <00:17:10.415>has <00:17:10.765>2.1 <00:17:11.115>billion <00:17:11.465>users.

381
00:17:14.015 --> 00:17:15.345
<00:17:14.015>What <00:17:14.314>does <00:17:14.613>this <00:17:14.912>basically <00:17:15.212>mean?

382
00:17:15.345 --> 00:17:19.185
<00:17:15.345>This <00:17:15.520>means <00:17:15.694>a <00:17:15.870>single <00:17:16.045>website <00:17:16.220>may <00:17:16.395>now <00:17:16.569>handle <00:17:16.745>twice

383
00:17:19.205 --> 00:17:22.265
<00:17:19.204>as <00:17:19.360>much <00:17:19.516>traffic <00:17:19.671>as <00:17:19.827>the <00:17:19.982>entire <00:17:20.138>internet <00:17:20.293>data <00:17:20.449>decade <00:17:20.605>ago.

384
00:17:22.765 --> 00:17:25.465
<00:17:22.765>And <00:17:22.965>that's, <00:17:23.165>that's <00:17:23.365>fantastic <00:17:23.565>on <00:17:23.765>the <00:17:23.965>one <00:17:24.165>end.

385
00:17:25.605 --> 00:17:27.025
<00:17:25.605>But <00:17:25.818>on <00:17:26.031>the <00:17:26.244>other <00:17:26.457>hand, <00:17:26.670>it's <00:17:26.883>scary.

386
00:17:27.565 --> 00:17:30.785
<00:17:27.565>And <00:17:27.720>it <00:17:27.876>also <00:17:28.031>tells <00:17:28.187>us <00:17:28.342>that <00:17:28.498>our <00:17:28.653>systems <00:17:28.809>architecture <00:17:28.965>needed

387
00:17:30.805 --> 00:17:32.705
<00:17:30.805>to <00:17:30.980>change <00:17:31.155>a <00:17:31.330>lot <00:17:31.505>in <00:17:31.680>the <00:17:31.855>last <00:17:32.030>10 <00:17:32.205>years

388
00:17:32.705 --> 00:17:33.905
<00:17:32.705>because <00:17:33.245>we <00:17:33.784>needed

389
00:17:34.445 --> 00:17:37.105
<00:17:34.445>to <00:17:34.678>fulfill <00:17:34.911>new <00:17:35.145>requirements <00:17:35.378>in <00:17:35.611>this <00:17:35.845>situation.

390
00:17:37.105 --> 00:17:39.105
<00:17:37.105>Responsiveness, <00:17:38.505>scalability,

391
00:17:40.205 --> 00:17:41.705
<00:17:40.205>and <00:17:40.542>of <00:17:40.879>course <00:17:41.217>also <00:17:41.554>extendability.

392
00:17:42.175 --> 00:17:45.705
<00:17:42.175>Yeah. <00:17:42.408>And <00:17:42.641>those <00:17:42.875>three <00:17:43.108>non-functional <00:17:43.341>requirements <00:17:43.575>are

393
00:17:45.705 --> 00:17:48.785
<00:17:45.705>perfectly <00:17:45.985>well <00:17:46.264>supported <00:17:46.544>by <00:17:46.824>reactive <00:17:47.105>manifesto.

394
00:17:48.805 --> 00:17:50.325
<00:17:48.805>If <00:17:49.147>you <00:17:49.489>build <00:17:49.831>reactive <00:17:50.173>systems

395
00:17:51.225 --> 00:17:54.485
<00:17:51.225>and <00:17:51.380>what <00:17:51.536>the <00:17:51.691>Reactive <00:17:51.847>manifesto <00:17:52.002>says, <00:17:52.158>okay, <00:17:52.313>if <00:17:52.469>you <00:17:52.625>want

396
00:17:54.485 --> 00:17:57.525
<00:17:54.485>to <00:17:54.659>have <00:17:54.834>a <00:17:55.010>responsive <00:17:55.185>system, <00:17:55.360>you <00:17:55.534>can <00:17:55.709>achieve <00:17:55.885>this

397
00:17:57.525 --> 00:18:02.195
<00:17:57.525>by <00:17:57.665>two <00:17:57.805>means, <00:17:57.945>actually <00:17:58.085>by <00:17:58.225>building <00:17:58.365>it <00:17:58.505>in <00:17:58.645>an <00:17:58.785>elastic <00:17:58.925>way,

398
00:18:02.565 --> 00:18:05.355
<00:18:02.565>which <00:18:02.720>means <00:18:02.876>that <00:18:03.031>we <00:18:03.187>can <00:18:03.342>scale <00:18:03.498>out <00:18:03.653>the <00:18:03.809>system <00:18:03.965>instead

399
00:18:05.355 --> 00:18:06.835
<00:18:05.355>of <00:18:05.688>just <00:18:06.021>scaling <00:18:06.354>up, <00:18:06.687>right?

400
00:18:07.455 --> 00:18:09.835
<00:18:07.455>So <00:18:07.629>back <00:18:07.804>in <00:18:07.980>the <00:18:08.155>days, <00:18:08.330>we <00:18:08.504>moved <00:18:08.679>more <00:18:08.855>processors,

401
00:18:09.895 --> 00:18:11.715
<00:18:09.895>we <00:18:10.128>moved <00:18:10.361>more <00:18:10.595>memory <00:18:10.828>into <00:18:11.061>our <00:18:11.295>system.

402
00:18:11.815 --> 00:18:14.435
<00:18:11.815>So <00:18:12.048>we <00:18:12.281>made <00:18:12.515>the <00:18:12.748>one <00:18:12.981>system <00:18:13.215>better.

403
00:18:15.015 --> 00:18:18.275
<00:18:15.015>Now <00:18:15.170>we <00:18:15.326>try <00:18:15.481>to <00:18:15.637>just <00:18:15.792>deploy <00:18:15.948>the <00:18:16.103>system <00:18:16.259>multiple <00:18:16.415>times.

404
00:18:18.415 --> 00:18:21.715
<00:18:18.415>So <00:18:18.555>we <00:18:18.695>moved <00:18:18.835>strongly <00:18:18.975>from <00:18:19.115>scaling <00:18:19.254>up <00:18:19.395>to <00:18:19.534>scaling <00:18:19.675>out. <00:18:19.815>Yeah.

405
00:18:22.495 --> 00:18:25.355
<00:18:22.495>And <00:18:22.728>the <00:18:22.961>second <00:18:23.195>mean <00:18:23.428>to <00:18:23.661>support <00:18:23.895>responsiveness

406
00:18:25.355 --> 00:18:27.795
<00:18:25.355>of <00:18:25.510>our <00:18:25.666>system <00:18:25.821>is <00:18:25.977>s <00:18:26.132>build <00:18:26.288>in <00:18:26.443>a <00:18:26.599>resilient <00:18:26.755>way,

407
00:18:27.925 --> 00:18:30.195
<00:18:27.925>which <00:18:28.158>actually <00:18:28.391>means <00:18:28.625>that <00:18:28.858>if <00:18:29.091>a <00:18:29.325>part

408
00:18:30.195 --> 00:18:31.835
<00:18:30.195>of <00:18:30.428>the <00:18:30.661>system <00:18:30.895>is <00:18:31.128>not <00:18:31.361>working <00:18:31.595>anymore,

409
00:18:32.175 --> 00:18:33.595
<00:18:32.175>the <00:18:32.494>overall <00:18:32.814>system <00:18:33.133>still <00:18:33.453>works.

410
00:18:35.555 --> 00:18:39.455
<00:18:35.555>So <00:18:35.755>these <00:18:35.955>two <00:18:36.155>means <00:18:36.355>mainly <00:18:36.555>support <00:18:36.755>the <00:18:36.955>non-functional

411
00:18:39.455 --> 00:18:41.135
<00:18:39.455>requirement <00:18:39.921>of <00:18:40.388>being <00:18:40.855>responsive.

412
00:18:42.625 --> 00:18:46.365
<00:18:42.625>And <00:18:42.800>now <00:18:42.975>comes <00:18:43.150>the <00:18:43.325>glue <00:18:43.500>behind <00:18:43.675>the <00:18:43.850>reactive <00:18:44.025>manifesto

413
00:18:46.395 --> 00:18:50.045
<00:18:46.395>because <00:18:46.535>the <00:18:46.675>guys <00:18:46.815>from <00:18:46.955>reactive <00:18:47.095>manifest <00:18:47.235>to <00:18:47.375>say, <00:18:47.514>if <00:18:47.655>you <00:18:47.795>want

414
00:18:50.045 --> 00:18:51.485
<00:18:50.045>to <00:18:50.230>be <00:18:50.415>responsive, <00:18:50.600>you <00:18:50.785>need <00:18:50.970>to <00:18:51.155>be <00:18:51.341>elastic

415
00:18:51.545 --> 00:18:52.765
<00:18:51.545>and <00:18:51.764>you <00:18:51.984>need <00:18:52.203>to <00:18:52.423>be <00:18:52.643>resilient.

416
00:18:54.215 --> 00:18:55.875
<00:18:54.215>But <00:18:54.370>the <00:18:54.526>cool <00:18:54.681>thing, <00:18:54.837>if <00:18:54.992>you <00:18:55.148>want <00:18:55.303>to <00:18:55.459>be <00:18:55.615>elastic,

417
00:18:55.975 --> 00:18:59.715
<00:18:55.975>and <00:18:56.102>if <00:18:56.229>you <00:18:56.356>want <00:18:56.484>to <00:18:56.611>be <00:18:56.738>resilient, <00:18:56.865>you <00:18:56.993>can <00:18:57.120>easily <00:18:57.247>achieve <00:18:57.375>this

418
00:19:00.335 --> 00:19:02.435
<00:19:00.335>by <00:19:00.568>going <00:19:00.801>into <00:19:01.035>a <00:19:01.268>message <00:19:01.501>driven <00:19:01.735>architecture.

419
00:19:03.265 --> 00:19:05.345
<00:19:03.265>'cause <00:19:03.545>message <00:19:03.825>driven <00:19:04.105>supports <00:19:04.385>being <00:19:04.665>elastic,

420
00:19:05.585 --> 00:19:06.865
<00:19:05.585>supports <00:19:06.161>being <00:19:06.737>resilient,

421
00:19:06.865 --> 00:19:08.945
<00:19:06.865>and <00:19:07.215>ultimately <00:19:07.565>supports <00:19:07.915>being <00:19:08.265>responsive.

422
00:19:10.135 --> 00:19:11.425
<00:19:10.135>Okay, <00:19:10.367>what <00:19:10.599>does <00:19:10.831>this <00:19:11.063>even <00:19:11.296>mean?

423
00:19:11.445 --> 00:19:14.505
<00:19:11.445>Now <00:19:11.600>let's, <00:19:11.756>let's <00:19:11.911>take <00:19:12.067>a <00:19:12.222>look <00:19:12.378>at <00:19:12.533>concrete <00:19:12.689>examples. <00:19:12.845>Yeah.

424
00:19:15.485 --> 00:19:19.015
<00:19:15.485>Very <00:19:15.625>high <00:19:15.764>level <00:19:15.905>we <00:19:16.044>will <00:19:16.185>go <00:19:16.324>into, <00:19:16.465>into, <00:19:16.604>into <00:19:16.745>more, <00:19:16.885>uh,

425
00:19:19.045 --> 00:19:20.895
<00:19:19.045>into <00:19:19.395>more <00:19:19.745>sophisticated <00:19:20.095>examples <00:19:20.445>later.

426
00:19:21.555 --> 00:19:23.255
<00:19:21.555>But <00:19:21.788>just <00:19:22.021>to <00:19:22.255>get <00:19:22.488>the <00:19:22.721>point. <00:19:22.955>Yeah.

427
00:19:23.745 --> 00:19:25.455
<00:19:23.745>Let's <00:19:23.978>take <00:19:24.211>a <00:19:24.445>look <00:19:24.678>at <00:19:24.911>Elastic <00:19:25.145>First.

428
00:19:26.345 --> 00:19:29.495
<00:19:26.345>Let's <00:19:26.485>assume <00:19:26.625>we <00:19:26.765>want <00:19:26.905>to <00:19:27.045>support <00:19:27.185>the <00:19:27.325>elasticity <00:19:27.465>of <00:19:27.605>a <00:19:27.745>system

429
00:19:29.875 --> 00:19:31.895
<00:19:29.875>by <00:19:30.155>going <00:19:30.435>into <00:19:30.715>message <00:19:30.995>driven <00:19:31.275>architectures.

430
00:19:32.285 --> 00:19:34.535
<00:19:32.285>Well, <00:19:32.485>let's <00:19:32.685>assume <00:19:32.885>we <00:19:33.085>have <00:19:33.285>microservice <00:19:33.485>A <00:19:33.685>talking

431
00:19:34.535 --> 00:19:37.235
<00:19:34.535>to <00:19:34.768>microservice <00:19:35.001>P, <00:19:35.235>very <00:19:35.468>simple <00:19:35.701>use <00:19:35.935>case.

432
00:19:38.295 --> 00:19:41.275
<00:19:38.295>Um, <00:19:38.435>and <00:19:38.575>let's <00:19:38.715>assume <00:19:38.855>we <00:19:38.995>want <00:19:39.135>to <00:19:39.275>scale <00:19:39.415>up <00:19:39.555>microservice <00:19:39.695>P.

433
00:19:41.695 --> 00:19:43.955
<00:19:41.695>So <00:19:41.850>we <00:19:42.006>want <00:19:42.161>to <00:19:42.317>have <00:19:42.472>two <00:19:42.628>instances <00:19:42.783>of <00:19:42.939>microservice <00:19:43.095>P

434
00:19:46.015 --> 00:19:47.985
<00:19:46.015>then <00:19:46.365>microservice <00:19:46.715>a <00:19:47.065>suddenly <00:19:47.415>decide

435
00:19:47.985 --> 00:19:49.305
<00:19:47.985>to <00:19:48.154>which <00:19:48.324>instance <00:19:48.494>do <00:19:48.663>I <00:19:48.833>need <00:19:49.003>to <00:19:49.173>go?

436
00:19:49.525 --> 00:19:51.625
<00:19:49.525>We <00:19:49.725>can <00:19:49.925>introduce <00:19:50.125>load <00:19:50.325>balances <00:19:50.525>or <00:19:50.725>other <00:19:50.925>tools,

437
00:19:52.325 --> 00:19:54.545
<00:19:52.325>but <00:19:52.525>if <00:19:52.725>we <00:19:52.925>go <00:19:53.125>with <00:19:53.325>message <00:19:53.525>driven <00:19:53.725>architectures,

438
00:19:54.545 --> 00:19:57.105
<00:19:54.545>if <00:19:54.720>we <00:19:54.895>just <00:19:55.070>put <00:19:55.245>a <00:19:55.420>stream <00:19:55.595>between <00:19:55.770>those <00:19:55.945>microservices,

439
00:19:57.965 --> 00:20:00.905
<00:19:57.965>the <00:19:58.120>problem <00:19:58.276>is <00:19:58.431>solved <00:19:58.587>because <00:19:58.742>microservice <00:19:58.898>A <00:19:59.053>sends <00:19:59.209>a <00:19:59.365>message

440
00:20:01.005 --> 00:20:04.465
<00:20:01.005>to <00:20:01.205>the <00:20:01.405>stream, <00:20:01.605>and <00:20:01.805>whoever <00:20:02.005>is <00:20:02.205>currently <00:20:02.405>interested,

441
00:20:04.755 --> 00:20:07.945
<00:20:04.755>which <00:20:04.910>instance <00:20:05.066>of <00:20:05.221>microservice <00:20:05.377>P <00:20:05.532>just <00:20:05.688>picks <00:20:05.843>up <00:20:05.999>this <00:20:06.155>message,

442
00:20:08.035 --> 00:20:10.505
<00:20:08.035>works <00:20:08.210>on <00:20:08.385>it, <00:20:08.560>and <00:20:08.735>maybe <00:20:08.910>sends <00:20:09.085>back <00:20:09.260>another <00:20:09.435>message.

443
00:20:11.645 --> 00:20:13.265
<00:20:11.645>So <00:20:11.995>just <00:20:12.345>by <00:20:12.695>introducing <00:20:13.045>message

444
00:20:13.265 --> 00:20:15.345
<00:20:13.265>with <00:20:13.465>architectures <00:20:13.665>in <00:20:13.865>the <00:20:14.065>form <00:20:14.265>of <00:20:14.465>a <00:20:14.665>stream

445
00:20:15.405 --> 00:20:18.545
<00:20:15.405>or <00:20:15.580>a <00:20:15.754>queue, <00:20:15.930>you <00:20:16.105>can <00:20:16.280>easily <00:20:16.455>achieve <00:20:16.629>the <00:20:16.805>goal

446
00:20:18.765 --> 00:20:20.865
<00:20:18.765>of <00:20:18.998>building <00:20:19.231>systems <00:20:19.465>in <00:20:19.698>a <00:20:19.931>moralistic <00:20:20.165>way.

447
00:20:22.695 --> 00:20:25.115
<00:20:22.695>And <00:20:22.850>then <00:20:23.006>we <00:20:23.161>have <00:20:23.317>the <00:20:23.472>second <00:20:23.628>part <00:20:23.783>of <00:20:23.939>the <00:20:24.095>coin.

448
00:20:25.115 --> 00:20:28.635
<00:20:25.115>We <00:20:25.315>have <00:20:25.515>resilience. <00:20:25.715>So <00:20:25.915>microservice <00:20:26.115>A <00:20:26.315>again <00:20:26.515>talks

449
00:20:28.635 --> 00:20:31.235
<00:20:28.635>to <00:20:28.868>microservice <00:20:29.101>B, <00:20:29.335>let's <00:20:29.568>assume <00:20:29.801>microservice <00:20:30.035>B

450
00:20:31.295 --> 00:20:32.355
<00:20:31.295>has <00:20:31.772>high <00:20:32.249>latency.

451
00:20:32.545 --> 00:20:36.635
<00:20:32.545>It's <00:20:32.700>not <00:20:32.856>motivated <00:20:33.011>bad <00:20:33.167>day <00:20:33.322>for <00:20:33.478>microservice <00:20:33.633>B <00:20:33.789>down, <00:20:33.945>right?

452
00:20:37.585 --> 00:20:41.025
<00:20:37.585>Then <00:20:37.865>we <00:20:38.145>are <00:20:38.425>blocked <00:20:38.705>microservice <00:20:38.985>A,

453
00:20:41.375 --> 00:20:45.625
<00:20:41.375>because <00:20:41.530>we <00:20:41.686>talk <00:20:41.841>to <00:20:41.997>microservice <00:20:42.152>A <00:20:42.308>in <00:20:42.463>a <00:20:42.619>synchronous <00:20:42.775>manner.

454
00:20:45.765 --> 00:20:47.805
<00:20:45.765>We <00:20:45.998>say, <00:20:46.231>Hey, <00:20:46.465>give <00:20:46.698>me <00:20:46.931>some <00:20:47.165>data.

455
00:20:48.385 --> 00:20:50.805
<00:20:48.385>And <00:20:48.560>as <00:20:48.735>long <00:20:48.910>as <00:20:49.085>microservice <00:20:49.260>A <00:20:49.435>is <00:20:49.610>not <00:20:49.785>responding,

456
00:20:50.865 --> 00:20:52.485
<00:20:50.865>we <00:20:51.145>are <00:20:51.425>blocked <00:20:51.705>on <00:20:51.985>microservice <00:20:52.265>A.

457
00:20:53.895 --> 00:20:55.755
<00:20:53.895>And <00:20:54.128>as <00:20:54.361>soon <00:20:54.595>as <00:20:54.828>microservice <00:20:55.061>P <00:20:55.295>responds

458
00:20:55.755 --> 00:20:58.395
<00:20:55.755>and <00:20:55.895>we <00:20:56.035>get <00:20:56.175>the <00:20:56.315>response <00:20:56.455>on <00:20:56.595>microservice <00:20:56.735>A, <00:20:56.875>we <00:20:57.015>can <00:20:57.155>continue

459
00:20:58.395 --> 00:21:01.905
<00:20:58.395>with <00:20:58.675>further <00:20:58.955>requests <00:20:59.235>by <00:20:59.514>just, <00:20:59.795>again,

460
00:21:02.145 --> 00:21:05.545
<00:21:02.145>applying <00:21:02.320>the <00:21:02.495>same <00:21:02.670>recipe, <00:21:02.845>putting <00:21:03.020>a <00:21:03.195>stream <00:21:03.370>in <00:21:03.545>between,

461
00:21:05.925 --> 00:21:07.425
<00:21:05.925>we <00:21:06.195>can <00:21:06.465>easily <00:21:06.735>solve <00:21:07.004>this <00:21:07.274>issue.

462
00:21:07.545 --> 00:21:11.065
<00:21:07.545>Microservice <00:21:07.685>A <00:21:07.825>says <00:21:07.965>a <00:21:08.105>message <00:21:08.245>to <00:21:08.385>the <00:21:08.525>stream <00:21:08.665>and <00:21:08.805>it's <00:21:08.945>done.

463
00:21:11.875 --> 00:21:14.455
<00:21:11.875>That's <00:21:12.030>the <00:21:12.186>whole <00:21:12.341>idea. <00:21:12.497>Microservice <00:21:12.652>A <00:21:12.808>can <00:21:12.963>work <00:21:13.119>on <00:21:13.275>other

464
00:21:14.455 --> 00:21:17.015
<00:21:14.455>stuff <00:21:14.610>because <00:21:14.766>I <00:21:14.921>forwarded <00:21:15.077>the <00:21:15.232>message <00:21:15.388>now <00:21:15.543>to <00:21:15.699>the <00:21:15.855>stream,

465
00:21:17.405 --> 00:21:19.215
<00:21:17.405>whoever's <00:21:17.871>interested <00:21:18.338>should <00:21:18.805>kind

466
00:21:19.835 --> 00:21:21.095
<00:21:19.835>of <00:21:19.976>pick <00:21:20.118>it <00:21:20.260>up <00:21:20.402>and <00:21:20.543>should <00:21:20.685>work <00:21:20.827>on <00:21:20.969>it.

467
00:21:21.095 --> 00:21:22.655
<00:21:21.095>Microservice <00:21:21.445>B <00:21:21.795>takes <00:21:22.145>this <00:21:22.495>message,

468
00:21:24.085 --> 00:21:26.425
<00:21:24.085>and <00:21:24.260>once <00:21:24.435>it's <00:21:24.610>done, <00:21:24.785>it <00:21:24.960>sends <00:21:25.135>back <00:21:25.310>the <00:21:25.485>message.

469
00:21:26.965 --> 00:21:30.945
<00:21:26.965>And <00:21:27.120>microservice <00:21:27.276>e <00:21:27.431>kind <00:21:27.587>of <00:21:27.742>subscribes <00:21:27.898>maybe <00:21:28.053>to <00:21:28.209>the <00:21:28.365>response.

470
00:21:31.885 --> 00:21:34.465
<00:21:31.885>And <00:21:32.040>this <00:21:32.196>is <00:21:32.351>what <00:21:32.507>we <00:21:32.662>tend <00:21:32.818>to <00:21:32.973>call <00:21:33.129>back <00:21:33.285>pressure

471
00:21:34.685 --> 00:21:35.985
<00:21:34.685>and <00:21:35.270>location <00:21:35.855>transparency.

472
00:21:36.485 --> 00:21:39.345
<00:21:36.485>On <00:21:36.625>the <00:21:36.764>first <00:21:36.905>example <00:21:37.044>you <00:21:37.185>saw <00:21:37.324>that <00:21:37.465>we <00:21:37.604>support <00:21:37.745>back <00:21:37.885>pressure.

473
00:21:39.405 --> 00:21:42.705
<00:21:39.405>Now, <00:21:39.545>if <00:21:39.685>we <00:21:39.825>have <00:21:39.965>a <00:21:40.105>bottleneck, <00:21:40.245>if <00:21:40.385>we <00:21:40.524>have <00:21:40.665>a <00:21:40.805>latency

474
00:21:43.295 --> 00:21:45.985
<00:21:43.295>part <00:21:43.528>in <00:21:43.761>our <00:21:43.995>system <00:21:44.228>with <00:21:44.461>back <00:21:44.695>pressure,

475
00:21:46.045 --> 00:21:49.585
<00:21:46.045>we <00:21:46.200>don't <00:21:46.356>move <00:21:46.511>the <00:21:46.667>latency <00:21:46.822>down <00:21:46.978>to <00:21:47.133>the <00:21:47.289>first <00:21:47.445>caller.

476
00:21:49.645 --> 00:21:52.255
<00:21:49.645>We <00:21:50.111>isolate <00:21:50.578>the <00:21:51.045>latency.

477
00:21:52.675 --> 00:21:55.335
<00:21:52.675>And <00:21:52.875>with <00:21:53.075>location <00:21:53.274>transparency, <00:21:53.475>we <00:21:53.675>get <00:21:53.875>the <00:21:54.075>easy,

478
00:21:56.315 --> 00:21:59.135
<00:21:56.315>the <00:21:56.490>easy <00:21:56.665>advantage <00:21:56.840>of <00:21:57.015>being <00:21:57.190>able <00:21:57.365>to <00:21:57.540>scale <00:21:57.715>out

479
00:21:59.765 --> 00:22:02.695
<00:21:59.765>because <00:21:59.965>the <00:22:00.165>provider <00:22:00.365>doesn't <00:22:00.565>know <00:22:00.765>the <00:22:00.965>consumer <00:22:01.165>anymore.

480
00:22:03.525 --> 00:22:04.945
<00:22:03.525>So <00:22:03.780>we <00:22:04.036>can <00:22:04.291>easily <00:22:04.547>scale <00:22:04.803>out

481
00:22:04.945 --> 00:22:08.225
<00:22:04.945>because <00:22:05.100>we <00:22:05.256>have <00:22:05.411>to <00:22:05.567>stream <00:22:05.722>as <00:22:05.878>an <00:22:06.033>interaction <00:22:06.189>in <00:22:06.345>between.

482
00:22:08.365 --> 00:22:09.825
<00:22:08.365>So <00:22:08.693>we <00:22:09.022>decouple <00:22:09.350>the <00:22:09.679>systems,

483
00:22:10.445 --> 00:22:12.225
<00:22:10.445>so <00:22:10.794>we <00:22:11.145>support <00:22:11.495>location <00:22:11.845>transparency,

484
00:22:12.365 --> 00:22:13.705
<00:22:12.365>and <00:22:12.666>we <00:22:12.968>support <00:22:13.269>back <00:22:13.571>pressure.

485
00:22:14.845 --> 00:22:16.145
<00:22:14.845>And <00:22:15.079>now <00:22:15.313>the <00:22:15.547>slide <00:22:15.781>looks <00:22:16.014>similar.

486
00:22:16.255 --> 00:22:17.505
<00:22:16.255>Then, <00:22:16.442>uh, <00:22:16.630>the <00:22:16.817>slide <00:22:17.005>I <00:22:17.192>showed <00:22:17.380>it

487
00:22:17.505 --> 00:22:19.025
<00:22:17.505>before <00:22:17.961>for <00:22:18.417>react <00:22:18.873>programming,

488
00:22:19.775 --> 00:22:23.065
<00:22:19.775>basically <00:22:19.915>all <00:22:20.055>we <00:22:20.195>do <00:22:20.335>in <00:22:20.475>reactive <00:22:20.615>system <00:22:20.755>is <00:22:20.895>we <00:22:21.035>move <00:22:21.175>from

489
00:22:23.305 --> 00:22:24.665
<00:22:23.305>synchronous <00:22:23.713>pool <00:22:24.121>based <00:22:24.529>architectures

490
00:22:24.665 --> 00:22:26.385
<00:22:24.665>to <00:22:25.131>asynchronous <00:22:25.598>push-based <00:22:26.065>architectures.

491
00:22:27.785 --> 00:22:29.845
<00:22:27.785>Let <00:22:27.960>me <00:22:28.135>guide <00:22:28.310>you <00:22:28.485>through <00:22:28.660>this <00:22:28.835>by <00:22:29.010>the <00:22:29.185>history

492
00:22:29.845 --> 00:22:33.605
<00:22:29.845>of <00:22:30.000>microservices <00:22:30.156>to <00:22:30.311>say, <00:22:30.467>yeah, <00:22:30.622>at <00:22:30.778>least <00:22:30.933>the, <00:22:31.089>the <00:22:31.245>history

493
00:22:33.605 --> 00:22:37.405
<00:22:33.605>of <00:22:33.780>microservices, <00:22:33.955>uh, <00:22:34.130>I <00:22:34.305>I <00:22:34.480>I <00:22:34.655>was <00:22:34.830>in, <00:22:35.005>yeah.

494
00:22:37.665 --> 00:22:40.725
<00:22:37.665>So <00:22:37.820>when <00:22:37.976>we <00:22:38.131>started <00:22:38.287>with <00:22:38.442>micro, <00:22:38.598>I <00:22:38.753>would <00:22:38.909>say <00:22:39.065>2010,

495
00:22:40.725 --> 00:22:43.005
<00:22:40.725>something <00:22:40.925>like <00:22:41.125>this, <00:22:41.324>when, <00:22:41.524>when <00:22:41.725>huge <00:22:41.925>enterprises <00:22:42.125>were,

496
00:22:43.155 --> 00:22:45.685
<00:22:43.155>when <00:22:43.388>most <00:22:43.621>companies <00:22:43.855>actually <00:22:44.088>in, <00:22:44.321>in <00:22:44.555>Vienna

497
00:22:45.705 --> 00:22:48.765
<00:22:45.705>or <00:22:45.905>Central <00:22:46.105>Europe <00:22:46.304>picked <00:22:46.504>up <00:22:46.705>the <00:22:46.905>architectural <00:22:47.105>style

498
00:22:48.765 --> 00:22:50.485
<00:22:48.765>of <00:22:49.045>microservices, <00:22:49.325>we <00:22:49.605>had <00:22:49.885>this <00:22:50.165>idea,

499
00:22:50.485 --> 00:22:51.565
<00:22:50.485>we <00:22:50.727>have <00:22:50.971>a <00:22:51.214>web <00:22:51.457>application.

500
00:22:51.595 --> 00:22:53.605
<00:22:51.595>This <00:22:51.795>web <00:22:51.995>application <00:22:52.195>is <00:22:52.395>talking <00:22:52.595>to <00:22:52.795>a <00:22:52.995>microservice.

501
00:22:53.675 --> 00:22:55.725
<00:22:53.675>This <00:22:53.875>microservice <00:22:54.075>A <00:22:54.274>is <00:22:54.475>talking <00:22:54.675>to <00:22:54.875>microservice <00:22:55.075>B,

502
00:22:55.725 --> 00:22:58.045
<00:22:55.725>because <00:22:55.925>microservice <00:22:56.125>P <00:22:56.324>is <00:22:56.524>talking <00:22:56.725>to <00:22:56.925>a <00:22:57.125>microservice.

503
00:22:58.325 --> 00:23:00.925
<00:22:58.325>C, <00:22:58.500>microservice <00:22:58.675>C <00:22:58.850>at <00:22:59.025>some <00:22:59.200>point <00:22:59.375>in <00:22:59.550>time <00:22:59.725>responds

504
00:23:00.925 --> 00:23:02.685
<00:23:00.925>to <00:23:01.100>microservice <00:23:01.274>P <00:23:01.450>and <00:23:01.625>so <00:23:01.800>on <00:23:01.975>and <00:23:02.149>so <00:23:02.325>forth.

505
00:23:04.125 --> 00:23:05.465
<00:23:04.125>And <00:23:04.366>as <00:23:04.607>we <00:23:04.848>have <00:23:05.089>seen <00:23:05.331>before,

506
00:23:06.255 --> 00:23:09.025
<00:23:06.255>when <00:23:06.455>microservice <00:23:06.655>C <00:23:06.855>has <00:23:07.055>high <00:23:07.255>latency, <00:23:07.455>for <00:23:07.655>example,

507
00:23:10.195 --> 00:23:11.935
<00:23:10.195>that's <00:23:10.428>a <00:23:10.661>bottleneck <00:23:10.895>for <00:23:11.128>the <00:23:11.361>whole <00:23:11.595>system

508
00:23:12.205 --> 00:23:14.575
<00:23:12.205>because <00:23:12.438>we <00:23:12.671>do <00:23:12.905>not <00:23:13.138>support <00:23:13.371>back <00:23:13.605>pressure.

509
00:23:15.395 --> 00:23:18.175
<00:23:15.395>We <00:23:15.570>have <00:23:15.745>this <00:23:15.920>first <00:23:16.095>generation <00:23:16.270>of <00:23:16.445>microservices <00:23:16.620>was <00:23:16.795>very

510
00:23:18.755 --> 00:23:20.815
<00:23:18.755>ous <00:23:19.035>without <00:23:19.315>back <00:23:19.595>pressure <00:23:19.875>support, <00:23:20.155>right?

511
00:23:21.915 --> 00:23:25.215
<00:23:21.915>And <00:23:22.090>then <00:23:22.264>people <00:23:22.440>started <00:23:22.615>to <00:23:22.790>realize <00:23:22.965>this <00:23:23.139>said, <00:23:23.315>started

512
00:23:25.215 --> 00:23:28.095
<00:23:25.215>to <00:23:25.342>realize <00:23:25.469>this <00:23:25.596>and <00:23:25.724>said, <00:23:25.851>okay, <00:23:25.978>we <00:23:26.105>need <00:23:26.233>to <00:23:26.360>solve <00:23:26.487>this <00:23:26.615>issue.

513
00:23:28.355 --> 00:23:30.415
<00:23:28.355>So <00:23:28.588>we <00:23:28.821>need <00:23:29.055>to <00:23:29.288>isolate <00:23:29.521>the <00:23:29.755>bottleneck.

514
00:23:33.195 --> 00:23:35.535
<00:23:33.195>And <00:23:33.350>we <00:23:33.506>did <00:23:33.661>this <00:23:33.817>by <00:23:33.972>introducing <00:23:34.128>cues <00:23:34.283>in <00:23:34.439>many <00:23:34.595>situations.

515
00:23:36.235 --> 00:23:38.775
<00:23:36.235>So <00:23:36.514>we <00:23:36.794>decoupled <00:23:37.074>the <00:23:37.354>direct <00:23:37.635>communication

516
00:23:38.775 --> 00:23:40.855
<00:23:38.775>between <00:23:39.008>the <00:23:39.241>microservice <00:23:39.475>and <00:23:39.708>introducing <00:23:39.941>a <00:23:40.175>queue.

517
00:23:41.075 --> 00:23:43.935
<00:23:41.075>So <00:23:41.250>if <00:23:41.425>microservice <00:23:41.600>B <00:23:41.775>talks <00:23:41.950>to <00:23:42.125>the <00:23:42.300>high <00:23:42.475>latency,

518
00:23:43.975 --> 00:23:47.485
<00:23:43.975>microservice <00:23:44.149>C <00:23:44.324>sends <00:23:44.500>a <00:23:44.675>message <00:23:44.850>to <00:23:45.024>the <00:23:45.199>queue <00:23:45.375>and,

519
00:23:47.545 --> 00:23:48.925
<00:23:47.545>and <00:23:47.855>it's <00:23:48.166>more <00:23:48.476>done, <00:23:48.787>right?

520
00:23:50.115 --> 00:23:51.935
<00:23:50.115>And <00:23:50.395>whenever <00:23:50.675>microservice <00:23:50.955>C <00:23:51.235>is <00:23:51.515>finished,

521
00:23:52.395 --> 00:23:54.815
<00:23:52.395>it <00:23:52.595>returns <00:23:52.795>those <00:23:52.995>message <00:23:53.195>to <00:23:53.395>the <00:23:53.595>queue <00:23:53.795>and,

522
00:23:54.835 --> 00:23:56.855
<00:23:54.835>and <00:23:55.115>microservice <00:23:55.395>can <00:23:55.675>consume <00:23:55.955>it <00:23:56.235>again.

523
00:23:57.435 --> 00:23:59.815
<00:23:57.435>So <00:23:57.668>that's <00:23:57.901>the <00:23:58.135>second <00:23:58.368>generation <00:23:58.601>of <00:23:58.835>microservice

524
00:23:59.825 --> 00:24:02.135
<00:23:59.825>where <00:24:00.175>we <00:24:00.525>did <00:24:00.875>already <00:24:01.225>partial

525
00:24:02.395 --> 00:24:04.215
<00:24:02.395>as <00:24:02.745>synchronous <00:24:03.095>communication <00:24:03.445>with <00:24:03.795>queues.

526
00:24:04.295 --> 00:24:08.295
<00:24:04.295>We <00:24:04.422>used <00:24:04.549>a <00:24:04.676>lot <00:24:04.804>of <00:24:04.931>tools <00:24:05.058>like <00:24:05.185>Apache, <00:24:05.313>uh, <00:24:05.440>sorry, <00:24:05.567>active <00:24:05.695>mq

527
00:24:09.115 --> 00:24:10.575
<00:24:09.115>mq <00:24:09.553>or <00:24:09.991>Apache <00:24:10.429>Qubit.

528
00:24:10.575 --> 00:24:15.435
<00:24:10.575>Yeah. <00:24:10.925>And <00:24:11.275>then <00:24:11.625>we <00:24:11.975>started

529
00:24:16.255 --> 00:24:19.275
<00:24:16.255>to <00:24:16.535>actually <00:24:16.815>scale <00:24:17.095>out <00:24:17.375>those <00:24:17.655>systems

530
00:24:19.275 --> 00:24:21.395
<00:24:19.275>because <00:24:19.555>we <00:24:19.835>realized, <00:24:20.115>okay, <00:24:20.395>with <00:24:20.675>queues,

531
00:24:21.395 --> 00:24:22.915
<00:24:21.395>we <00:24:21.851>have <00:24:22.307>location <00:24:22.763>transparency.

532
00:24:23.095 --> 00:24:24.795
<00:24:23.095>We <00:24:23.375>can <00:24:23.655>easily <00:24:23.935>scale <00:24:24.215>out <00:24:24.495>systems.

533
00:24:25.255 --> 00:24:26.955
<00:24:25.255>For <00:24:25.535>example, <00:24:25.815>this <00:24:26.095>high <00:24:26.375>latency <00:24:26.655>system.

534
00:24:27.495 --> 00:24:30.275
<00:24:27.495>And <00:24:27.650>we <00:24:27.806>started <00:24:27.961>to <00:24:28.117>put <00:24:28.272>queues <00:24:28.428>in <00:24:28.583>between <00:24:28.739>everywhere, <00:24:28.895>right?

535
00:24:30.275 --> 00:24:32.835
<00:24:30.275>Because <00:24:30.450>we <00:24:30.625>realized <00:24:30.800>queues <00:24:30.975>bring <00:24:31.150>a <00:24:31.325>lot <00:24:31.500>of <00:24:31.675>advantage

536
00:24:33.385 --> 00:24:35.915
<00:24:33.385>when <00:24:33.560>we <00:24:33.735>kind <00:24:33.910>of <00:24:34.085>need <00:24:34.260>resilience <00:24:34.435>within <00:24:34.610>our <00:24:34.785>system.

537
00:24:37.475 --> 00:24:38.575
<00:24:37.475>And <00:24:37.722>once <00:24:37.970>we <00:24:38.217>there, <00:24:38.465>there,

538
00:24:38.635 --> 00:24:41.055
<00:24:38.635>we <00:24:38.868>actually <00:24:39.101>all <00:24:39.335>microservice <00:24:39.568>we're <00:24:39.801>just <00:24:40.035>communicating

539
00:24:41.115 --> 00:24:42.175
<00:24:41.115>via <00:24:41.592>queues <00:24:42.069>anymore.

540
00:24:42.435 --> 00:24:44.535
<00:24:42.435>We <00:24:42.590>said, <00:24:42.746>okay, <00:24:42.901>let's, <00:24:43.057>let's <00:24:43.212>rethink <00:24:43.368>this <00:24:43.523>a <00:24:43.679>little <00:24:43.835>bit.

541
00:24:44.535 --> 00:24:48.255
<00:24:44.535>Maybe, <00:24:44.710>yeah, <00:24:44.885>let's <00:24:45.060>start <00:24:45.235>with <00:24:45.410>the <00:24:45.585>web <00:24:45.760>application. <00:24:45.935>Again.

542
00:24:48.475 --> 00:24:50.735
<00:24:48.475>The <00:24:48.649>web <00:24:48.824>application <00:24:49.000>usually <00:24:49.175>talk <00:24:49.350>to <00:24:49.524>kind <00:24:49.699>of <00:24:49.875>back

543
00:24:50.735 --> 00:24:53.815
<00:24:50.735>and <00:24:50.890>front <00:24:51.046>end <00:24:51.201>or <00:24:51.357>kind <00:24:51.512>of <00:24:51.668>any <00:24:51.823>other <00:24:51.979>microservice, <00:24:52.135>right?

544
00:24:54.235 --> 00:24:56.495
<00:24:54.235>And <00:24:54.468>this <00:24:54.701>microservice <00:24:54.935>then <00:24:55.168>took <00:24:55.401>the <00:24:55.635>message

545
00:24:58.165 --> 00:24:59.585
<00:24:58.165>and <00:24:58.420>wrote <00:24:58.676>it <00:24:58.931>to <00:24:59.187>a <00:24:59.443>stream.

546
00:25:00.825 --> 00:25:03.085
<00:25:00.825>And <00:25:01.058>whoever <00:25:01.291>was <00:25:01.525>interested <00:25:01.758>in <00:25:01.991>this <00:25:02.225>message,

547
00:25:03.175 --> 00:25:04.525
<00:25:03.175>let's <00:25:03.478>assume <00:25:03.782>a <00:25:04.086>new <00:25:04.390>payment,

548
00:25:04.885 --> 00:25:06.485
<00:25:04.885>a <00:25:05.165>new <00:25:05.445>transaction <00:25:05.725>was <00:25:06.004>triggered, <00:25:06.285>right?

549
00:25:06.785 --> 00:25:09.285
<00:25:06.785>Web <00:25:06.985>application <00:25:07.185>triggers <00:25:07.385>a <00:25:07.585>new <00:25:07.785>transaction, <00:25:07.985>sends <00:25:08.185>it

550
00:25:09.285 --> 00:25:11.725
<00:25:09.285>to <00:25:09.485>the <00:25:09.685>microservice, <00:25:09.885>to <00:25:10.085>the <00:25:10.285>backend <00:25:10.485>for <00:25:10.685>fronted,

551
00:25:11.725 --> 00:25:13.325
<00:25:11.725>and <00:25:12.004>this <00:25:12.284>backend <00:25:12.564>for <00:25:12.844>fronted <00:25:13.125>forwards,

552
00:25:13.325 --> 00:25:14.605
<00:25:13.325>this <00:25:13.555>new <00:25:13.785>transaction <00:25:14.016>to <00:25:14.246>the <00:25:14.477>stream.

553
00:25:15.625 --> 00:25:18.075
<00:25:15.625>Then <00:25:15.825>maybe <00:25:16.025>we <00:25:16.225>have <00:25:16.425>a <00:25:16.625>microservice <00:25:16.825>A <00:25:17.025>which

554
00:25:18.075 --> 00:25:19.475
<00:25:18.075>checks <00:25:18.495>for <00:25:18.915>money <00:25:19.335>laundering.

555
00:25:21.095 --> 00:25:22.435
<00:25:21.095>And <00:25:21.396>he <00:25:21.698>says, <00:25:21.999>okay, <00:25:22.301>cool.

556
00:25:23.025 --> 00:25:25.035
<00:25:23.025>Payment <00:25:23.375>event, <00:25:23.725>new <00:25:24.075>transaction <00:25:24.425>event.

557
00:25:25.035 --> 00:25:26.875
<00:25:25.035>That's <00:25:25.235>interesting <00:25:25.435>for <00:25:25.635>me. <00:25:25.835>I <00:25:26.035>subscribed <00:25:26.235>to <00:25:26.435>this.

558
00:25:27.405 --> 00:25:30.755
<00:25:27.405>Let's <00:25:27.580>check <00:25:27.754>if <00:25:27.930>it's <00:25:28.105>um, <00:25:28.280>relevant <00:25:28.455>for <00:25:28.629>money <00:25:28.805>laundering.

559
00:25:31.055 --> 00:25:32.875
<00:25:31.055>No, <00:25:31.288>everything <00:25:31.521>looks <00:25:31.755>fine. <00:25:31.988>Let's <00:25:32.221>fight <00:25:32.455>back.

560
00:25:32.905 --> 00:25:35.475
<00:25:32.905>Okay, <00:25:33.185>this <00:25:33.465>payment <00:25:33.745>should <00:25:34.024>be <00:25:34.305>performed.

561
00:25:35.535 --> 00:25:36.835
<00:25:35.535>So <00:25:35.925>perform <00:25:36.315>payment <00:25:36.705>event

562
00:25:36.835 --> 00:25:39.275
<00:25:36.835>or <00:25:37.035>something <00:25:37.235>like <00:25:37.435>this <00:25:37.635>with <00:25:37.835>a <00:25:38.035>second <00:25:38.235>microservice,

563
00:25:39.495 --> 00:25:42.885
<00:25:39.495>the <00:25:39.728>payment <00:25:39.961>gateway <00:25:40.195>picks <00:25:40.428>up <00:25:40.661>the <00:25:40.895>payment

564
00:25:44.775 --> 00:25:47.285
<00:25:44.775>event <00:25:44.930>from <00:25:45.086>the <00:25:45.241>stream <00:25:45.397>says, <00:25:45.552>okay, <00:25:45.708>let's <00:25:45.863>perform <00:25:46.019>the <00:25:46.175>payment.

565
00:25:47.395 --> 00:25:49.885
<00:25:47.395>Once <00:25:47.535>the <00:25:47.675>payment <00:25:47.815>is <00:25:47.955>performed, <00:25:48.095>we <00:25:48.235>write <00:25:48.375>back <00:25:48.514>to <00:25:48.655>the <00:25:48.795>stream,

566
00:25:50.035 --> 00:25:51.765
<00:25:50.035>okay, <00:25:50.501>payment <00:25:50.968>performed <00:25:51.435>event,

567
00:25:52.435 --> 00:25:54.525
<00:25:52.435>last <00:25:52.668>microservice <00:25:52.901>maybe <00:25:53.135>kind <00:25:53.368>of <00:25:53.601>a <00:25:53.835>notification.

568
00:25:54.525 --> 00:25:56.605
<00:25:54.525>Microservice <00:25:54.700>sends <00:25:54.875>out <00:25:55.050>an <00:25:55.225>email <00:25:55.400>if <00:25:55.575>the <00:25:55.750>payment <00:25:55.925>was

569
00:25:56.605 --> 00:25:59.765
<00:25:56.605>successfully <00:25:56.838>done, <00:25:57.071>takes <00:25:57.305>the <00:25:57.538>previous <00:25:57.771>event, <00:25:58.005>subscribed

570
00:25:59.765 --> 00:26:01.205
<00:25:59.765>to <00:26:00.089>it, <00:26:00.413>writes <00:26:00.737>back, <00:26:01.061>okay,

571
00:26:01.315 --> 00:26:04.085
<00:26:01.315>payment <00:26:01.595>successfully <00:26:01.875>done <00:26:02.155>email <00:26:02.435>sent <00:26:02.715>out,

572
00:26:04.945 --> 00:26:06.925
<00:26:04.945>web <00:26:05.225>application <00:26:05.504>just <00:26:05.784>shows, <00:26:06.064>okay, <00:26:06.345>cool.

573
00:26:07.065 --> 00:26:09.815
<00:26:07.065>The <00:26:07.265>payment <00:26:07.465>was <00:26:07.665>done. <00:26:07.865>So <00:26:08.065>this <00:26:08.265>was <00:26:08.465>kind

574
00:26:09.815 --> 00:26:11.375
<00:26:09.815>of <00:26:10.095>the <00:26:10.375>third <00:26:10.655>generation <00:26:10.935>of <00:26:11.215>microservice.

575
00:26:11.515 --> 00:26:14.135
<00:26:11.515>We <00:26:11.715>saw <00:26:11.915>fully <00:26:12.115>air, <00:26:12.315>synchronous <00:26:12.515>and <00:26:12.715>stream <00:26:12.915>centric.

576
00:26:17.495 --> 00:26:20.275
<00:26:17.495>And <00:26:17.695>we <00:26:17.895>usually <00:26:18.094>used <00:26:18.294>tools <00:26:18.495>like <00:26:18.695>Apache <00:26:18.895>Kafka

577
00:26:20.735 --> 00:26:22.155
<00:26:20.735>or <00:26:21.054>Apache <00:26:21.374>Pull <00:26:21.693>for <00:26:22.013>this.

578
00:26:23.055 --> 00:26:26.555
<00:26:23.055>And <00:26:23.210>what <00:26:23.366>we <00:26:23.521>realized <00:26:23.677>when <00:26:23.832>we <00:26:23.988>built <00:26:24.143>those <00:26:24.299>systems <00:26:24.455>is

579
00:26:26.555 --> 00:26:29.475
<00:26:26.555>that <00:26:26.788>events <00:26:27.021>act <00:26:27.255>as <00:26:27.488>the <00:26:27.721>system <00:26:27.955>state

580
00:26:30.765 --> 00:26:33.505
<00:26:30.765>in <00:26:30.920>this <00:26:31.076>very <00:26:31.231>simple <00:26:31.387>example <00:26:31.542>of <00:26:31.698>a <00:26:31.853>stream <00:26:32.009>of <00:26:32.165>transaction.

581
00:26:33.595 --> 00:26:36.145
<00:26:33.595>Let's <00:26:33.795>go <00:26:33.995>through <00:26:34.195>this <00:26:34.395>again, <00:26:34.595>mark <00:26:34.795>sense <00:26:34.995>David,

582
00:26:36.265 --> 00:26:38.305
<00:26:36.265>a <00:26:36.545>hundred <00:26:36.825>years <00:26:37.105>Mark <00:26:37.385>Sense <00:26:37.665>Maria,

583
00:26:38.305 --> 00:26:41.505
<00:26:38.305>70 <00:26:38.538>years <00:26:38.771>David <00:26:39.005>sent <00:26:39.238>Maria <00:26:39.471>25 <00:26:39.705>years.

584
00:26:43.045 --> 00:26:46.795
<00:26:43.045>These <00:26:43.220>events <00:26:43.395>actually <00:26:43.570>represent <00:26:43.745>the <00:26:43.920>state <00:26:44.095>of <00:26:44.270>our <00:26:44.445>application

585
00:26:46.795 --> 00:26:49.835
<00:26:46.795>because <00:26:46.950>by <00:26:47.106>just <00:26:47.261>having <00:26:47.417>those <00:26:47.572>events, <00:26:47.728>we <00:26:47.883>could <00:26:48.039>easily <00:26:48.195>say,

586
00:26:49.865 --> 00:26:53.275
<00:26:49.865>okay, <00:26:50.098>cool, <00:26:50.331>this <00:26:50.565>is <00:26:50.798>currently <00:26:51.031>the <00:26:51.265>balance

587
00:26:53.335 --> 00:26:54.755
<00:26:53.335>of <00:26:53.654>all <00:26:53.974>our <00:26:54.293>system <00:26:54.613>users.

588
00:26:54.805 --> 00:26:57.915
<00:26:54.805>David <00:26:54.932>has <00:26:55.059>75 <00:26:55.186>euro <00:26:55.314>because <00:26:55.441>he <00:26:55.568>got <00:26:55.695>a <00:26:55.823>hundred <00:26:55.950>euro <00:26:56.077>for <00:26:56.205>Max

589
00:26:57.915 --> 00:27:01.995
<00:26:57.915>and <00:26:58.055>he <00:26:58.195>and <00:26:58.335>25 <00:26:58.475>Euro <00:26:58.615>to <00:26:58.754>Maria <00:26:58.895>Max <00:26:59.034>minus <00:26:59.175>170 <00:26:59.315>years

590
00:27:01.995 --> 00:27:03.795
<00:27:01.995>because <00:27:02.228>he <00:27:02.461>sent <00:27:02.695>a <00:27:02.928>hundred <00:27:03.161>to <00:27:03.395>David

591
00:27:03.895 --> 00:27:04.955
<00:27:03.895>and <00:27:04.085>sent <00:27:04.276>a <00:27:04.467>hundred <00:27:04.658>to <00:27:04.849>Maria.

592
00:27:05.375 --> 00:27:08.635
<00:27:05.375>And <00:27:05.515>Maria <00:27:05.655>has <00:27:05.795>95 <00:27:05.935>years <00:27:06.075>because <00:27:06.215>she <00:27:06.355>got <00:27:06.495>25 <00:27:06.635>from <00:27:06.775>David

593
00:27:08.695 --> 00:27:09.915
<00:27:08.695>and <00:27:08.969>got <00:27:09.244>70 <00:27:09.518>from <00:27:09.793>Max.

594
00:27:09.915 --> 00:27:14.605
<00:27:09.915>Right? <00:27:10.070>And <00:27:10.226>this <00:27:10.381>is <00:27:10.537>what <00:27:10.692>we <00:27:10.848>typically <00:27:11.003>call <00:27:11.159>event <00:27:11.315>sourcing

595
00:27:14.865 --> 00:27:16.725
<00:27:14.865>or <00:27:15.098>what <00:27:15.331>we <00:27:15.565>typically <00:27:15.798>call <00:27:16.031>event <00:27:16.265>sourcing.

596
00:27:17.425 --> 00:27:19.965
<00:27:17.425>And <00:27:17.565>this <00:27:17.705>idea <00:27:17.845>of <00:27:17.985>event <00:27:18.125>sourcing <00:27:18.264>is <00:27:18.405>not <00:27:18.544>new <00:27:18.685>at <00:27:18.825>all.

597
00:27:20.825 --> 00:27:25.005
<00:27:20.825>It <00:27:20.980>just <00:27:21.136>allows <00:27:21.291>us <00:27:21.447>more <00:27:21.602>reactive <00:27:21.758>systems <00:27:21.913>with, <00:27:22.069>with <00:27:22.225>a,

598
00:27:25.005 --> 00:27:27.525
<00:27:25.005>with <00:27:25.180>a <00:27:25.355>very <00:27:25.530>event <00:27:25.705>centric <00:27:25.880>approach, <00:27:26.055>allow <00:27:26.230>us <00:27:26.405>to,

599
00:27:27.545 --> 00:27:28.565
<00:27:27.545>to <00:27:27.774>do <00:27:28.004>this <00:27:28.233>very <00:27:28.463>easily.

600
00:27:29.665 --> 00:27:32.125
<00:27:29.665>And <00:27:29.792>if <00:27:29.919>you, <00:27:30.046>if <00:27:30.174>you <00:27:30.301>think <00:27:30.428>about <00:27:30.555>it, <00:27:30.683>this <00:27:30.810>is <00:27:30.937>how <00:27:31.065>banks

601
00:27:32.185 --> 00:27:35.725
<00:27:32.185>for <00:27:32.325>example, <00:27:32.465>work <00:27:32.605>since <00:27:32.745>ever, <00:27:32.885>if <00:27:33.024>you <00:27:33.165>go <00:27:33.304>to <00:27:33.445>a <00:27:33.585>bank

602
00:27:35.725 --> 00:27:37.605
<00:27:35.725>and <00:27:35.958>say, <00:27:36.191>Hey, <00:27:36.425>sorry, <00:27:36.658>something <00:27:36.891>is <00:27:37.125>wrong

603
00:27:37.635 --> 00:27:38.685
<00:27:37.635>with <00:27:37.950>my <00:27:38.264>bank <00:27:38.580>account.

604
00:27:39.085 --> 00:27:41.005
<00:27:39.085>I <00:27:39.240>should <00:27:39.396>have <00:27:39.551>a <00:27:39.707>hundred <00:27:39.862>years <00:27:40.018>on <00:27:40.173>my <00:27:40.329>bank <00:27:40.485>account,

605
00:27:41.005 --> 00:27:44.045
<00:27:41.005>but <00:27:41.132>I <00:27:41.259>just <00:27:41.386>only <00:27:41.514>have <00:27:41.641>75 <00:27:41.768>years <00:27:41.895>on <00:27:42.023>my <00:27:42.150>bank <00:27:42.277>account, <00:27:42.405>right?

606
00:27:45.165 --> 00:27:47.465
<00:27:45.165>If <00:27:45.305>they <00:27:45.445>just <00:27:45.585>tell <00:27:45.725>you, <00:27:45.865>Hmm, <00:27:46.004>let <00:27:46.145>me <00:27:46.284>check <00:27:46.425>the <00:27:46.565>table

607
00:27:47.565 --> 00:27:49.825
<00:27:47.565>and <00:27:47.845>the <00:27:48.125>table, <00:27:48.405>they're <00:27:48.685>75, <00:27:48.965>yeah,

608
00:27:50.815 --> 00:27:51.865
<00:27:50.815>then <00:27:51.051>they <00:27:51.287>would've <00:27:51.523>a <00:27:51.760>problem

609
00:27:52.295 --> 00:27:54.025
<00:27:52.295>because <00:27:52.645>nobody <00:27:52.995>would <00:27:53.345>believe <00:27:53.695>them.

610
00:27:54.025 --> 00:27:57.145
<00:27:54.025>Because <00:27:54.180>what <00:27:54.336>they <00:27:54.491>basically <00:27:54.647>do <00:27:54.802>is <00:27:54.958>they <00:27:55.113>take <00:27:55.269>all <00:27:55.425>the

611
00:27:57.145 --> 00:27:58.385
<00:27:57.145>transactions, <00:27:57.517>sum <00:27:57.889>them <00:27:58.261>up,

612
00:27:58.525 --> 00:28:00.745
<00:27:58.525>and <00:27:58.758>ultimately <00:27:58.991>end <00:27:59.225>up <00:27:59.458>in <00:27:59.691>a <00:27:59.925>balance.

613
00:28:01.365 --> 00:28:03.545
<00:28:01.365>And <00:28:01.565>this <00:28:01.765>is <00:28:01.965>this <00:28:02.165>a <00:28:02.365>hundred <00:28:02.565>percent <00:28:02.765>reliability,

614
00:28:03.755 --> 00:28:05.185
<00:28:03.755>which <00:28:04.076>comes <00:28:04.398>with <00:28:04.720>event <00:28:05.042>sourcing.

615
00:28:07.185 --> 00:28:11.285
<00:28:07.185>And <00:28:07.325>by <00:28:07.465>taking <00:28:07.605>this <00:28:07.745>idea <00:28:07.885>further, <00:28:08.024>we <00:28:08.165>saw <00:28:08.304>a <00:28:08.445>new <00:28:08.585>generation

616
00:28:11.285 --> 00:28:13.245
<00:28:11.285>of <00:28:11.565>microservices <00:28:11.845>where <00:28:12.125>we <00:28:12.405>said, <00:28:12.685>okay,

617
00:28:13.345 --> 00:28:14.365
<00:28:13.345>we <00:28:13.574>maybe <00:28:13.804>don't <00:28:14.033>even <00:28:14.263>want

618
00:28:14.365 --> 00:28:16.885
<00:28:14.365>to <00:28:14.565>have <00:28:14.765>the <00:28:14.965>persistence <00:28:15.165>in <00:28:15.365>the <00:28:15.565>microservices <00:28:15.765>anymore.

619
00:28:17.665 --> 00:28:19.805
<00:28:17.665>We <00:28:17.945>want <00:28:18.225>to <00:28:18.504>centralize <00:28:18.784>the <00:28:19.065>persistent

620
00:28:19.955 --> 00:28:21.205
<00:28:19.955>persistence <00:28:20.330>on <00:28:20.705>the <00:28:21.080>stream.

621
00:28:21.665 --> 00:28:24.325
<00:28:21.665>So <00:28:21.820>we <00:28:21.976>move <00:28:22.131>the <00:28:22.287>persistence <00:28:22.442>from <00:28:22.598>the <00:28:22.753>right <00:28:22.909>hand <00:28:23.065>side

622
00:28:24.325 --> 00:28:27.085
<00:28:24.325>to <00:28:24.480>left <00:28:24.636>hand <00:28:24.791>side, <00:28:24.947>usually <00:28:25.102>then <00:28:25.258>don't <00:28:25.413>call <00:28:25.569>it <00:28:25.725>stream

623
00:28:27.085 --> 00:28:28.805
<00:28:27.085>anymore, <00:28:27.785>stream <00:28:28.485>anymore.

624
00:28:28.825 --> 00:28:29.965
<00:28:28.825>We <00:28:29.081>call <00:28:29.338>it <00:28:29.594>event <00:28:29.851>store.

625
00:28:30.465 --> 00:28:33.205
<00:28:30.465>And <00:28:30.572>what <00:28:30.680>we <00:28:30.788>then <00:28:30.895>of <00:28:31.003>course <00:28:31.111>also <00:28:31.218>can <00:28:31.326>do <00:28:31.434>is <00:28:31.541>we <00:28:31.649>can <00:28:31.757>move <00:28:31.865>from

626
00:28:33.205 --> 00:28:36.885
<00:28:33.205>microservices <00:28:33.379>to <00:28:33.554>the <00:28:33.730>world <00:28:33.905>of <00:28:34.080>functions <00:28:34.254>as <00:28:34.429>a <00:28:34.605>service

627
00:28:36.955 --> 00:28:40.605
<00:28:36.955>because <00:28:37.188>those <00:28:37.421>functions, <00:28:37.655>those <00:28:37.888>services <00:28:38.121>actually <00:28:38.355>stateless.

628
00:28:40.985 --> 00:28:42.445
<00:28:40.985>So <00:28:41.423>that's <00:28:41.860>why <00:28:42.299>function

629
00:28:42.445 --> 00:28:44.125
<00:28:42.445>as <00:28:42.620>a <00:28:42.794>service <00:28:42.970>makes <00:28:43.145>a <00:28:43.320>lot <00:28:43.495>of <00:28:43.669>sense <00:28:43.845>here.

630
00:28:44.545 --> 00:28:46.485
<00:28:44.545>And <00:28:44.825>that's <00:28:45.105>the <00:28:45.385>so-called <00:28:45.665>forced <00:28:45.945>generation

631
00:28:46.485 --> 00:28:49.725
<00:28:46.485>of <00:28:46.659>microservices <00:28:46.834>event <00:28:47.010>sourced <00:28:47.185>this <00:28:47.360>function <00:28:47.534>as <00:28:47.709>a <00:28:47.885>service.

632
00:28:51.795 --> 00:28:53.255
<00:28:51.795>We <00:28:52.057>use <00:28:52.320>tools <00:28:52.583>like <00:28:52.846>event <00:28:53.109>store

633
00:28:53.315 --> 00:28:56.455
<00:28:53.315>or <00:28:53.490>still <00:28:53.665>in <00:28:53.840>some <00:28:54.015>circumstances <00:28:54.190>Apache <00:28:54.365>Kafka <00:28:54.540>for <00:28:54.715>this.

634
00:28:57.415 --> 00:28:59.635
<00:28:57.415>But <00:28:57.648>that's <00:28:57.881>not <00:28:58.115>the <00:28:58.348>important <00:28:58.581>thing <00:28:58.815>here.

635
00:28:59.635 --> 00:29:01.835
<00:28:59.635>And <00:28:59.810>the <00:28:59.985>important <00:29:00.160>thing <00:29:00.335>doesn't <00:29:00.510>matter <00:29:00.685>if <00:29:00.860>you <00:29:01.035>go

636
00:29:01.835 --> 00:29:03.115
<00:29:01.835>with <00:29:02.123>the <00:29:02.411>central <00:29:02.699>event <00:29:02.987>store

637
00:29:03.115 --> 00:29:04.675
<00:29:03.115>or <00:29:03.395>just <00:29:03.675>a <00:29:03.955>central <00:29:04.235>stream, <00:29:04.515>is

638
00:29:05.425 --> 00:29:07.675
<00:29:05.425>that <00:29:05.705>we <00:29:05.985>move <00:29:06.264>fully <00:29:06.544>to <00:29:06.825>streaming.

639
00:29:09.855 --> 00:29:12.705
<00:29:09.855>Besides <00:29:10.055>one <00:29:10.255>small <00:29:10.455>thing, <00:29:10.655>which <00:29:10.855>doesn't <00:29:11.055>stream <00:29:11.255>yet

640
00:29:13.815 --> 00:29:15.115
<00:29:13.815>the <00:29:14.107>connection <00:29:14.400>between <00:29:14.692>the <00:29:14.985>web

641
00:29:15.115 --> 00:29:16.515
<00:29:15.115>application <00:29:15.535>and <00:29:15.955>the <00:29:16.375>microservice.

642
00:29:17.675 --> 00:29:20.165
<00:29:17.675>Because <00:29:17.955>here, <00:29:18.235>we, <00:29:18.514>we, <00:29:18.794>we <00:29:19.075>ultimately,

643
00:29:20.345 --> 00:29:24.285
<00:29:20.345>or <00:29:20.461>we, <00:29:20.578>we <00:29:20.695>actually <00:29:20.811>had <00:29:20.928>HT <00:29:21.045>P <00:29:21.161>or <00:29:21.278>we <00:29:21.395>still <00:29:21.511>have <00:29:21.628>HT <00:29:21.745>P

644
00:29:24.785 --> 00:29:28.045
<00:29:24.785>and <00:29:24.940>we <00:29:25.096>all <00:29:25.251>know <00:29:25.407>HTP <00:29:25.562>is <00:29:25.718>pool <00:29:25.873>base <00:29:26.029>rigorous <00:29:26.185>response.

645
00:29:28.885 --> 00:29:30.805
<00:29:28.885>I <00:29:29.040>ask <00:29:29.196>you <00:29:29.351>something <00:29:29.507>if <00:29:29.662>you <00:29:29.818>get <00:29:29.973>me <00:29:30.129>the <00:29:30.285>response.

646
00:29:31.785 --> 00:29:34.605
<00:29:31.785>So <00:29:31.940>we <00:29:32.096>have <00:29:32.251>a <00:29:32.407>nearly <00:29:32.562>end <00:29:32.718>to <00:29:32.873>end <00:29:33.029>reactive <00:29:33.185>system,

647
00:29:35.425 --> 00:29:38.285
<00:29:35.425>but <00:29:35.658>not <00:29:35.891>on <00:29:36.125>the <00:29:36.358>UI <00:29:36.591>side <00:29:36.825>there.

648
00:29:38.285 --> 00:29:40.445
<00:29:38.285>We <00:29:38.460>needed <00:29:38.635>to <00:29:38.810>do <00:29:38.985>polling <00:29:39.160>or <00:29:39.335>other <00:29:39.510>stuff, <00:29:39.685>right?

649
00:29:40.825 --> 00:29:42.965
<00:29:40.825>Or <00:29:41.025>we <00:29:41.225>started <00:29:41.425>to <00:29:41.625>work <00:29:41.825>with <00:29:42.025>web <00:29:42.225>sockets,

650
00:29:43.455 --> 00:29:45.565
<00:29:43.455>build <00:29:43.735>our <00:29:44.014>own <00:29:44.294>web <00:29:44.574>sockets <00:29:44.855>connections,

651
00:29:45.775 --> 00:29:46.885
<00:29:45.775>which <00:29:46.108>was <00:29:46.441>a <00:29:46.774>nightmare.

652
00:29:47.945 --> 00:29:51.965
<00:29:47.945>And <00:29:48.100>this <00:29:48.256>is <00:29:48.411>where <00:29:48.567>ultimately <00:29:48.722>craft <00:29:48.878>quel <00:29:49.033>starts <00:29:49.189>to <00:29:49.345>shine.

653
00:29:53.925 --> 00:29:56.615
<00:29:53.925>Because <00:29:54.080>I <00:29:54.236>have <00:29:54.391>the <00:29:54.547>feeling <00:29:54.702>graph <00:29:54.858>Quel <00:29:55.013>has <00:29:55.169>a <00:29:55.325>lot

654
00:29:56.615 --> 00:29:59.215
<00:29:56.615>of <00:29:56.742>momentum <00:29:56.869>right <00:29:56.996>now, <00:29:57.124>and <00:29:57.251>people <00:29:57.378>use <00:29:57.505>it <00:29:57.633>and <00:29:57.760>they <00:29:57.887>like <00:29:58.015>that.

655
00:29:59.215 --> 00:30:01.775
<00:29:59.215>They <00:29:59.370>use <00:29:59.526>it <00:29:59.681>and <00:29:59.837>they <00:29:59.992>say, <00:30:00.148>Hey, <00:30:00.303>we <00:30:00.459>use <00:30:00.615>it

656
00:30:01.775 --> 00:30:03.655
<00:30:01.775>because <00:30:02.008>we <00:30:02.241>can <00:30:02.475>have <00:30:02.708>consumer <00:30:02.941>driven <00:30:03.175>APIs.

657
00:30:03.805 --> 00:30:05.775
<00:30:03.805>That <00:30:04.005>that's <00:30:04.205>a <00:30:04.405>cool <00:30:04.605>feature <00:30:04.805>of <00:30:05.005>kaf <00:30:05.205>quel.

658
00:30:05.955 --> 00:30:08.015
<00:30:05.955>You <00:30:06.235>can <00:30:06.514>build <00:30:06.794>very <00:30:07.074>dynamic <00:30:07.355>APIs.

659
00:30:08.015 --> 00:30:10.015
<00:30:08.015>The <00:30:08.215>client <00:30:08.415>actually <00:30:08.615>says, <00:30:08.815>Hey, <00:30:09.015>I <00:30:09.215>need <00:30:09.415>this

660
00:30:10.015 --> 00:30:11.295
<00:30:10.015>or <00:30:10.245>this <00:30:10.475>or <00:30:10.706>this <00:30:10.936>data, <00:30:11.167>right?

661
00:30:12.705 --> 00:30:14.805
<00:30:12.705>But <00:30:12.905>that's <00:30:13.105>not <00:30:13.304>really <00:30:13.504>the <00:30:13.705>differentiator <00:30:13.905>for <00:30:14.105>me

662
00:30:14.805 --> 00:30:16.645
<00:30:14.805>because <00:30:15.038>we <00:30:15.271>build <00:30:15.505>it <00:30:15.738>back <00:30:15.971>and <00:30:16.205>forth

663
00:30:16.865 --> 00:30:20.725
<00:30:16.865>and <00:30:17.020>for <00:30:17.176>exactly <00:30:17.331>this <00:30:17.487>purpose <00:30:17.642>to <00:30:17.798>build <00:30:17.953>APIs <00:30:18.109>that <00:30:18.265>fit

664
00:30:21.345 --> 00:30:22.925
<00:30:21.345>the <00:30:21.811>consumer <00:30:22.278>best, <00:30:22.745>right?

665
00:30:23.105 --> 00:30:25.165
<00:30:23.105>And <00:30:23.280>then <00:30:23.455>they <00:30:23.630>say <00:30:23.805>we <00:30:23.980>have <00:30:24.155>native <00:30:24.330>schema <00:30:24.505>support.

666
00:30:25.185 --> 00:30:26.325
<00:30:25.185>That's <00:30:25.527>also <00:30:25.869>great. <00:30:26.211>Yeah.

667
00:30:26.325 --> 00:30:29.165
<00:30:26.325>Don't <00:30:26.500>get <00:30:26.675>me <00:30:26.850>wrong, <00:30:27.025>I <00:30:27.200>like <00:30:27.375>custom <00:30:27.550>driven <00:30:27.725>APIs,

668
00:30:29.265 --> 00:30:30.485
<00:30:29.265>um, <00:30:29.484>in <00:30:29.704>Kaf <00:30:29.923>quite <00:30:30.143>a <00:30:30.362>lot.

669
00:30:30.485 --> 00:30:32.285
<00:30:30.485>And <00:30:30.685>I <00:30:30.885>like <00:30:31.084>native <00:30:31.284>schema <00:30:31.485>support <00:30:31.685>a <00:30:31.885>lot.

670
00:30:32.585 --> 00:30:34.565
<00:30:32.585>But <00:30:32.740>again, <00:30:32.896>native <00:30:33.051>schema <00:30:33.207>support, <00:30:33.362>this <00:30:33.518>is <00:30:33.673>what <00:30:33.829>we <00:30:33.985>had

671
00:30:34.565 --> 00:30:38.325
<00:30:34.565>with <00:30:34.705>Vega <00:30:34.845>and <00:30:34.985>open <00:30:35.125>my <00:30:35.265>open <00:30:35.405>API <00:30:35.545>and <00:30:35.685>rest <00:30:35.825>already, <00:30:35.965>right?

672
00:30:38.745 --> 00:30:40.405
<00:30:38.745>So <00:30:38.978>it's <00:30:39.211>again, <00:30:39.445>not <00:30:39.678>a <00:30:39.911>big <00:30:40.145>differentiator.

673
00:30:41.835 --> 00:30:43.815
<00:30:41.835>And <00:30:41.990>this <00:30:42.146>is <00:30:42.301>where <00:30:42.457>I <00:30:42.612>kind <00:30:42.768>of <00:30:42.923>see <00:30:43.079>the <00:30:43.235>problem

674
00:30:44.155 --> 00:30:46.855
<00:30:44.155>or <00:30:44.310>kind <00:30:44.466>of <00:30:44.621>a <00:30:44.777>problem <00:30:44.932>that <00:30:45.088>people <00:30:45.243>use <00:30:45.399>craft <00:30:45.555>quail

675
00:30:46.855 --> 00:30:47.895
<00:30:46.855>as <00:30:47.167>super <00:30:47.479>dynamic <00:30:47.791>rest,

676
00:30:49.485 --> 00:30:53.745
<00:30:49.485>but <00:30:49.612>then <00:30:49.739>you <00:30:49.866>don't <00:30:49.994>utilize <00:30:50.121>craft <00:30:50.248>quail <00:30:50.375>for <00:30:50.503>what <00:30:50.630>it <00:30:50.757>really <00:30:50.885>is

677
00:30:53.765 --> 00:30:54.985
<00:30:53.765>or <00:30:53.984>for <00:30:54.204>what <00:30:54.423>it <00:30:54.643>really <00:30:54.862>brings

678
00:30:54.985 --> 00:30:57.305
<00:30:54.985>because <00:30:55.218>it <00:30:55.451>brings <00:30:55.685>end <00:30:55.918>trend <00:30:56.151>streaming <00:30:56.385>support.

679
00:30:59.115 --> 00:31:01.725
<00:30:59.115>Because <00:30:59.290>we <00:30:59.465>all <00:30:59.640>know <00:30:59.815>GraphQL <00:30:59.990>has <00:31:00.165>these <00:31:00.340>three <00:31:00.515>options.

680
00:31:01.825 --> 00:31:05.045
<00:31:01.825>You <00:31:01.952>can <00:31:02.079>mutate <00:31:02.206>data, <00:31:02.334>so <00:31:02.461>you <00:31:02.588>can <00:31:02.715>update <00:31:02.843>it, <00:31:02.970>you <00:31:03.097>can <00:31:03.225>query

681
00:31:05.045 --> 00:31:08.565
<00:31:05.045>with <00:31:05.185>data, <00:31:05.325>which <00:31:05.465>kind <00:31:05.605>of <00:31:05.745>means <00:31:05.885>that <00:31:06.025>you <00:31:06.165>fetch <00:31:06.305>data <00:31:06.445>once.

682
00:31:08.745 --> 00:31:11.125
<00:31:08.745>So <00:31:08.885>you <00:31:09.024>pull <00:31:09.165>it <00:31:09.304>in <00:31:09.445>a, <00:31:09.584>in <00:31:09.725>a <00:31:09.864>pull <00:31:10.004>based <00:31:10.145>manner,

683
00:31:11.505 --> 00:31:13.685
<00:31:11.505>or <00:31:11.705>you <00:31:11.905>can <00:31:12.105>subscribe <00:31:12.305>to <00:31:12.505>data, <00:31:12.705>which <00:31:12.905>means

684
00:31:13.685 --> 00:31:16.005
<00:31:13.685>that <00:31:13.860>you <00:31:14.034>subscribe <00:31:14.210>once <00:31:14.385>and <00:31:14.560>whenever <00:31:14.735>the <00:31:14.909>data <00:31:15.085>changes,

685
00:31:16.805 --> 00:31:18.245
<00:31:16.805>whenever <00:31:17.129>new <00:31:17.453>data <00:31:17.777>records <00:31:18.101>arrive,

686
00:31:18.385 --> 00:31:19.725
<00:31:18.385>you <00:31:18.626>will <00:31:18.867>get <00:31:19.108>those <00:31:19.349>data <00:31:19.591>records.

687
00:31:21.595 --> 00:31:23.695
<00:31:21.595>So <00:31:21.770>in <00:31:21.945>this <00:31:22.120>simple <00:31:22.295>example <00:31:22.470>of <00:31:22.645>a <00:31:22.820>to-do <00:31:22.995>list,

688
00:31:23.695 --> 00:31:24.895
<00:31:23.695>you <00:31:23.965>could <00:31:24.235>query <00:31:24.504>a <00:31:24.775>to-dos

689
00:31:24.895 --> 00:31:27.175
<00:31:24.895>or <00:31:25.070>you <00:31:25.245>could <00:31:25.420>easily <00:31:25.595>subscribe <00:31:25.770>to <00:31:25.945>the <00:31:26.120>dos <00:31:26.295>to-dos.

690
00:31:27.175 --> 00:31:28.735
<00:31:27.175>And <00:31:27.524>whenever <00:31:27.875>new <00:31:28.225>to-do <00:31:28.575>arrives,

691
00:31:29.285 --> 00:31:30.695
<00:31:29.285>this <00:31:29.708>subscription <00:31:30.131>will <00:31:30.553>trigger

692
00:31:31.115 --> 00:31:33.255
<00:31:31.115>and <00:31:31.255>you <00:31:31.395>will <00:31:31.535>see <00:31:31.675>it <00:31:31.815>in <00:31:31.955>new <00:31:32.095>to-dos <00:31:32.235>on <00:31:32.375>new <00:31:32.515>ui.

693
00:31:33.755 --> 00:31:36.375
<00:31:33.755>And <00:31:33.955>that's <00:31:34.155>fantastic. <00:31:34.355>That's <00:31:34.555>a <00:31:34.755>fantastic <00:31:34.955>feature <00:31:35.155>again,

694
00:31:37.075 --> 00:31:39.645
<00:31:37.075>because <00:31:37.355>by <00:31:37.635>going <00:31:37.915>into <00:31:38.195>this <00:31:38.475>direction,

695
00:31:39.905 --> 00:31:42.765
<00:31:39.905>we <00:31:40.105>ultimately <00:31:40.305>have <00:31:40.504>a <00:31:40.705>very, <00:31:40.905>very <00:31:41.105>useful <00:31:41.305>tool

696
00:31:43.505 --> 00:31:47.965
<00:31:43.505>to <00:31:43.632>get <00:31:43.759>this <00:31:43.886>red <00:31:44.014>box <00:31:44.141>here <00:31:44.268>done <00:31:44.395>for <00:31:44.523>replacing <00:31:44.650>a <00:31:44.777>classical <00:31:44.905>back

697
00:31:47.965 --> 00:31:49.365
<00:31:47.965>and <00:31:48.175>forth <00:31:48.385>frontend <00:31:48.595>with <00:31:48.805>a <00:31:49.014>calf <00:31:49.225>cre.

698
00:31:51.075 --> 00:31:52.735
<00:31:51.075>And <00:31:51.230>now <00:31:51.386>you <00:31:51.541>see <00:31:51.697>it, <00:31:51.852>now <00:31:52.008>you <00:31:52.163>see <00:31:52.319>the <00:31:52.475>beauty.

699
00:31:53.155 --> 00:31:55.615
<00:31:53.155>We <00:31:53.355>move <00:31:53.555>from <00:31:53.754>a <00:31:53.955>fully <00:31:54.155>pool <00:31:54.355>based <00:31:54.555>architecture

700
00:31:55.615 --> 00:31:57.415
<00:31:55.615>to <00:31:55.895>a <00:31:56.175>fully <00:31:56.455>push <00:31:56.735>based <00:31:57.015>architecture.

701
00:31:58.585 --> 00:32:02.355
<00:31:58.585>Okay, <00:31:58.740>sounds <00:31:58.896>great. <00:31:59.051>Maybe, <00:31:59.207>but <00:31:59.362>why, <00:31:59.518>why <00:31:59.673>is <00:31:59.829>this <00:31:59.985>useful?

702
00:32:02.935 --> 00:32:04.115
<00:32:02.935>Let <00:32:03.147>me <00:32:03.359>give <00:32:03.572>you <00:32:03.784>two <00:32:03.997>examples.

703
00:32:04.175 --> 00:32:06.915
<00:32:04.175>Um, <00:32:04.330>from, <00:32:04.486>from, <00:32:04.641>from, <00:32:04.797>from <00:32:04.952>real <00:32:05.108>world <00:32:05.263>projects <00:32:05.419>where, <00:32:05.575>where,

704
00:32:06.915 --> 00:32:08.835
<00:32:06.915>where <00:32:07.090>this <00:32:07.264>was <00:32:07.440>applied <00:32:07.615>or <00:32:07.790>where <00:32:07.965>this <00:32:08.139>is <00:32:08.315>applied

705
00:32:09.345 --> 00:32:10.355
<00:32:09.345>insurance <00:32:10.254>portal.

706
00:32:10.975 --> 00:32:12.715
<00:32:10.975>So <00:32:11.208>due <00:32:11.441>to <00:32:11.675>COVID, <00:32:11.908>um, <00:32:12.141>the <00:32:12.375>way

707
00:32:12.715 --> 00:32:15.755
<00:32:12.715>how <00:32:12.915>insurance <00:32:13.115>companies <00:32:13.314>work <00:32:13.514>changed <00:32:13.715>a <00:32:13.915>lot, <00:32:14.115>right?

708
00:32:15.975 --> 00:32:19.195
<00:32:15.975>So <00:32:16.115>insurance <00:32:16.254>business <00:32:16.395>is <00:32:16.534>mainly, <00:32:16.675>I <00:32:16.814>talk <00:32:16.955>to <00:32:17.094>you, <00:32:17.235>you <00:32:17.375>talk

709
00:32:19.195 --> 00:32:21.075
<00:32:19.195>to <00:32:19.370>me, <00:32:19.544>we <00:32:19.720>find <00:32:19.895>the <00:32:20.070>best <00:32:20.245>insurance <00:32:20.419>for <00:32:20.595>you.

710
00:32:21.255 --> 00:32:22.555
<00:32:21.255>You <00:32:21.450>come <00:32:21.645>to <00:32:21.840>us <00:32:22.035>in <00:32:22.230>the <00:32:22.425>branch,

711
00:32:23.015 --> 00:32:25.395
<00:32:23.015>and <00:32:23.155>I, <00:32:23.295>I <00:32:23.435>I <00:32:23.575>try, <00:32:23.715>okay, <00:32:23.855>you <00:32:23.995>have <00:32:24.135>a <00:32:24.275>new <00:32:24.415>car,

712
00:32:25.515 --> 00:32:27.355
<00:32:25.515>I <00:32:25.670>I <00:32:25.826>give <00:32:25.981>you <00:32:26.137>the <00:32:26.292>best <00:32:26.448>insurance <00:32:26.603>for <00:32:26.759>it, <00:32:26.915>right?

713
00:32:27.775 --> 00:32:30.035
<00:32:27.775>And <00:32:27.915>COVID <00:32:28.055>made <00:32:28.195>this <00:32:28.335>a <00:32:28.475>little <00:32:28.615>bit, <00:32:28.755>yeah, <00:32:28.895>I <00:32:29.035>would <00:32:29.175>say

714
00:32:30.655 --> 00:32:31.755
<00:32:30.655>not <00:32:30.985>so <00:32:31.315>easy <00:32:31.645>possible.

715
00:32:32.215 --> 00:32:34.155
<00:32:32.215>And, <00:32:32.564>and <00:32:32.915>the <00:32:33.264>personal <00:32:33.615>interaction

716
00:32:34.155 --> 00:32:36.475
<00:32:34.155>between <00:32:34.504>an <00:32:34.855>an <00:32:35.205>insurance <00:32:35.555>agent

717
00:32:36.475 --> 00:32:37.915
<00:32:36.475>and <00:32:36.799>the <00:32:37.123>customers, <00:32:37.447>very <00:32:37.771>important.

718
00:32:37.935 --> 00:32:41.845
<00:32:37.935>It <00:32:38.135>turned <00:32:38.335>out <00:32:38.534>right? <00:32:38.735>So <00:32:38.935>there <00:32:39.135>were <00:32:39.335>ways,

719
00:32:42.025 --> 00:32:44.205
<00:32:42.025>how <00:32:42.258>can <00:32:42.491>we <00:32:42.725>improve <00:32:42.958>this <00:32:43.191>interaction <00:32:43.425>again?

720
00:32:44.305 --> 00:32:45.565
<00:32:44.305>Or <00:32:44.531>there <00:32:44.758>were <00:32:44.985>ways <00:32:45.212>to <00:32:45.439>think

721
00:32:45.625 --> 00:32:47.765
<00:32:45.625>how <00:32:45.858>can <00:32:46.091>we <00:32:46.325>improve <00:32:46.558>this <00:32:46.791>interaction <00:32:47.025>again?

722
00:32:48.785 --> 00:32:51.765
<00:32:48.785>So <00:32:48.940>typically <00:32:49.096>you <00:32:49.251>don't <00:32:49.407>need <00:32:49.562>to <00:32:49.718>be <00:32:49.873>an <00:32:50.029>insurance <00:32:50.185>expert.

723
00:32:51.845 --> 00:32:53.685
<00:32:51.845>I <00:32:51.985>I <00:32:52.125>try <00:32:52.265>to <00:32:52.405>make <00:32:52.545>this <00:32:52.685>example <00:32:52.825>now <00:32:52.965>in <00:32:53.105>a <00:32:53.245>way

724
00:32:53.685 --> 00:32:54.845
<00:32:53.685>that <00:32:54.033>everybody <00:32:54.381>understands <00:32:54.729>it.

725
00:32:55.145 --> 00:32:57.565
<00:32:55.145>So <00:32:55.320>an <00:32:55.495>insurance <00:32:55.670>agent <00:32:55.845>is <00:32:56.020>sitting <00:32:56.195>in <00:32:56.370>its <00:32:56.545>branch

726
00:32:57.985 --> 00:33:00.405
<00:32:57.985>and <00:32:58.101>you <00:32:58.218>come <00:32:58.334>to <00:32:58.451>him <00:32:58.568>and <00:32:58.685>say, <00:32:58.801>Hey, <00:32:58.918>I <00:32:59.034>have <00:32:59.151>a <00:32:59.268>new <00:32:59.385>car,

727
00:33:00.875 --> 00:33:03.405
<00:33:00.875>this <00:33:01.075>brand, <00:33:01.275>this <00:33:01.475>building <00:33:01.675>gear, <00:33:01.875>this <00:33:02.075>car <00:33:02.275>model.

728
00:33:04.745 --> 00:33:06.325
<00:33:04.745>So <00:33:05.024>let's <00:33:05.304>assume <00:33:05.584>we <00:33:05.864>built <00:33:06.145>this

729
00:33:06.325 --> 00:33:07.685
<00:33:06.325>application <00:33:06.733>in <00:33:07.141>reactive <00:33:07.549>manner.

730
00:33:07.825 --> 00:33:09.685
<00:33:07.825>Of <00:33:07.980>course <00:33:08.136>we <00:33:08.291>could <00:33:08.447>build <00:33:08.602>it <00:33:08.758>in <00:33:08.913>every <00:33:09.069>other <00:33:09.225>way,

731
00:33:09.985 --> 00:33:11.845
<00:33:09.985>but <00:33:10.185>let's <00:33:10.385>assume <00:33:10.584>we <00:33:10.784>build <00:33:10.985>in <00:33:11.185>reactive <00:33:11.385>manner.

732
00:33:12.015 --> 00:33:13.645
<00:33:12.015>Let's <00:33:12.215>assume <00:33:12.415>we <00:33:12.615>have <00:33:12.815>your <00:33:13.015>car <00:33:13.215>crawl <00:33:13.415>server

733
00:33:13.705 --> 00:33:15.405
<00:33:13.705>or <00:33:14.171>whatever <00:33:14.638>the, <00:33:15.105>the,

734
00:33:15.505 --> 00:33:18.085
<00:33:15.505>the <00:33:15.738>insurance <00:33:15.971>agent <00:33:16.205>changes <00:33:16.438>the <00:33:16.671>car <00:33:16.905>brand.

735
00:33:18.085 --> 00:33:20.005
<00:33:18.085>This <00:33:18.365>will <00:33:18.645>automatically <00:33:18.925>trigger <00:33:19.205>an <00:33:19.485>event.

736
00:33:20.855 --> 00:33:23.525
<00:33:20.855>Quail <00:33:20.995>would <00:33:21.135>provide <00:33:21.275>it <00:33:21.415>then <00:33:21.555>to <00:33:21.695>the <00:33:21.835>event <00:33:21.975>store, <00:33:22.115>this <00:33:22.255>event.

737
00:33:24.395 --> 00:33:27.415
<00:33:24.395>And <00:33:24.550>some <00:33:24.706>lenders <00:33:24.861>would, <00:33:25.017>for <00:33:25.172>example, <00:33:25.328>react <00:33:25.483>to <00:33:25.639>this <00:33:25.795>event

738
00:33:27.415 --> 00:33:29.575
<00:33:27.415>and <00:33:27.570>would <00:33:27.726>say, <00:33:27.881>okay, <00:33:28.037>cool, <00:33:28.192>the <00:33:28.348>car <00:33:28.503>brand <00:33:28.659>was <00:33:28.815>changed.

739
00:33:30.535 --> 00:33:34.455
<00:33:30.535>I <00:33:30.690>give <00:33:30.846>you <00:33:31.001>this <00:33:31.157>possibilities <00:33:31.312>for <00:33:31.468>the <00:33:31.623>build <00:33:31.779>s <00:33:31.935>selection

740
00:33:34.455 --> 00:33:36.175
<00:33:34.455>and <00:33:34.735>for <00:33:35.014>the <00:33:35.294>car <00:33:35.574>model <00:33:35.855>selection,

741
00:33:38.515 --> 00:33:40.925
<00:33:38.515>another <00:33:38.865>beauty <00:33:39.215>comes <00:33:39.565>in <00:33:39.915>place.

742
00:33:41.665 --> 00:33:44.285
<00:33:41.665>If <00:33:41.840>you <00:33:42.014>would <00:33:42.190>now <00:33:42.365>imagine <00:33:42.540>it <00:33:42.715>would <00:33:42.889>be <00:33:43.065>perfectly,

743
00:33:44.975 --> 00:33:47.245
<00:33:44.975>especially <00:33:45.254>in, <00:33:45.534>in <00:33:45.814>in <00:33:46.094>COVID <00:33:46.375>situation,

744
00:33:47.395 --> 00:33:49.005
<00:33:47.395>when <00:33:47.745>the <00:33:48.095>customer <00:33:48.445>can <00:33:48.795>follow,

745
00:33:49.595 --> 00:33:54.325
<00:33:49.595>like <00:33:49.735>you <00:33:49.875>would <00:33:50.015>do <00:33:50.155>on <00:33:50.295>the <00:33:50.435>branch, <00:33:50.575>the <00:33:50.715>action <00:33:50.855>of <00:33:50.995>the,

746
00:33:54.425 --> 00:33:55.565
<00:33:54.425>of <00:33:54.767>the <00:33:55.109>insurance <00:33:55.451>agent.

747
00:33:55.785 --> 00:33:58.725
<00:33:55.785>So <00:33:55.940>we <00:33:56.096>just <00:33:56.251>call <00:33:56.407>in <00:33:56.562>with <00:33:56.718>a <00:33:56.873>webcam <00:33:57.029>maybe <00:33:57.185>enabled

748
00:33:58.725 --> 00:34:01.205
<00:33:58.725>and <00:33:58.865>say, <00:33:59.004>Hey, <00:33:59.145>here's <00:33:59.284>the <00:33:59.425>link, <00:33:59.564>please <00:33:59.705>follow <00:33:59.844>what <00:33:59.985>I'm <00:34:00.125>doing.

749
00:34:01.635 --> 00:34:04.165
<00:34:01.635>Just <00:34:01.751>tell <00:34:01.868>me <00:34:01.985>what <00:34:02.101>car <00:34:02.218>you <00:34:02.335>have <00:34:02.451>and <00:34:02.568>I <00:34:02.685>will <00:34:02.801>type <00:34:02.918>it <00:34:03.035>in.

750
00:34:04.165 --> 00:34:08.245
<00:34:04.165>And <00:34:04.305>you <00:34:04.445>see <00:34:04.585>directly <00:34:04.725>on <00:34:04.865>your <00:34:05.004>screen, <00:34:05.145>on <00:34:05.284>your <00:34:05.425>mobile <00:34:05.565>client,

751
00:34:08.245 --> 00:34:10.285
<00:34:08.245>on <00:34:08.420>your <00:34:08.594>iPad, <00:34:08.770>on <00:34:08.944>your, <00:34:09.120>on <00:34:09.295>your, <00:34:09.469>on <00:34:09.645>your,

752
00:34:10.285 --> 00:34:11.645
<00:34:10.284>on <00:34:10.489>your <00:34:10.692>laptop, <00:34:10.897>whatever <00:34:11.101>it <00:34:11.304>is, <00:34:11.509>right?

753
00:34:12.425 --> 00:34:15.805
<00:34:12.425>And <00:34:12.552>we <00:34:12.679>do <00:34:12.806>so <00:34:12.934>by <00:34:13.061>just <00:34:13.188>introducing <00:34:13.315>a <00:34:13.443>second <00:34:13.570>graph <00:34:13.697>quail <00:34:13.825>server

754
00:34:16.715 --> 00:34:19.055
<00:34:16.715>and <00:34:16.948>building <00:34:17.181>the, <00:34:17.415>the, <00:34:17.648>the <00:34:17.881>second <00:34:18.115>ui,

755
00:34:19.055 --> 00:34:20.335
<00:34:19.054>again <00:34:19.342>in <00:34:19.630>a <00:34:19.918>reactive <00:34:20.206>manner.

756
00:34:21.235 --> 00:34:24.495
<00:34:21.235>So <00:34:21.410>whenever <00:34:21.585>the <00:34:21.760>insurance <00:34:21.935>agent <00:34:22.110>changes <00:34:22.285>something <00:34:22.460>on <00:34:22.635>his

757
00:34:24.495 --> 00:34:26.775
<00:34:24.495>side, <00:34:24.728>it'll <00:34:24.961>automatically <00:34:25.194>push <00:34:25.428>to <00:34:25.661>the <00:34:25.895>system

758
00:34:27.315 --> 00:34:30.655
<00:34:27.315>and <00:34:27.490>the <00:34:27.665>graph <00:34:27.840>quail <00:34:28.014>server <00:34:28.190>from <00:34:28.365>the, <00:34:28.540>from <00:34:28.715>the,

759
00:34:30.655 --> 00:34:33.335
<00:34:30.655>from <00:34:30.830>the <00:34:31.005>customer <00:34:31.180>will <00:34:31.355>subscribe <00:34:31.530>to <00:34:31.705>the <00:34:31.880>event <00:34:32.055>store.

760
00:34:33.335 --> 00:34:35.895
<00:34:33.335>And <00:34:33.510>whenever, <00:34:33.685>for <00:34:33.860>example, <00:34:34.034>the <00:34:34.210>car <00:34:34.385>brand <00:34:34.560>is <00:34:34.735>changed,

761
00:34:35.905 --> 00:34:38.495
<00:34:35.905>it'll <00:34:36.060>be <00:34:36.216>automatically <00:34:36.371>changed <00:34:36.527>on <00:34:36.682>the <00:34:36.838>side <00:34:36.993>of <00:34:37.149>the <00:34:37.305>customer

762
00:34:38.635 --> 00:34:40.575
<00:34:38.635>and <00:34:38.810>suddenly <00:34:38.985>we <00:34:39.160>can <00:34:39.335>start <00:34:39.510>interact <00:34:39.685>with <00:34:39.860>each <00:34:40.035>other

763
00:34:40.575 --> 00:34:42.855
<00:34:40.574>because <00:34:40.774>suddenly <00:34:40.975>the <00:34:41.174>customer <00:34:41.375>needs <00:34:41.574>to <00:34:41.774>say, <00:34:41.975>okay,

764
00:34:42.855 --> 00:34:43.935
<00:34:42.855>this <00:34:43.179>information <00:34:43.503>is <00:34:43.826>correct.

765
00:34:44.595 --> 00:34:47.775
<00:34:44.594>If <00:34:44.722>this <00:34:44.849>information <00:34:44.976>is, <00:34:45.104>is, <00:34:45.231>is, <00:34:45.358>is <00:34:45.485>accepted, <00:34:45.613>then <00:34:45.740>we <00:34:45.867>move <00:34:45.995>on

766
00:34:47.775 --> 00:34:50.935
<00:34:47.775>to <00:34:47.915>the <00:34:48.055>second <00:34:48.195>step <00:34:48.335>and <00:34:48.475>we <00:34:48.615>need <00:34:48.755>to <00:34:48.895>select <00:34:49.035>the <00:34:49.175>coverage.

767
00:34:52.285 --> 00:34:54.705
<00:34:52.284>And <00:34:52.460>here <00:34:52.634>we <00:34:52.810>have <00:34:52.984>70% <00:34:53.159>courage <00:34:53.335>for <00:34:53.509>200 <00:34:53.685>euro.

768
00:34:54.755 --> 00:34:57.785
<00:34:54.755>Maybe <00:34:54.910>we <00:34:55.066>want <00:34:55.221>more. <00:34:55.377>The <00:34:55.532>customer <00:34:55.688>says <00:34:55.843>via <00:34:55.999>webcam, <00:34:56.155>Hey,

769
00:34:57.975 --> 00:34:59.425
<00:34:57.975>70% <00:34:58.236>is <00:34:58.497>a <00:34:58.758>little <00:34:59.019>bit <00:34:59.280>less.

770
00:34:59.445 --> 00:35:00.825
<00:34:59.445>How <00:34:59.600>much <00:34:59.755>would <00:34:59.910>it <00:35:00.066>cost <00:35:00.221>if <00:35:00.376>we <00:35:00.531>move <00:35:00.687>it

771
00:35:00.825 --> 00:35:02.065
<00:35:00.825>to <00:35:01.048>a <00:35:01.271>hundred, <00:35:01.494>a <00:35:01.717>hundred <00:35:01.941>percent?

772
00:35:02.615 --> 00:35:05.185
<00:35:02.615>Well, <00:35:02.770>then <00:35:02.926>the <00:35:03.081>insurance <00:35:03.237>agent <00:35:03.392>just <00:35:03.548>moves <00:35:03.703>the <00:35:03.859>slider <00:35:04.015>on,

773
00:35:05.185 --> 00:35:06.745
<00:35:05.185>on <00:35:05.418>the <00:35:05.651>same, <00:35:05.884>on <00:35:06.118>the <00:35:06.351>same <00:35:06.585>time,

774
00:35:07.245 --> 00:35:09.705
<00:35:07.245>the <00:35:07.420>customer <00:35:07.595>will <00:35:07.770>get <00:35:07.944>directly <00:35:08.120>update <00:35:08.295>on <00:35:08.470>his <00:35:08.645>UI

775
00:35:09.705 --> 00:35:12.145
<00:35:09.705>and <00:35:09.880>will <00:35:10.055>be <00:35:10.230>able <00:35:10.404>to <00:35:10.580>sign <00:35:10.755>the <00:35:10.930>deal <00:35:11.105>directly.

776
00:35:12.355 --> 00:35:13.945
<00:35:12.355>Let's <00:35:12.635>sign <00:35:12.915>it <00:35:13.195>digital. <00:35:13.475>Let's, <00:35:13.755>let's,

777
00:35:13.945 --> 00:35:15.105
<00:35:13.945>let's <00:35:14.293>close <00:35:14.641>it <00:35:14.989>directly.

778
00:35:15.565 --> 00:35:18.105
<00:35:15.565>Um, <00:35:15.740>in, <00:35:15.915>in, <00:35:16.090>in <00:35:16.265>this <00:35:16.440>kind <00:35:16.615>of <00:35:16.790>flow, <00:35:16.965>right?

779
00:35:18.765 --> 00:35:22.865
<00:35:18.765>And <00:35:18.920>this <00:35:19.076>is <00:35:19.231>where <00:35:19.387>realized <00:35:19.542>that <00:35:19.698>customers <00:35:19.853>expect <00:35:20.009>real <00:35:20.165>time

780
00:35:23.545 --> 00:35:25.505
<00:35:23.545>synchronization <00:35:23.895>between <00:35:24.245>channels <00:35:24.595>in <00:35:24.945>many

781
00:35:25.505 --> 00:35:26.585
<00:35:25.505>situations <00:35:25.991>these <00:35:26.477>days.

782
00:35:26.585 --> 00:35:30.945
<00:35:26.585>Yeah. <00:35:26.760>And <00:35:26.935>this <00:35:27.110>reactive <00:35:27.285>architectures <00:35:27.460>provide <00:35:27.635>us <00:35:27.810>this <00:35:27.985>real

783
00:35:30.945 --> 00:35:33.865
<00:35:30.945>time <00:35:31.178>integration <00:35:31.411>between <00:35:31.645>different <00:35:31.878>systems <00:35:32.111>for <00:35:32.345>free.

784
00:35:34.485 --> 00:35:36.545
<00:35:34.485>We <00:35:34.640>don't <00:35:34.796>need <00:35:34.951>to <00:35:35.107>pull <00:35:35.262>for <00:35:35.418>data, <00:35:35.573>we <00:35:35.729>don't <00:35:35.885>need

785
00:35:36.545 --> 00:35:38.045
<00:35:36.545>to <00:35:36.815>pull <00:35:37.085>haste <00:35:37.355>and <00:35:37.625>new <00:35:37.895>data.

786
00:35:38.745 --> 00:35:39.845
<00:35:38.745>We <00:35:38.992>get <00:35:39.240>it <00:35:39.487>pushed, <00:35:39.734>right?

787
00:35:39.985 --> 00:35:43.125
<00:35:39.985>And <00:35:40.185>whenever <00:35:40.385>somebody <00:35:40.585>changes <00:35:40.785>this <00:35:40.985>data <00:35:41.185>within <00:35:41.385>milliseconds,

788
00:35:43.125 --> 00:35:46.245
<00:35:43.125>yeah, <00:35:43.405>the <00:35:43.685>other <00:35:43.965>channels <00:35:44.245>are <00:35:44.525>updated.

789
00:35:46.345 --> 00:35:47.965
<00:35:46.345>And <00:35:46.625>that's, <00:35:46.904>that's <00:35:47.185>a <00:35:47.464>fantastic <00:35:47.745>feature

790
00:35:47.965 --> 00:35:50.325
<00:35:47.965>because <00:35:48.198>it's, <00:35:48.431>it <00:35:48.665>would <00:35:48.898>be <00:35:49.131>very <00:35:49.365>complex

791
00:35:50.345 --> 00:35:53.125
<00:35:50.345>to <00:35:50.625>implement <00:35:50.904>in <00:35:51.185>a <00:35:51.464>non-reactive <00:35:51.745>manner.

792
00:35:54.385 --> 00:35:58.085
<00:35:54.385>If <00:35:54.525>we <00:35:54.665>take <00:35:54.805>a <00:35:54.945>look <00:35:55.085>at <00:35:55.225>the <00:35:55.365>second <00:35:55.505>example, <00:35:55.645>mobile <00:35:55.785>banking.

793
00:35:58.625 --> 00:36:00.445
<00:35:58.625>Mobile <00:35:58.905>banking <00:35:59.185>is, <00:35:59.465>is <00:35:59.745>a <00:36:00.025>domain

794
00:36:00.445 --> 00:36:03.325
<00:36:00.445>where <00:36:00.600>we <00:36:00.756>are <00:36:00.911>strongly <00:36:01.067>working <00:36:01.222>in, <00:36:01.378>we're <00:36:01.533>doing <00:36:01.689>lots <00:36:01.845>in,

795
00:36:03.325 --> 00:36:04.325
<00:36:03.325>in <00:36:03.774>financial <00:36:04.225>services.

796
00:36:04.585 --> 00:36:07.045
<00:36:04.585>And <00:36:04.760>we <00:36:04.935>did <00:36:05.110>a <00:36:05.285>research <00:36:05.460>a <00:36:05.635>few <00:36:05.810>years <00:36:05.985>ago

797
00:36:07.105 --> 00:36:09.685
<00:36:07.105>and <00:36:07.232>bank <00:36:07.359>did <00:36:07.486>a <00:36:07.614>research <00:36:07.741>a <00:36:07.868>few <00:36:07.995>years <00:36:08.123>ago <00:36:08.250>we <00:36:08.377>worked <00:36:08.505>with.

798
00:36:10.225 --> 00:36:13.765
<00:36:10.225>And <00:36:10.365>what <00:36:10.505>it <00:36:10.645>actually <00:36:10.785>found <00:36:10.924>out <00:36:11.065>that <00:36:11.205>mobile <00:36:11.345>banking <00:36:11.485>usage <00:36:11.625>is,

799
00:36:13.785 --> 00:36:14.925
<00:36:13.785>is <00:36:14.127>kind <00:36:14.469>of <00:36:14.811>interesting.

800
00:36:14.955 --> 00:36:17.485
<00:36:14.955>They <00:36:15.188>were <00:36:15.421>re-implementing <00:36:15.654>that <00:36:15.888>and <00:36:16.121>mobile <00:36:16.355>applications

801
00:36:17.785 --> 00:36:21.245
<00:36:17.785>and <00:36:17.940>they <00:36:18.096>found <00:36:18.251>out <00:36:18.407>that <00:36:18.562>93% <00:36:18.718>of <00:36:18.873>all <00:36:19.029>the <00:36:19.185>traffic,

802
00:36:21.505 --> 00:36:26.445
<00:36:21.505>all <00:36:21.645>the <00:36:21.785>usage <00:36:21.925>on <00:36:22.065>the <00:36:22.205>mobile <00:36:22.345>phone <00:36:22.485>for <00:36:22.625>mobile <00:36:22.765>banking <00:36:22.905>is

803
00:36:26.445 --> 00:36:28.525
<00:36:26.445>to <00:36:26.795>show <00:36:27.145>balances <00:36:27.495>and <00:36:27.845>transaction.

804
00:36:29.195 --> 00:36:33.015
<00:36:29.195>93% <00:36:29.335>for <00:36:29.475>the <00:36:29.615>usage <00:36:29.755>for <00:36:29.895>the <00:36:30.035>people <00:36:30.175>actually <00:36:30.315>do <00:36:30.455>with <00:36:30.595>the,

805
00:36:33.245 --> 00:36:35.575
<00:36:33.245>with <00:36:33.400>the <00:36:33.556>mobile <00:36:33.711>banking <00:36:33.867>app <00:36:34.022>is <00:36:34.178>just <00:36:34.333>showing <00:36:34.489>the <00:36:34.645>current

806
00:36:35.575 --> 00:36:37.135
<00:36:35.575>balance <00:36:35.855>and <00:36:36.134>showing <00:36:36.415>the <00:36:36.694>last <00:36:36.975>transactions.

807
00:36:38.275 --> 00:36:41.615
<00:36:38.275>The <00:36:38.475>other <00:36:38.675>3% <00:36:38.875>is <00:36:39.075>initiating <00:36:39.275>new <00:36:39.475>payments, <00:36:39.675>right?

808
00:36:43.115 --> 00:36:45.935
<00:36:43.115>So <00:36:43.348>96% <00:36:43.581>is <00:36:43.814>initiating <00:36:44.048>a <00:36:44.281>new <00:36:44.515>payment

809
00:36:46.115 --> 00:36:47.335
<00:36:46.115>and <00:36:46.389>showing <00:36:46.663>the <00:36:46.938>last <00:36:47.213>balance

810
00:36:47.395 --> 00:36:48.655
<00:36:47.395>and <00:36:47.678>showing <00:36:47.962>the <00:36:48.245>last <00:36:48.529>transactions.

811
00:36:50.265 --> 00:36:52.445
<00:36:50.265>Any <00:36:50.545>other <00:36:50.825>stuff <00:36:51.105>are <00:36:51.384>just <00:36:51.665>4%.

812
00:36:52.685 --> 00:36:56.325
<00:36:52.685>This <00:36:52.812>is <00:36:52.939>just <00:36:53.066>used <00:36:53.194>by <00:36:53.321>4% <00:36:53.448>of <00:36:53.575>the <00:36:53.703>time <00:36:53.830>by <00:36:53.957>the <00:36:54.085>users.

813
00:36:57.305 --> 00:36:58.965
<00:36:57.305>So <00:36:57.585>the <00:36:57.865>features <00:36:58.145>where <00:36:58.424>we <00:36:58.705>invest,

814
00:37:00.005 --> 00:37:02.845
<00:37:00.005>I <00:37:00.180>would <00:37:00.355>say <00:37:00.530>years <00:37:00.705>into <00:37:00.880>is <00:37:01.055>just <00:37:01.230>4% <00:37:01.405>of

815
00:37:02.845 --> 00:37:04.885
<00:37:02.845>what <00:37:03.078>we <00:37:03.311>actually <00:37:03.544>need <00:37:03.778>on <00:37:04.011>the <00:37:04.245>mobile

816
00:37:04.885 --> 00:37:06.165
<00:37:04.885>banking <00:37:05.461>application, <00:37:06.037>right?

817
00:37:06.825 --> 00:37:10.165
<00:37:06.825>And <00:37:07.024>that's <00:37:07.225>interesting <00:37:07.424>from, <00:37:07.625>from <00:37:07.825>from <00:37:08.024>one <00:37:08.225>perspective

818
00:37:10.235 --> 00:37:14.285
<00:37:10.235>because <00:37:10.390>93% <00:37:10.546>of <00:37:10.701>the <00:37:10.857>users <00:37:11.012>always <00:37:11.168>expect <00:37:11.323>to <00:37:11.479>be <00:37:11.635>able

819
00:37:14.285 --> 00:37:16.725
<00:37:14.285>to <00:37:14.460>see <00:37:14.634>the <00:37:14.810>current <00:37:14.984>transactions <00:37:15.160>and <00:37:15.335>the <00:37:15.509>current <00:37:15.685>balance.

820
00:37:18.175 --> 00:37:21.475
<00:37:18.175>And <00:37:18.302>if <00:37:18.429>we <00:37:18.556>sync <00:37:18.684>this <00:37:18.811>architecture <00:37:18.938>again <00:37:19.065>now <00:37:19.193>in <00:37:19.320>a <00:37:19.447>reactive <00:37:19.575>way

821
00:37:21.965 --> 00:37:23.755
<00:37:21.965>where <00:37:22.140>we <00:37:22.315>say, <00:37:22.490>okay, <00:37:22.665>we <00:37:22.840>have <00:37:23.015>our <00:37:23.190>web <00:37:23.365>banking,

822
00:37:23.815 --> 00:37:25.555
<00:37:23.815>we <00:37:24.015>have <00:37:24.215>our <00:37:24.415>craft, <00:37:24.615>we <00:37:24.815>have <00:37:25.015>our <00:37:25.215>events,

823
00:37:25.555 --> 00:37:29.355
<00:37:25.555>so <00:37:25.730>we <00:37:25.904>have <00:37:26.080>our <00:37:26.254>microservices, <00:37:26.430>then <00:37:26.605>in <00:37:26.779>reactive <00:37:26.955>systems,

824
00:37:29.455 --> 00:37:31.595
<00:37:29.455>we <00:37:29.688>can <00:37:29.921>easily <00:37:30.154>introduce <00:37:30.388>something <00:37:30.621>which <00:37:30.855>we

825
00:37:31.595 --> 00:37:32.635
<00:37:31.595>tend <00:37:31.828>to <00:37:32.063>call <00:37:32.297>a <00:37:32.531>projection.

826
00:37:33.375 --> 00:37:35.955
<00:37:33.375>And <00:37:33.530>the <00:37:33.686>projection <00:37:33.841>is <00:37:33.997>nothing <00:37:34.152>else <00:37:34.308>than <00:37:34.463>a <00:37:34.619>read <00:37:34.775>model

827
00:37:36.055 --> 00:37:37.235
<00:37:36.055>for <00:37:36.586>specific <00:37:37.117>clients.

828
00:37:38.015 --> 00:37:39.035
<00:37:38.015>So <00:37:38.321>in <00:37:38.627>this <00:37:38.933>situation,

829
00:37:39.095 --> 00:37:42.535
<00:37:39.095>we <00:37:39.270>will <00:37:39.444>build <00:37:39.620>up <00:37:39.794>a <00:37:39.970>projection <00:37:40.145>for <00:37:40.319>web <00:37:40.495>banking.

830
00:37:44.035 --> 00:37:47.095
<00:37:44.035>So <00:37:44.174>we <00:37:44.315>would <00:37:44.455>start <00:37:44.595>to <00:37:44.734>subscribe <00:37:44.875>to <00:37:45.015>events <00:37:45.154>on <00:37:45.295>event <00:37:45.435>store.

831
00:37:47.555 --> 00:37:51.055
<00:37:47.555>And <00:37:47.730>with <00:37:47.904>this <00:37:48.080>events <00:37:48.254>we <00:37:48.430>would <00:37:48.605>hydrate <00:37:48.779>our <00:37:48.955>projection,

832
00:37:51.105 --> 00:37:52.295
<00:37:51.105>which <00:37:51.640>basically <00:37:52.176>means

833
00:37:52.295 --> 00:37:54.975
<00:37:52.295>that <00:37:52.495>we <00:37:52.695>would <00:37:52.895>fill <00:37:53.095>our <00:37:53.295>hydration <00:37:53.495>with <00:37:53.695>data.

834
00:37:56.825 --> 00:37:58.285
<00:37:56.825>And <00:37:57.087>then <00:37:57.350>in <00:37:57.613>the <00:37:57.876>next <00:37:58.138>step,

835
00:37:59.515 --> 00:38:02.535
<00:37:59.515>the <00:37:59.690>web <00:37:59.865>banking <00:38:00.040>only <00:38:00.214>reads <00:38:00.390>from <00:38:00.565>this <00:38:00.740>projection, <00:38:00.915>right?

836
00:38:02.715 --> 00:38:04.655
<00:38:02.715>So <00:38:02.890>this <00:38:03.065>is <00:38:03.240>the <00:38:03.415>basic <00:38:03.590>idea <00:38:03.765>of <00:38:03.940>a <00:38:04.115>projection.

837
00:38:05.155 --> 00:38:06.975
<00:38:05.155>And <00:38:05.355>if <00:38:05.555>we <00:38:05.755>now <00:38:05.955>introduce <00:38:06.155>the <00:38:06.355>second <00:38:06.555>channel,

838
00:38:07.195 --> 00:38:10.375
<00:38:07.195>and <00:38:07.311>one <00:38:07.428>tool <00:38:07.545>to <00:38:07.661>do <00:38:07.778>is, <00:38:07.895>is <00:38:08.011>hasa, <00:38:08.128>which <00:38:08.245>is <00:38:08.361>a <00:38:08.478>craft <00:38:08.595>server

839
00:38:10.375 --> 00:38:13.695
<00:38:10.375>with <00:38:10.502>a, <00:38:10.629>with <00:38:10.756>a <00:38:10.884>uh, <00:38:11.011>projection <00:38:11.138>out <00:38:11.265>of <00:38:11.393>the <00:38:11.520>box <00:38:11.647>with <00:38:11.775>it.

840
00:38:13.695 --> 00:38:16.215
<00:38:13.695>Yeah. <00:38:13.928>And <00:38:14.161>if <00:38:14.395>we <00:38:14.628>now <00:38:14.861>move <00:38:15.095>forward

841
00:38:16.915 --> 00:38:18.615
<00:38:16.915>and <00:38:17.265>introduce <00:38:17.615>a <00:38:17.965>second <00:38:18.315>channel,

842
00:38:18.705 --> 00:38:21.575
<00:38:18.705>let's <00:38:18.860>assume <00:38:19.016>we <00:38:19.171>have <00:38:19.327>mobile <00:38:19.482>banking <00:38:19.638>here, <00:38:19.793>a <00:38:19.949>mobile <00:38:20.105>client.

843
00:38:21.605 --> 00:38:24.495
<00:38:21.605>Yeah. <00:38:21.805>And <00:38:22.005>we <00:38:22.205>introduce <00:38:22.405>a <00:38:22.605>second <00:38:22.805>projection <00:38:23.005>just

844
00:38:24.495 --> 00:38:25.535
<00:38:24.495>for <00:38:24.807>this <00:38:25.118>mobile <00:38:25.431>client.

845
00:38:25.805 --> 00:38:30.045
<00:38:25.805>Yeah. <00:38:25.960>Then <00:38:26.116>we <00:38:26.271>have <00:38:26.427>two <00:38:26.582>graph <00:38:26.738>servers <00:38:26.893>with <00:38:27.049>two <00:38:27.205>projections.

846
00:38:30.045 --> 00:38:34.365
<00:38:30.045>Yeah. <00:38:30.200>Then <00:38:30.356>we <00:38:30.511>have <00:38:30.667>very <00:38:30.822>strong <00:38:30.978>decoupling <00:38:31.133>of <00:38:31.289>the <00:38:31.445>system.

847
00:38:36.905 --> 00:38:40.005
<00:38:36.905>And <00:38:37.060>what's <00:38:37.216>really <00:38:37.371>interesting <00:38:37.527>now <00:38:37.682>is <00:38:37.838>what <00:38:37.993>I <00:38:38.149>really <00:38:38.305>love

848
00:38:40.025 --> 00:38:42.805
<00:38:40.025>to <00:38:40.165>show <00:38:40.305>is <00:38:40.445>that <00:38:40.585>we <00:38:40.725>could <00:38:40.865>fully <00:38:41.005>burn <00:38:41.145>on <00:38:41.285>the <00:38:41.425>backend

849
00:38:44.285 --> 00:38:48.585
<00:38:44.285>and <00:38:44.424>93% <00:38:44.565>of <00:38:44.705>the <00:38:44.845>use <00:38:44.984>cases, <00:38:45.125>which <00:38:45.265>people <00:38:45.404>are <00:38:45.545>actually <00:38:45.685>doing

850
00:38:48.615 --> 00:38:50.985
<00:38:48.615>with <00:38:48.895>our <00:38:49.174>application <00:38:49.455>would <00:38:49.734>still <00:38:50.015>work

851
00:38:51.555 --> 00:38:55.485
<00:38:51.555>because <00:38:51.710>90% <00:38:51.866>of <00:38:52.021>the <00:38:52.177>use <00:38:52.332>cases <00:38:52.488>to <00:38:52.643>show <00:38:52.799>last <00:38:52.955>balances

852
00:38:55.865 --> 00:38:57.365
<00:38:55.865>and <00:38:56.202>to <00:38:56.540>show <00:38:56.877>last <00:38:57.214>transactions.

853
00:38:58.945 --> 00:39:01.325
<00:38:58.945>And <00:38:59.085>you <00:38:59.225>would <00:38:59.365>say <00:38:59.505>now, <00:38:59.645>okay, <00:38:59.785>we <00:38:59.925>could <00:39:00.065>also <00:39:00.205>achieve <00:39:00.345>this

854
00:39:01.325 --> 00:39:03.565
<00:39:01.325>with <00:39:01.605>weed <00:39:01.884>models <00:39:02.165>or <00:39:02.444>classical <00:39:02.725>caches.

855
00:39:03.635 --> 00:39:06.125
<00:39:03.635>Yeah, <00:39:03.775>you <00:39:03.915>could. <00:39:04.055>But <00:39:04.195>then <00:39:04.335>you <00:39:04.475>run <00:39:04.615>into <00:39:04.755>the <00:39:04.895>two <00:39:05.035>problems

856
00:39:06.125 --> 00:39:09.445
<00:39:06.125>of <00:39:06.325>software <00:39:06.525>engineering, <00:39:06.725>naming <00:39:06.925>things, <00:39:07.125>cach <00:39:07.325>in <00:39:07.525>validation

857
00:39:09.865 --> 00:39:11.365
<00:39:09.865>and <00:39:10.202>of <00:39:10.540>P <00:39:10.877>arrows, <00:39:11.214>right?

858
00:39:11.555 --> 00:39:13.485
<00:39:11.555>Because <00:39:11.835>we <00:39:12.115>don't <00:39:12.395>have <00:39:12.674>the <00:39:12.955>problem

859
00:39:13.505 --> 00:39:15.205
<00:39:13.505>of <00:39:13.785>cache <00:39:14.065>in <00:39:14.345>validation <00:39:14.625>here <00:39:14.905>anymore.

860
00:39:15.305 --> 00:39:17.165
<00:39:15.305>In <00:39:15.504>react <00:39:15.705>systems, <00:39:15.904>you <00:39:16.105>never <00:39:16.305>have <00:39:16.504>the <00:39:16.705>problem

861
00:39:17.185 --> 00:39:18.245
<00:39:17.185>of <00:39:17.502>cache <00:39:17.821>in <00:39:18.139>validation

862
00:39:18.245 --> 00:39:20.485
<00:39:18.245>because <00:39:18.444>cache <00:39:18.645>in <00:39:18.845>validation <00:39:19.045>is <00:39:19.245>a <00:39:19.444>synchronous <00:39:19.645>problem

863
00:39:20.635 --> 00:39:22.405
<00:39:20.635>because <00:39:20.915>you <00:39:21.195>always <00:39:21.475>need <00:39:21.755>to <00:39:22.035>pull

864
00:39:22.625 --> 00:39:25.125
<00:39:22.625>and <00:39:22.765>ask, <00:39:22.905>okay, <00:39:23.045>do <00:39:23.185>I <00:39:23.325>need <00:39:23.465>to <00:39:23.605>pull <00:39:23.745>data <00:39:23.885>now <00:39:24.025>again

865
00:39:25.145 --> 00:39:26.645
<00:39:25.145>or <00:39:25.337>should <00:39:25.530>I <00:39:25.723>keep <00:39:25.916>the <00:39:26.109>old <00:39:26.302>one <00:39:26.495>in?

866
00:39:26.645 --> 00:39:28.765
<00:39:26.645>Push <00:39:26.845>the <00:39:27.045>system. <00:39:27.245>You <00:39:27.445>always <00:39:27.645>get <00:39:27.845>the <00:39:28.045>events

867
00:39:28.825 --> 00:39:29.845
<00:39:28.825>if <00:39:29.131>data <00:39:29.437>is <00:39:29.743>changed.

868
00:39:30.425 --> 00:39:33.325
<00:39:30.425>So <00:39:30.580>cach <00:39:30.736>in <00:39:30.891>validation <00:39:31.047>is <00:39:31.202>never, <00:39:31.358>is <00:39:31.513>never <00:39:31.669>a <00:39:31.825>problem.

869
00:39:33.985 --> 00:39:37.005
<00:39:33.985>And <00:39:34.140>this <00:39:34.296>idea <00:39:34.451>of <00:39:34.607>projections, <00:39:34.762>which <00:39:34.918>we <00:39:35.073>get <00:39:35.229>kind <00:39:35.385>of

870
00:39:37.025 --> 00:39:38.845
<00:39:37.025>for <00:39:37.375>free <00:39:37.725>in <00:39:38.075>reactive <00:39:38.425>architectures

871
00:39:39.305 --> 00:39:41.445
<00:39:39.305>of <00:39:39.504>course <00:39:39.705>is <00:39:39.904>an <00:39:40.105>amazing <00:39:40.305>impact <00:39:40.504>on <00:39:40.705>the

872
00:39:41.645 --> 00:39:42.725
<00:39:41.645>resilience <00:39:41.969>of <00:39:42.293>our <00:39:42.616>system.

873
00:39:43.145 --> 00:39:46.165
<00:39:43.145>And <00:39:43.320>this <00:39:43.495>brings <00:39:43.670>us <00:39:43.845>directly <00:39:44.020>back <00:39:44.195>to <00:39:44.370>reactive <00:39:44.545>manifesto.

874
00:39:46.865 --> 00:39:48.085
<00:39:46.865>So <00:39:47.084>to <00:39:47.304>close <00:39:47.523>this <00:39:47.743>up, <00:39:47.963>yeah,

875
00:39:49.845 --> 00:39:52.495
<00:39:49.845>this <00:39:50.078>stuff <00:39:50.311>is <00:39:50.544>cool, <00:39:50.778>of <00:39:51.011>course, <00:39:51.245>yeah.

876
00:39:53.355 --> 00:39:54.535
<00:39:53.355>But <00:39:53.709>please <00:39:54.063>think <00:39:54.417>twice

877
00:39:54.675 --> 00:39:57.535
<00:39:54.675>and <00:39:54.875>ensure <00:39:55.075>that <00:39:55.275>reactive <00:39:55.475>architectures <00:39:55.675>really <00:39:55.875>fit <00:39:56.075>your

878
00:39:57.535 --> 00:40:01.875
<00:39:57.535>problem <00:39:57.734>at <00:39:57.935>hand <00:39:58.134>because <00:39:58.335>it's <00:39:58.535>all <00:39:58.734>architectural <00:39:58.935>styles.

879
00:40:03.105 --> 00:40:04.675
<00:40:03.105>They <00:40:03.455>buy <00:40:03.805>you <00:40:04.155>options, <00:40:04.505>right?

880
00:40:05.415 --> 00:40:08.635
<00:40:05.415>And <00:40:05.648>reactive <00:40:05.881>architectures <00:40:06.115>buys <00:40:06.348>you <00:40:06.581>mainly <00:40:06.815>resilience,

881
00:40:08.785 --> 00:40:12.075
<00:40:08.785>real <00:40:09.065>time <00:40:09.345>capabilities, <00:40:09.625>elasticity <00:40:09.904>and <00:40:10.185>extendability

882
00:40:13.125 --> 00:40:14.225
<00:40:13.125>and <00:40:13.455>the <00:40:13.785>important <00:40:14.115>thing.

883
00:40:14.225 --> 00:40:16.865
<00:40:14.225>And <00:40:14.380>that's <00:40:14.536>true <00:40:14.691>not <00:40:14.847>only <00:40:15.002>for <00:40:15.158>reactive <00:40:15.313>systems, <00:40:15.469>that's <00:40:15.625>true

884
00:40:16.865 --> 00:40:19.905
<00:40:16.865>for <00:40:17.098>microservices, <00:40:17.331>that's <00:40:17.564>true <00:40:17.798>for <00:40:18.031>reactive <00:40:18.265>systems,

885
00:40:20.245 --> 00:40:21.905
<00:40:20.245>that's <00:40:20.595>true <00:40:20.944>for <00:40:21.295>event-based <00:40:21.645>systems.

886
00:40:22.245 --> 00:40:24.105
<00:40:22.245>That's <00:40:22.478>true <00:40:22.711>for <00:40:22.944>function <00:40:23.178>as <00:40:23.411>a <00:40:23.645>service.

887
00:40:24.105 --> 00:40:26.545
<00:40:24.105>Architectures, <00:40:24.455>the <00:40:24.805>buy <00:40:25.155>you <00:40:25.505>options,

888
00:40:27.285 --> 00:40:29.305
<00:40:27.285>that's <00:40:27.565>the <00:40:27.845>most <00:40:28.125>important <00:40:28.404>work <00:40:28.685>here.

889
00:40:29.415 --> 00:40:32.665
<00:40:29.415>They <00:40:29.555>buy <00:40:29.695>you <00:40:29.835>those <00:40:29.975>options, <00:40:30.115>you <00:40:30.255>don't <00:40:30.395>get <00:40:30.535>them <00:40:30.675>for <00:40:30.815>free.

890
00:40:33.075 --> 00:40:35.425
<00:40:33.075>Right? <00:40:33.424>And <00:40:33.774>in <00:40:34.125>software <00:40:34.475>engineering

891
00:40:35.425 --> 00:40:39.225
<00:40:35.425>and <00:40:35.600>software <00:40:35.775>architectures, <00:40:35.950>we <00:40:36.125>always <00:40:36.300>pay <00:40:36.475>with <00:40:36.650>one <00:40:36.825>currency

892
00:40:39.365 --> 00:40:40.905
<00:40:39.365>and <00:40:39.827>this <00:40:40.289>currency <00:40:40.751>complexity.

893
00:40:43.495 --> 00:40:46.155
<00:40:43.495>So <00:40:43.670>think <00:40:43.845>twice <00:40:44.020>if <00:40:44.194>you <00:40:44.370>really <00:40:44.545>need <00:40:44.720>these <00:40:44.895>options,

894
00:40:46.155 --> 00:40:50.315
<00:40:46.155>if <00:40:46.310>you <00:40:46.466>really <00:40:46.621>want <00:40:46.777>to <00:40:46.932>buy <00:40:47.088>these <00:40:47.243>options <00:40:47.399>by <00:40:47.555>complexity.

895
00:40:50.895 --> 00:40:52.035
<00:40:50.895>So <00:40:51.237>maybe <00:40:51.578>start <00:40:51.921>small

896
00:40:53.055 --> 00:40:55.635
<00:40:53.055>and <00:40:53.288>shift <00:40:53.521>to <00:40:53.754>reactive <00:40:53.988>systems <00:40:54.221>once <00:40:54.455>needed.

897
00:40:58.135 --> 00:40:59.905
<00:40:58.135>Hope <00:40:58.368>this <00:40:58.601>was <00:40:58.835>useful. <00:40:59.068>Thanks <00:40:59.301>a <00:40:59.535>lot.