WEBVTT

1
00:00:03.385 --> 00:00:04.685
<00:00:03.385>All <00:00:03.969>right, <00:00:04.555>great.

2
00:00:04.755 --> 00:00:05.765
<00:00:04.755>Welcome <00:00:05.664>everybody.

3
00:00:06.155 --> 00:00:07.645
<00:00:06.155>Glad <00:00:06.346>to <00:00:06.538>see <00:00:06.729>many <00:00:06.921>of <00:00:07.112>you <00:00:07.304>here <00:00:07.496>right

4
00:00:07.645 --> 00:00:09.005
<00:00:07.645>after <00:00:07.951>the <00:00:08.257>after <00:00:08.563>party <00:00:08.869>yesterday.

5
00:00:09.155 --> 00:00:10.845
<00:00:09.155>It's <00:00:09.354>filling <00:00:09.555>up. <00:00:09.754>Nice <00:00:09.955>to <00:00:10.155>see <00:00:10.354>you <00:00:10.555>everyone.

6
00:00:11.085 --> 00:00:13.525
<00:00:11.085>Everyone's <00:00:11.318>fresh <00:00:11.551>and <00:00:11.785>ready. <00:00:12.018>So <00:00:12.251>let's <00:00:12.485>go.

7
00:00:14.255 --> 00:00:17.925
<00:00:14.255>Every <00:00:14.371>one <00:00:14.488>of <00:00:14.605>you <00:00:14.721>is <00:00:14.838>on <00:00:14.955>a <00:00:15.071>journey <00:00:15.188>right <00:00:15.305>now, <00:00:15.421>on <00:00:15.538>a <00:00:15.655>journey.

8
00:00:17.985 --> 00:00:20.085
<00:00:17.985>You <00:00:18.185>meet <00:00:18.384>new <00:00:18.585>people, <00:00:18.785>the <00:00:18.985>people <00:00:19.185>are <00:00:19.384>trying

9
00:00:20.085 --> 00:00:21.085
<00:00:20.085>to <00:00:20.310>tell <00:00:20.535>you <00:00:20.760>things, <00:00:20.985>they're

10
00:00:21.085 --> 00:00:22.205
<00:00:21.085>trying <00:00:21.286>to <00:00:21.488>teach <00:00:21.689>you <00:00:21.891>things, <00:00:22.093>right?

11
00:00:22.205 --> 00:00:24.325
<00:00:22.205>You <00:00:22.438>get <00:00:22.671>new <00:00:22.904>inputs, <00:00:23.138>and <00:00:23.371>every <00:00:23.604>now

12
00:00:24.325 --> 00:00:25.605
<00:00:24.325>and <00:00:24.517>then <00:00:24.709>a <00:00:24.901>new <00:00:25.093>hype <00:00:25.285>comes <00:00:25.477>around.

13
00:00:25.975 --> 00:00:27.245
<00:00:25.975>Maybe <00:00:26.356>we've <00:00:26.737>seen <00:00:27.118>one

14
00:00:27.245 --> 00:00:28.925
<00:00:27.245>or <00:00:27.400>two <00:00:27.556>hypes <00:00:27.711>in <00:00:27.867>the <00:00:28.022>last <00:00:28.178>half <00:00:28.333>a <00:00:28.489>year, <00:00:28.645>year.

15
00:00:29.035 --> 00:00:30.725
<00:00:29.035>Some <00:00:29.235>of <00:00:29.435>you <00:00:29.635>can, <00:00:29.835>can <00:00:30.035>think <00:00:30.235>about <00:00:30.435>something,

16
00:00:31.345 --> 00:00:33.645
<00:00:31.345>but <00:00:31.461>in <00:00:31.578>the <00:00:31.695>end, <00:00:31.811>we <00:00:31.928>all <00:00:32.045>are <00:00:32.161>just <00:00:32.278>trying <00:00:32.394>to <00:00:32.511>figure <00:00:32.628>things <00:00:32.744>out.

17
00:00:35.025 --> 00:00:37.405
<00:00:35.025>If <00:00:35.225>you <00:00:35.425>think, <00:00:35.625>uh, <00:00:35.824>about <00:00:36.025>software <00:00:36.225>architecture, <00:00:36.425>right?

18
00:00:37.455 --> 00:00:40.165
<00:00:37.455>There <00:00:37.595>are <00:00:37.735>quite <00:00:37.875>a <00:00:38.015>few <00:00:38.155>principles <00:00:38.295>that <00:00:38.434>are <00:00:38.574>known <00:00:38.714>by <00:00:38.855>most

19
00:00:40.165 --> 00:00:42.725
<00:00:40.165>of <00:00:40.339>us, <00:00:40.515>but <00:00:40.690>are <00:00:40.865>they <00:00:41.040>actually <00:00:41.214>followed <00:00:41.390>every <00:00:41.565>day?

20
00:00:42.915 --> 00:00:46.645
<00:00:42.915>Sometimes <00:00:43.089>more, <00:00:43.265>sometimes <00:00:43.440>less, <00:00:43.615>the <00:00:43.790>next <00:00:43.964>30 <00:00:44.140>minutes, <00:00:44.315>right?

21
00:00:46.765 --> 00:00:49.325
<00:00:46.765>I <00:00:46.881>want <00:00:46.998>to <00:00:47.115>point <00:00:47.231>you <00:00:47.348>to <00:00:47.465>some <00:00:47.581>of <00:00:47.698>those <00:00:47.815>again, <00:00:47.931>as <00:00:48.048>a <00:00:48.165>reminder

22
00:00:49.385 --> 00:00:51.125
<00:00:49.385>and <00:00:49.540>maybe <00:00:49.696>even <00:00:49.851>as <00:00:50.007>a, <00:00:50.162>if <00:00:50.318>a, <00:00:50.473>as <00:00:50.629>a <00:00:50.785>pickup

23
00:00:51.305 --> 00:00:52.525
<00:00:51.305>and <00:00:51.671>some <00:00:52.037>implementation <00:00:52.403>ideas

24
00:00:52.785 --> 00:00:54.045
<00:00:52.785>and <00:00:53.011>how <00:00:53.238>you <00:00:53.465>can <00:00:53.692>integrate <00:00:53.919>them.

25
00:00:55.785 --> 00:00:56.925
<00:00:55.785>My <00:00:56.041>name <00:00:56.297>is <00:00:56.554>Julian <00:00:56.811>Lang.

26
00:00:57.065 --> 00:00:59.805
<00:00:57.065>I'm <00:00:57.239>a <00:00:57.415>solutions <00:00:57.589>architect <00:00:57.765>working <00:00:57.940>at <00:00:58.114>Amazon <00:00:58.290>Web <00:00:58.464>Services,

27
00:01:00.195 --> 00:01:02.925
<00:01:00.195>usually <00:01:00.395>work <00:01:00.595>with <00:01:00.795>media, <00:01:00.995>entertainment <00:01:01.195>companies <00:01:01.395>in <00:01:01.595>Germany.

28
00:01:03.545 --> 00:01:05.365
<00:01:03.545>I'm <00:01:03.825>also <00:01:04.105>focusing <00:01:04.385>in <00:01:04.665>serverless <00:01:04.945>technologies,

29
00:01:05.365 --> 00:01:06.725
<00:01:05.364>event-driven <00:01:06.589>architectures,

30
00:01:06.725 --> 00:01:08.405
<00:01:06.725>and <00:01:06.958>basically <00:01:07.191>everything <00:01:07.425>that <00:01:07.658>comes <00:01:07.891>around <00:01:08.125>that.

31
00:01:09.425 --> 00:01:13.485
<00:01:09.425>So <00:01:09.600>let's <00:01:09.774>directly <00:01:09.950>dive <00:01:10.125>into <00:01:10.300>the <00:01:10.475>first <00:01:10.649>principle, <00:01:10.825>something

32
00:01:13.485 --> 00:01:15.725
<00:01:13.485>that <00:01:13.685>is <00:01:13.885>not <00:01:14.085>only <00:01:14.285>relevant <00:01:14.485>to <00:01:14.685>software <00:01:14.885>architecture,

33
00:01:16.105 --> 00:01:19.085
<00:01:16.105>but <00:01:16.280>relevant <00:01:16.455>also <00:01:16.630>in <00:01:16.805>general, <00:01:16.980>uh, <00:01:17.155>in <00:01:17.330>life, <00:01:17.505>right?

34
00:01:19.665 --> 00:01:21.045
<00:01:19.664>Beware <00:01:19.975>of <00:01:20.286>the <00:01:20.596>faith <00:01:20.907>healer.

35
00:01:21.825 --> 00:01:23.805
<00:01:21.825>So <00:01:22.025>the <00:01:22.225>faith <00:01:22.425>healer, <00:01:22.625>a <00:01:22.825>tool, <00:01:23.025>a <00:01:23.225>person

36
00:01:23.945 --> 00:01:25.125
<00:01:23.945>or <00:01:24.298>something <00:01:24.652>that <00:01:25.007>tries

37
00:01:25.185 --> 00:01:27.085
<00:01:25.185>to <00:01:25.465>offer <00:01:25.745>you <00:01:26.025>a <00:01:26.305>solution <00:01:26.585>without

38
00:01:27.085 --> 00:01:28.125
<00:01:27.085>maybe <00:01:27.319>even <00:01:27.553>knowing <00:01:27.787>the <00:01:28.021>problem.

39
00:01:28.545 --> 00:01:30.325
<00:01:28.545>But <00:01:28.745>the <00:01:28.945>important <00:01:29.145>thing <00:01:29.345>is <00:01:29.545>this <00:01:29.745>solution <00:01:29.945>will

40
00:01:30.325 --> 00:01:31.485
<00:01:30.325>solve <00:01:30.586>all <00:01:30.847>of <00:01:31.108>your <00:01:31.369>problems.

41
00:01:32.425 --> 00:01:35.285
<00:01:32.425>Anyone <00:01:32.565>ever <00:01:32.705>seen <00:01:32.845>such <00:01:32.985>a <00:01:33.125>fa <00:01:33.265>feeder, <00:01:33.405>right? <00:01:33.545>Show <00:01:33.685>of <00:01:33.825>hands.

42
00:01:35.285 --> 00:01:38.685
<00:01:35.285>Maybe <00:01:35.485>something <00:01:35.685>starts <00:01:35.884>with <00:01:36.085>K. <00:01:36.285>Yeah, <00:01:36.485>a <00:01:36.685>few.

43
00:01:39.105 --> 00:01:41.965
<00:01:39.104>Not <00:01:39.260>everyone, <00:01:39.416>okay? <00:01:39.571>Glad <00:01:39.727>maybe <00:01:39.882>you <00:01:40.038>have <00:01:40.193>not <00:01:40.349>recognized <00:01:40.505>the

44
00:01:41.965 --> 00:01:45.005
<00:01:41.965>fa <00:01:42.120>feeder <00:01:42.276>yet, <00:01:42.431>but, <00:01:42.587>uh, <00:01:42.742>what <00:01:42.898>is <00:01:43.053>the <00:01:43.209>uncomfortable <00:01:43.365>truth?

45
00:01:46.775 --> 00:01:49.485
<00:01:46.775>Every <00:01:47.125>software, <00:01:47.475>architecture, <00:01:47.825>technology, <00:01:48.175>political

46
00:01:49.745 --> 00:01:53.405
<00:01:49.745>or <00:01:49.920>life <00:01:50.095>decision <00:01:50.270>comes <00:01:50.445>with <00:01:50.620>trade <00:01:50.795>off <00:01:50.970>or <00:01:51.145>downsides.

47
00:01:53.955 --> 00:01:57.445
<00:01:53.955>There's <00:01:54.155>just <00:01:54.355>no <00:01:54.554>silver <00:01:54.755>bullet. <00:01:54.955>It's <00:01:55.155>disappointing, <00:01:55.355>right?

48
00:01:58.125 --> 00:02:00.365
<00:01:58.125>I <00:01:58.300>also <00:01:58.475>thought <00:01:58.650>Kubernetes <00:01:58.825>will <00:01:59.000>solve <00:01:59.175>all <00:01:59.350>my <00:01:59.525>problems.

49
00:02:00.815 --> 00:02:01.965
<00:02:00.815>Maybe <00:02:01.073>it <00:02:01.332>does <00:02:01.591>not, <00:02:01.850>right?

50
00:02:02.265 --> 00:02:04.205
<00:02:02.265>The <00:02:02.420>world <00:02:02.576>is <00:02:02.731>not <00:02:02.887>a <00:02:03.042>magical <00:02:03.198>place, <00:02:03.353>so <00:02:03.509>we <00:02:03.665>have

51
00:02:04.205 --> 00:02:05.325
<00:02:04.205>to <00:02:04.373>see <00:02:04.541>how <00:02:04.709>we <00:02:04.877>deal <00:02:05.045>with <00:02:05.213>that.

52
00:02:07.515 --> 00:02:08.645
<00:02:07.515>What <00:02:07.660>is <00:02:07.805>the <00:02:07.950>way <00:02:08.096>to <00:02:08.241>deal <00:02:08.386>with <00:02:08.532>it?

53
00:02:09.985 --> 00:02:14.125
<00:02:09.985>The <00:02:10.140>option <00:02:10.296>is <00:02:10.451>just <00:02:10.607>do <00:02:10.762>it, <00:02:10.918>right? <00:02:11.073>Embrace <00:02:11.229>trade <00:02:11.385>offs.

54
00:02:14.715 --> 00:02:16.965
<00:02:14.715>Take <00:02:14.855>a <00:02:14.995>step <00:02:15.135>back, <00:02:15.275>get <00:02:15.415>a <00:02:15.555>look <00:02:15.695>at <00:02:15.835>the <00:02:15.975>bigger <00:02:16.115>picture

55
00:02:17.665 --> 00:02:19.685
<00:02:17.665>and <00:02:17.864>see <00:02:18.065>what <00:02:18.265>the <00:02:18.465>different <00:02:18.665>aspects <00:02:18.864>are <00:02:19.065>of

56
00:02:19.685 --> 00:02:20.765
<00:02:19.685>what <00:02:19.879>you're <00:02:20.073>trying <00:02:20.268>to <00:02:20.462>figure <00:02:20.656>out.

57
00:02:21.905 --> 00:02:23.765
<00:02:21.905>And <00:02:22.105>if <00:02:22.305>you <00:02:22.505>think <00:02:22.705>about <00:02:22.905>architecture <00:02:23.105>in <00:02:23.305>general,

58
00:02:24.605 --> 00:02:26.245
<00:02:24.605>architecture <00:02:25.071>usually <00:02:25.538>is <00:02:26.005>about

59
00:02:27.355 --> 00:02:29.685
<00:02:27.355>systems <00:02:27.635>connecting <00:02:27.915>to <00:02:28.195>each <00:02:28.475>other, <00:02:28.755>right?

60
00:02:29.685 --> 00:02:31.565
<00:02:29.685>Talking <00:02:29.965>to <00:02:30.245>each <00:02:30.525>other <00:02:30.805>about <00:02:31.085>interaction

61
00:02:32.185 --> 00:02:34.125
<00:02:32.185>or <00:02:32.385>what <00:02:32.585>we <00:02:32.785>can <00:02:32.985>also <00:02:33.185>call <00:02:33.385>it <00:02:33.585>integration.

62
00:02:36.865 --> 00:02:38.965
<00:02:36.865>And <00:02:37.005>to <00:02:37.145>give <00:02:37.285>you <00:02:37.425>a <00:02:37.565>quote, <00:02:37.705>a <00:02:37.845>quote <00:02:37.985>from <00:02:38.125>Gregger <00:02:38.265>Hope.

63
00:02:39.245 --> 00:02:40.765
<00:02:39.245>I <00:02:39.416>mean, <00:02:39.587>uh, <00:02:39.758>some <00:02:39.929>of <00:02:40.100>you <00:02:40.271>probably <00:02:40.441>know <00:02:40.613>him.

64
00:02:40.835 --> 00:02:42.845
<00:02:40.835>He's <00:02:41.068>a <00:02:41.301>quite <00:02:41.535>well <00:02:41.768>on <00:02:42.001>architect, <00:02:42.235>uh,

65
00:02:42.915 --> 00:02:44.165
<00:02:42.915>architect, <00:02:43.290>author <00:02:43.665>as <00:02:44.040>well.

66
00:02:44.665 --> 00:02:46.565
<00:02:44.665>Um, <00:02:44.840>on <00:02:45.015>a <00:02:45.190>brace, <00:02:45.364>on <00:02:45.540>a, <00:02:45.715>on <00:02:45.890>a <00:02:46.065>book,

67
00:02:46.565 --> 00:02:48.805
<00:02:46.565>enterprise <00:02:47.031>integration <00:02:47.498>patterns <00:02:47.965>in

68
00:02:48.805 --> 00:02:50.005
<00:02:48.805>modern <00:02:49.345>cloud <00:02:49.885>applications.

69
00:02:50.235 --> 00:02:52.045
<00:02:50.235>Integration <00:02:50.701>isn't <00:02:51.168>an <00:02:51.635>afterthought.

70
00:02:52.795 --> 00:02:55.685
<00:02:52.795>It's <00:02:52.995>an <00:02:53.195>integral <00:02:53.395>part <00:02:53.595>of <00:02:53.795>the <00:02:53.995>application <00:02:54.195>architecture

71
00:02:55.905 --> 00:02:57.685
<00:02:55.905>and <00:02:56.255>the <00:02:56.605>software <00:02:56.955>delivery <00:02:57.305>lifecycle.

72
00:03:00.205 --> 00:03:02.105
<00:03:00.205>So <00:03:00.332>what <00:03:00.459>is <00:03:00.586>it <00:03:00.714>that <00:03:00.841>we <00:03:00.968>have <00:03:01.095>to <00:03:01.223>think <00:03:01.350>about <00:03:01.477>in <00:03:01.605>an

73
00:03:02.105 --> 00:03:03.225
<00:03:02.105>integration <00:03:02.608>scenario, <00:03:03.113>right?

74
00:03:03.225 --> 00:03:05.185
<00:03:03.225>There <00:03:03.380>are <00:03:03.536>many <00:03:03.691>things, <00:03:03.847>uh, <00:03:04.002>many <00:03:04.158>options <00:03:04.313>to <00:03:04.469>deal <00:03:04.625>with

75
00:03:05.185 --> 00:03:08.745
<00:03:05.185>that <00:03:05.340>we <00:03:05.496>can <00:03:05.651>have <00:03:05.807>a <00:03:05.962>file <00:03:06.118>transfer <00:03:06.273>shared <00:03:06.429>database, <00:03:06.585>right?

76
00:03:08.745 --> 00:03:10.865
<00:03:08.745>Choreography, <00:03:09.211>patterns, <00:03:09.678>messaging, <00:03:10.145>streaming.

77
00:03:10.865 --> 00:03:11.905
<00:03:10.865>There <00:03:11.052>are <00:03:11.239>many <00:03:11.426>things <00:03:11.613>to <00:03:11.801>consider,

78
00:03:14.285 --> 00:03:16.465
<00:03:14.285>but <00:03:14.440>how <00:03:14.596>hard <00:03:14.751>can <00:03:14.907>it <00:03:15.062>actually <00:03:15.218>be <00:03:15.373>connecting <00:03:15.529>to <00:03:15.685>systems?

79
00:03:17.245 --> 00:03:19.745
<00:03:17.245>We <00:03:17.420>use <00:03:17.595>Kafka <00:03:17.770>anyway <00:03:17.945>for <00:03:18.120>connection <00:03:18.295>for <00:03:18.470>everything, <00:03:18.645>right?

80
00:03:19.845 --> 00:03:21.745
<00:03:19.845>So, <00:03:20.020>so <00:03:20.195>why <00:03:20.370>should <00:03:20.545>we <00:03:20.720>think <00:03:20.895>about <00:03:21.070>anything <00:03:21.245>else?

81
00:03:22.355 --> 00:03:24.905
<00:03:22.355>Maybe <00:03:22.494>we <00:03:22.635>can <00:03:22.774>go <00:03:22.915>back, <00:03:23.054>back <00:03:23.195>to <00:03:23.334>the <00:03:23.475>first <00:03:23.614>principle, <00:03:23.755>right?

82
00:03:24.965 --> 00:03:26.465
<00:03:24.965>The <00:03:25.235>silver <00:03:25.505>bullet, <00:03:25.775>the <00:03:26.045>fa <00:03:26.315>filler.

83
00:03:26.755 --> 00:03:28.305
<00:03:26.755>Think <00:03:27.103>about <00:03:27.452>the <00:03:27.801>trade-offs, <00:03:28.150>right?

84
00:03:28.925 --> 00:03:31.665
<00:03:28.925>So <00:03:29.052>are <00:03:29.179>you, <00:03:29.306>are <00:03:29.434>you <00:03:29.561>aware <00:03:29.688>of <00:03:29.815>how <00:03:29.943>to <00:03:30.070>do <00:03:30.197>error <00:03:30.325>handling?

85
00:03:31.905 --> 00:03:33.105
<00:03:31.905>Retries <00:03:32.445>item <00:03:32.984>potency?

86
00:03:33.315 --> 00:03:34.705
<00:03:33.315>We'll <00:03:33.493>talk <00:03:33.672>a <00:03:33.851>bit <00:03:34.029>more <00:03:34.208>about <00:03:34.387>that <00:03:34.565>later.

87
00:03:35.185 --> 00:03:36.985
<00:03:35.185>Asynchronous, <00:03:35.885>synchronous <00:03:36.585>communication.

88
00:03:37.035 --> 00:03:39.185
<00:03:37.035>There <00:03:37.174>are <00:03:37.315>quite <00:03:37.454>a <00:03:37.595>few <00:03:37.734>things <00:03:37.875>that <00:03:38.015>you <00:03:38.155>have <00:03:38.295>to <00:03:38.435>evaluate.

89
00:03:42.565 --> 00:03:44.085
<00:03:42.565>A <00:03:42.793>quote <00:03:43.021>from <00:03:43.249>my <00:03:43.477>colleague, <00:03:43.705>Dirk, <00:03:43.933>right?

90
00:03:44.105 --> 00:03:46.805
<00:03:44.105>Who <00:03:44.304>I <00:03:44.505>co-authored <00:03:44.704>to <00:03:44.905>talk <00:03:45.105>with, <00:03:45.304>no <00:03:45.505>architect,

91
00:03:46.985 --> 00:03:50.285
<00:03:46.985>no <00:03:47.160>architecture <00:03:47.335>decision <00:03:47.510>you <00:03:47.685>take <00:03:47.860>comes <00:03:48.035>without <00:03:48.210>trade <00:03:48.385>offs.

92
00:03:51.135 --> 00:03:53.405
<00:03:51.135>Every <00:03:51.415>architecture <00:03:51.695>decision <00:03:51.975>brings <00:03:52.255>some <00:03:52.535>pain,

93
00:03:53.825 --> 00:03:56.045
<00:03:53.825>and <00:03:54.024>your <00:03:54.225>job <00:03:54.424>as <00:03:54.625>a <00:03:54.825>software <00:03:55.024>architect <00:03:55.225>is

94
00:03:56.045 --> 00:03:59.845
<00:03:56.045>to <00:03:56.200>identify <00:03:56.356>the <00:03:56.511>least <00:03:56.667>painful <00:03:56.822>option <00:03:56.978>on <00:03:57.133>the <00:03:57.289>table, <00:03:57.445>right?

95
00:04:00.055 --> 00:04:01.965
<00:04:00.055>Least <00:04:00.521>painful. <00:04:00.988>There's <00:04:01.455>rare,

96
00:04:02.155 --> 00:04:03.845
<00:04:02.155>very <00:04:02.388>rarely <00:04:02.621>an <00:04:02.855>option <00:04:03.088>without <00:04:03.321>any <00:04:03.555>pain.

97
00:04:03.845 --> 00:04:08.525
<00:04:03.845>There's <00:04:04.045>no <00:04:04.245>free <00:04:04.445>lunch. <00:04:04.645>So <00:04:04.845>let's <00:04:05.045>take <00:04:05.245>an

98
00:04:08.525 --> 00:04:11.485
<00:04:08.525>example <00:04:08.758>for <00:04:08.991>such <00:04:09.225>a <00:04:09.458>trade <00:04:09.691>off <00:04:09.925>queues.

99
00:04:12.345 --> 00:04:13.965
<00:04:12.345>You <00:04:12.545>have <00:04:12.745>a <00:04:12.945>producer, <00:04:13.145>you <00:04:13.345>have <00:04:13.545>a <00:04:13.745>consumer.

100
00:04:14.355 --> 00:04:16.005
<00:04:14.355>They, <00:04:14.704>the <00:04:15.054>producer <00:04:15.405>consumes <00:04:15.755>at

101
00:04:16.005 --> 00:04:17.085
<00:04:16.005>a <00:04:16.199>different <00:04:16.393>rate <00:04:16.588>than <00:04:16.782>the <00:04:16.976>queue.

102
00:04:17.105 --> 00:04:19.605
<00:04:17.105>So <00:04:17.245>what <00:04:17.385>we <00:04:17.525>can <00:04:17.665>use <00:04:17.805>the <00:04:17.945>queue <00:04:18.085>for, <00:04:18.225>for <00:04:18.365>example, <00:04:18.505>is

103
00:04:19.665 --> 00:04:20.765
<00:04:19.665>for <00:04:20.160>flow <00:04:20.654>control.

104
00:04:21.425 --> 00:04:22.805
<00:04:21.425>On <00:04:21.632>the <00:04:21.839>top, <00:04:22.046>you <00:04:22.253>see <00:04:22.460>an <00:04:22.667>example

105
00:04:23.305 --> 00:04:25.285
<00:04:23.305>for <00:04:23.585>an <00:04:23.865>arrival <00:04:24.145>rate <00:04:24.425>that <00:04:24.705>fluctuates.

106
00:04:25.665 --> 00:04:29.325
<00:04:25.665>And <00:04:25.792>on <00:04:25.919>the <00:04:26.046>top <00:04:26.174>right, <00:04:26.301>a <00:04:26.428>consumption <00:04:26.555>rate <00:04:26.683>that <00:04:26.810>is <00:04:26.937>fairly, <00:04:27.065>uh,

107
00:04:29.325 --> 00:04:31.685
<00:04:29.325>fairly <00:04:29.480>uh, <00:04:29.636>constant, <00:04:29.791>but <00:04:29.947>at <00:04:30.102>some <00:04:30.258>point <00:04:30.413>the <00:04:30.569>queue <00:04:30.724>gets

108
00:04:31.685 --> 00:04:34.965
<00:04:31.685>emptied <00:04:31.860>because <00:04:32.035>the <00:04:32.210>consumer <00:04:32.385>can <00:04:32.560>consume <00:04:32.735>faster <00:04:32.910>than <00:04:33.085>arrival

109
00:04:34.965 --> 00:04:35.965
<00:04:34.965>rate <00:04:35.265>of <00:04:35.565>new <00:04:35.865>messages.

110
00:04:36.505 --> 00:04:38.205
<00:04:36.505>On <00:04:36.705>the <00:04:36.905>bottom, <00:04:37.105>it's <00:04:37.305>a <00:04:37.505>bit <00:04:37.705>different, <00:04:37.905>right?

111
00:04:38.315 --> 00:04:41.445
<00:04:38.315>Very <00:04:38.515>high <00:04:38.715>arrival <00:04:38.915>rate, <00:04:39.115>but <00:04:39.315>constant <00:04:39.515>consumption <00:04:39.715>rate.

112
00:04:41.905 --> 00:04:45.125
<00:04:41.905>So <00:04:42.032>what <00:04:42.159>does <00:04:42.286>it <00:04:42.414>mean, <00:04:42.541>right? <00:04:42.668>The <00:04:42.795>queue <00:04:42.923>fills <00:04:43.050>up <00:04:43.177>over <00:04:43.304>time.

113
00:04:46.005 --> 00:04:47.345
<00:04:46.005>But <00:04:46.206>what <00:04:46.407>is <00:04:46.608>actually <00:04:46.809>the <00:04:47.010>trade <00:04:47.211>off?

114
00:04:49.575 --> 00:04:52.795
<00:04:49.575>If <00:04:49.715>you <00:04:49.854>think <00:04:49.995>about <00:04:50.135>what <00:04:50.275>happens, <00:04:50.414>the <00:04:50.555>messages <00:04:50.695>get <00:04:50.835>put <00:04:50.974>in,

115
00:04:52.905 --> 00:04:54.155
<00:04:52.905>they <00:04:53.280>don't <00:04:53.655>get <00:04:54.030>consumed.

116
00:04:54.255 --> 00:04:56.795
<00:04:54.255>The <00:04:54.410>queues <00:04:54.566>fill <00:04:54.721>up. <00:04:54.877>What <00:04:55.032>do <00:04:55.188>we <00:04:55.343>do <00:04:55.499>with <00:04:55.655>that?

117
00:04:57.575 --> 00:04:58.915
<00:04:57.575>We <00:04:57.776>get <00:04:57.977>a <00:04:58.178>lot <00:04:58.379>of <00:04:58.580>old <00:04:58.781>messages

118
00:04:59.575 --> 00:05:01.275
<00:04:59.575>and <00:04:59.730>we <00:04:59.886>have <00:05:00.041>to <00:05:00.197>throw <00:05:00.352>them <00:05:00.508>out <00:05:00.663>at <00:05:00.819>some <00:05:00.974>point

119
00:05:01.345 --> 00:05:05.715
<00:05:01.345>because <00:05:01.500>even <00:05:01.656>a <00:05:01.811>very <00:05:01.967>valuable <00:05:02.122>message <00:05:02.278>has <00:05:02.433>a <00:05:02.589>reasonable <00:05:02.745>TTL

120
00:05:06.575 --> 00:05:07.875
<00:05:06.575>as <00:05:06.808>your <00:05:07.043>system <00:05:07.277>just <00:05:07.511>backs <00:05:07.745>up

121
00:05:07.875 --> 00:05:09.035
<00:05:07.875>and <00:05:08.083>you <00:05:08.292>can't <00:05:08.501>do <00:05:08.710>anything <00:05:08.919>anymore.

122
00:05:10.335 --> 00:05:11.355
<00:05:10.335>How <00:05:10.518>to <00:05:10.702>deal <00:05:10.885>with <00:05:11.069>that, <00:05:11.253>right?

123
00:05:11.375 --> 00:05:14.515
<00:05:11.375>You <00:05:11.530>can <00:05:11.686>also <00:05:11.841>build <00:05:11.997>a <00:05:12.152>big <00:05:12.308>pressure <00:05:12.463>towards <00:05:12.619>your <00:05:12.775>producer

124
00:05:14.895 --> 00:05:17.915
<00:05:14.895>to <00:05:15.034>tell <00:05:15.174>your <00:05:15.315>producer, <00:05:15.455>Hey, <00:05:15.594>we <00:05:15.734>need <00:05:15.875>to <00:05:16.015>slow <00:05:16.155>things <00:05:16.294>down.

125
00:05:18.705 --> 00:05:19.995
<00:05:18.705>Okay, <00:05:19.092>sounds <00:05:19.479>fine, <00:05:19.866>right?

126
00:05:19.995 --> 00:05:22.315
<00:05:19.995>But <00:05:20.135>what <00:05:20.275>is <00:05:20.415>actually <00:05:20.555>the <00:05:20.695>example <00:05:20.835>here <00:05:20.975>for <00:05:21.115>the <00:05:21.255>trade <00:05:21.395>off?

127
00:05:22.885 --> 00:05:25.635
<00:05:22.885>We're <00:05:23.060>using <00:05:23.235>the <00:05:23.409>queue <00:05:23.585>to <00:05:23.760>decouple <00:05:23.935>our <00:05:24.110>services, <00:05:24.284>right?

128
00:05:25.635 --> 00:05:26.835
<00:05:25.635>To <00:05:25.905>make <00:05:26.175>them <00:05:26.445>more <00:05:26.715>independent.

129
00:05:27.295 --> 00:05:30.195
<00:05:27.295>But <00:05:27.450>we <00:05:27.606>also <00:05:27.761>have <00:05:27.917>to <00:05:28.072>keep <00:05:28.228>an <00:05:28.383>eye <00:05:28.539>on <00:05:28.695>how

130
00:05:30.215 --> 00:05:32.635
<00:05:30.215>to <00:05:30.370>actually <00:05:30.526>monitor <00:05:30.681>the <00:05:30.837>system, <00:05:30.992>how <00:05:31.148>to <00:05:31.303>alert <00:05:31.459>on <00:05:31.614>it,

131
00:05:32.635 --> 00:05:35.115
<00:05:32.635>and <00:05:32.775>how <00:05:32.914>to <00:05:33.055>make <00:05:33.195>sure <00:05:33.335>that <00:05:33.474>things <00:05:33.615>work <00:05:33.755>as <00:05:33.895>we <00:05:34.034>expect.

132
00:05:39.135 --> 00:05:44.115
<00:05:39.135>So <00:05:39.290>for <00:05:39.446>the <00:05:39.601>next <00:05:39.757>principle, <00:05:39.912>uh, <00:05:40.068>apply <00:05:40.223>divide <00:05:40.379>and <00:05:40.534>conquer.

133
00:05:44.815 --> 00:05:47.555
<00:05:44.815>If <00:05:44.990>you <00:05:45.165>have <00:05:45.340>a <00:05:45.515>difficult <00:05:45.690>problem's, <00:05:45.865>a <00:05:46.040>good <00:05:46.215>start

134
00:05:47.555 --> 00:05:49.875
<00:05:47.555>to <00:05:47.788>break <00:05:48.021>things <00:05:48.255>down <00:05:48.488>into <00:05:48.721>smaller <00:05:48.955>problems

135
00:05:49.875 --> 00:05:51.915
<00:05:49.875>because <00:05:50.030>usually <00:05:50.186>they <00:05:50.341>are <00:05:50.497>more, <00:05:50.652>much <00:05:50.808>more <00:05:50.963>easy <00:05:51.119>to <00:05:51.275>solve.

136
00:05:55.025 --> 00:05:58.085
<00:05:55.025>What <00:05:55.164>do <00:05:55.304>we <00:05:55.445>see <00:05:55.585>here <00:05:55.724>as <00:05:55.864>an <00:05:56.005>architect, <00:05:56.145>right? <00:05:56.284>A <00:05:56.424>monolith.

137
00:05:58.635 --> 00:06:00.805
<00:05:58.635>Monoliths <00:05:58.868>not <00:05:59.101>only <00:05:59.335>exist <00:05:59.568>in <00:05:59.801>software <00:06:00.034>architecture,

138
00:06:00.805 --> 00:06:03.085
<00:06:00.805>they <00:06:00.980>also <00:06:01.155>exist <00:06:01.330>in, <00:06:01.505>in <00:06:01.680>nature, <00:06:01.855>something <00:06:02.030>like <00:06:02.205>this.

139
00:06:03.145 --> 00:06:04.965
<00:06:03.145>And <00:06:03.320>they <00:06:03.495>have <00:06:03.669>quite <00:06:03.844>some <00:06:04.020>things <00:06:04.195>in <00:06:04.370>common <00:06:04.544>with

140
00:06:04.965 --> 00:06:06.605
<00:06:04.965>what <00:06:05.244>we <00:06:05.525>see <00:06:05.804>in <00:06:06.085>software <00:06:06.364>architecture.

141
00:06:07.035 --> 00:06:08.965
<00:06:07.035>It's <00:06:07.268>a <00:06:07.501>big, <00:06:07.735>nice <00:06:07.968>shiny <00:06:08.201>thing, <00:06:08.435>right?

142
00:06:08.965 --> 00:06:10.325
<00:06:08.965>Everything <00:06:09.373>sticks <00:06:09.781>well <00:06:10.188>together.

143
00:06:10.625 --> 00:06:12.445
<00:06:10.625>It <00:06:10.825>looks <00:06:11.025>quite <00:06:11.225>nice, <00:06:11.425>it <00:06:11.625>works <00:06:11.825>quite <00:06:12.025>nice.

144
00:06:12.515 --> 00:06:14.085
<00:06:12.515>It's <00:06:12.865>a <00:06:13.215>great <00:06:13.565>design <00:06:13.914>solid,

145
00:06:14.425 --> 00:06:16.125
<00:06:14.425>and <00:06:14.625>it <00:06:14.825>can <00:06:15.025>stand <00:06:15.225>for <00:06:15.425>quite <00:06:15.625>some <00:06:15.825>time.

146
00:06:16.125 --> 00:06:18.365
<00:06:16.125>Everything <00:06:16.825>works. <00:06:17.525>But

147
00:06:18.365 --> 00:06:20.205
<00:06:18.365>what <00:06:18.520>do <00:06:18.676>we <00:06:18.831>do <00:06:18.987>if <00:06:19.142>we <00:06:19.298>wanna <00:06:19.453>develop <00:06:19.609>things <00:06:19.765>further?

148
00:06:21.705 --> 00:06:25.085
<00:06:21.705>Things <00:06:21.905>get <00:06:22.104>to <00:06:22.305>spaghetti <00:06:22.505>code, <00:06:22.705>right? <00:06:22.905>Slow <00:06:23.104>deployments.

149
00:06:25.155 --> 00:06:26.525
<00:06:25.155>It's <00:06:25.401>a <00:06:25.648>bit <00:06:25.894>more <00:06:26.141>complicated, <00:06:26.388>right?

150
00:06:26.525 --> 00:06:28.805
<00:06:26.525>Because <00:06:26.724>the <00:06:26.924>initial <00:06:27.125>architecture <00:06:27.325>makes <00:06:27.525>it <00:06:27.724>more <00:06:27.924>difficult.

151
00:06:30.905 --> 00:06:32.005
<00:06:30.905>How <00:06:31.102>does <00:06:31.301>nature <00:06:31.498>deal <00:06:31.697>with <00:06:31.895>it?

152
00:06:32.185 --> 00:06:34.165
<00:06:32.185>It <00:06:32.465>also <00:06:32.745>modernizes <00:06:33.025>few <00:06:33.305>things, <00:06:33.585>right?

153
00:06:34.385 --> 00:06:35.445
<00:06:34.385>We <00:06:34.575>see <00:06:34.766>a <00:06:34.957>new <00:06:35.148>pillar <00:06:35.339>here,

154
00:06:35.545 --> 00:06:37.845
<00:06:35.545>and <00:06:35.700>we <00:06:35.856>also <00:06:36.011>do <00:06:36.167>the <00:06:36.322>same <00:06:36.478>thing <00:06:36.633>in <00:06:36.789>software, <00:06:36.945>right?

155
00:06:37.865 --> 00:06:40.605
<00:06:37.865>We <00:06:37.992>take <00:06:38.119>a <00:06:38.246>look <00:06:38.374>at <00:06:38.501>the <00:06:38.628>most <00:06:38.755>painful <00:06:38.883>part, <00:06:39.010>we <00:06:39.137>modernize <00:06:39.265>it

156
00:06:40.605 --> 00:06:41.805
<00:06:40.605>and <00:06:40.821>make <00:06:41.037>sure <00:06:41.253>that <00:06:41.469>it <00:06:41.685>works.

157
00:06:41.905 --> 00:06:44.965
<00:06:41.905>As <00:06:42.060>expected. <00:06:42.216>We <00:06:42.371>can <00:06:42.527>do <00:06:42.682>it <00:06:42.838>in <00:06:42.993>software <00:06:43.149>nature, <00:06:43.304>right?

158
00:06:44.965 --> 00:06:46.485
<00:06:44.965>Especially <00:06:45.238>with <00:06:45.512>stones, <00:06:45.785>not <00:06:46.059>so <00:06:46.333>much,

159
00:06:46.785 --> 00:06:49.525
<00:06:46.784>but <00:06:46.924>at <00:06:47.064>least <00:06:47.205>we <00:06:47.344>can <00:06:47.484>do <00:06:47.624>it <00:06:47.765>in, <00:06:47.905>uh, <00:06:48.044>software <00:06:48.184>architecture.

160
00:06:50.765 --> 00:06:51.865
<00:06:50.765>If <00:06:50.930>you <00:06:51.094>do <00:06:51.260>it <00:06:51.425>all <00:06:51.590>the <00:06:51.755>time

161
00:06:51.865 --> 00:06:53.945
<00:06:51.865>and <00:06:52.145>constantly, <00:06:52.425>you <00:06:52.705>might <00:06:52.985>look, <00:06:53.265>uh,

162
00:06:53.965 --> 00:06:55.385
<00:06:53.965>it <00:06:54.178>might <00:06:54.391>look <00:06:54.604>like <00:06:54.817>something <00:06:55.030>like <00:06:55.243>this.

163
00:06:56.125 --> 00:06:59.065
<00:06:56.125>You <00:06:56.280>have <00:06:56.436>a <00:06:56.591>huge, <00:06:56.747>uh, <00:06:56.902>uh, <00:06:57.058>nest <00:06:57.213>of <00:06:57.369>different <00:06:57.525>services

164
00:06:59.125 --> 00:07:00.145
<00:06:59.125>and <00:06:59.584>different <00:07:00.043>structures.

165
00:07:00.335 --> 00:07:02.665
<00:07:00.335>Basically, <00:07:00.568>you <00:07:00.801>brow <00:07:01.034>down <00:07:01.268>your <00:07:01.501>big <00:07:01.734>monolith.

166
00:07:04.495 --> 00:07:06.505
<00:07:04.495>What <00:07:04.670>are <00:07:04.845>some <00:07:05.020>of <00:07:05.195>the, <00:07:05.370>the <00:07:05.545>differences <00:07:05.720>here, <00:07:05.895>right?

167
00:07:06.505 --> 00:07:08.945
<00:07:06.505>If <00:07:06.705>we <00:07:06.905>talk <00:07:07.105>about <00:07:07.305>monolith <00:07:07.505>independent <00:07:07.705>systems, <00:07:07.905>uh,

168
00:07:08.945 --> 00:07:10.945
<00:07:08.945>hot <00:07:09.224>debated <00:07:09.505>topic <00:07:09.784>in <00:07:10.065>general, <00:07:10.344>right?

169
00:07:10.945 --> 00:07:12.065
<00:07:10.945>As <00:07:11.146>I <00:07:11.348>mentioned <00:07:11.549>at <00:07:11.751>the <00:07:11.953>beginning,

170
00:07:12.125 --> 00:07:13.585
<00:07:12.125>the <00:07:12.387>monolith, <00:07:12.650>it's <00:07:12.913>a <00:07:13.176>big <00:07:13.438>structure.

171
00:07:13.645 --> 00:07:15.305
<00:07:13.645>You <00:07:13.878>start <00:07:14.111>with <00:07:14.344>a <00:07:14.578>very <00:07:14.811>clean <00:07:15.044>architecture,

172
00:07:15.305 --> 00:07:18.225
<00:07:15.305>it <00:07:15.460>works <00:07:15.616>very <00:07:15.771>nice, <00:07:15.927>but <00:07:16.082>over <00:07:16.238>time, <00:07:16.393>it <00:07:16.549>gets <00:07:16.705>difficult

173
00:07:18.245 --> 00:07:19.865
<00:07:18.245>to <00:07:18.595>retain <00:07:18.945>this <00:07:19.295>clean <00:07:19.645>architecture.

174
00:07:20.685 --> 00:07:22.785
<00:07:20.685>If <00:07:20.885>you <00:07:21.085>have <00:07:21.285>independent <00:07:21.485>services, <00:07:21.685>you <00:07:21.885>make <00:07:22.085>some

175
00:07:22.785 --> 00:07:24.785
<00:07:22.785>of <00:07:22.985>the <00:07:23.185>architecture <00:07:23.385>decisions <00:07:23.585>also <00:07:23.785>in <00:07:23.985>the <00:07:24.185>beginning,

176
00:07:25.245 --> 00:07:27.545
<00:07:25.245>but <00:07:25.478>the <00:07:25.711>services <00:07:25.945>are <00:07:26.178>developed <00:07:26.411>independently, <00:07:26.645>right?

177
00:07:27.605 --> 00:07:30.585
<00:07:27.605>It <00:07:27.745>makes <00:07:27.885>it <00:07:28.025>easier <00:07:28.165>for <00:07:28.305>you <00:07:28.445>to <00:07:28.585>retain <00:07:28.725>a <00:07:28.865>clean <00:07:29.005>architecture.

178
00:07:31.555 --> 00:07:32.775
<00:07:31.555>Sounds <00:07:31.829>like <00:07:32.104>a <00:07:32.378>silver <00:07:32.652>bullet.

179
00:07:33.155 --> 00:07:35.255
<00:07:33.155>Not <00:07:33.434>quite, <00:07:33.715>because <00:07:33.994>there's <00:07:34.275>actually <00:07:34.554>quite

180
00:07:35.255 --> 00:07:36.375
<00:07:35.255>some <00:07:35.507>cost <00:07:35.759>attached <00:07:36.011>to <00:07:36.263>that.

181
00:07:38.175 --> 00:07:39.225
<00:07:38.175>What <00:07:38.364>did <00:07:38.553>the <00:07:38.742>cost <00:07:38.931>look <00:07:39.120>like?

182
00:07:39.775 --> 00:07:43.635
<00:07:39.775>They <00:07:39.914>could <00:07:40.054>look <00:07:40.195>something <00:07:40.335>like <00:07:40.474>this. <00:07:40.614>What <00:07:40.755>is <00:07:40.895>the <00:07:41.034>cost <00:07:41.174>here?

183
00:07:43.785 --> 00:07:45.155
<00:07:43.784>It's <00:07:44.401>complexity, <00:07:45.018>right?

184
00:07:45.155 --> 00:07:47.395
<00:07:45.155>This <00:07:45.354>is <00:07:45.554>a <00:07:45.755>service <00:07:45.955>graph <00:07:46.155>from <00:07:46.354>Amazon <00:07:46.554>2008,

185
00:07:47.405 --> 00:07:48.435
<00:07:47.405>quite <00:07:47.714>some <00:07:48.022>time <00:07:48.332>ago.

186
00:07:49.095 --> 00:07:50.515
<00:07:49.095>But <00:07:49.521>it <00:07:49.947>is <00:07:50.373>complicated.

187
00:07:51.065 --> 00:07:52.475
<00:07:51.065>Obviously <00:07:51.699>not <00:07:52.334>everyone,

188
00:07:52.495 --> 00:07:54.355
<00:07:52.495>not <00:07:52.670>every <00:07:52.845>company <00:07:53.020>works <00:07:53.195>at <00:07:53.370>the <00:07:53.545>scale <00:07:53.720>of <00:07:53.895>Amazon.

189
00:07:54.895 --> 00:07:56.755
<00:07:54.895>So <00:07:55.094>it <00:07:55.294>can <00:07:55.495>also <00:07:55.695>look <00:07:55.895>something <00:07:56.094>like <00:07:56.294>this.

190
00:07:56.945 --> 00:08:01.355
<00:07:56.945>This <00:07:57.100>is <00:07:57.256>from <00:07:57.411>Netflix. <00:07:57.567>Service <00:07:57.722>graph, <00:07:57.878>much <00:07:58.033>more <00:07:58.189>easy, <00:07:58.344>right?

191
00:08:01.535 --> 00:08:04.395
<00:08:01.535>So <00:08:01.690>much <00:08:01.846>more <00:08:02.001>handleable, <00:08:02.157>but <00:08:02.312>still <00:08:02.468>quite <00:08:02.623>a <00:08:02.779>few <00:08:02.935>services

192
00:08:04.395 --> 00:08:06.195
<00:08:04.395>that <00:08:04.534>you <00:08:04.674>need <00:08:04.815>to <00:08:04.955>make <00:08:05.094>sure <00:08:05.234>how <00:08:05.375>to <00:08:05.515>connect <00:08:05.655>them, <00:08:05.794>how

193
00:08:06.195 --> 00:08:07.875
<00:08:06.195>to <00:08:06.428>properly <00:08:06.661>integrate <00:08:06.895>them, <00:08:07.128>that <00:08:07.361>they <00:08:07.594>work,

194
00:08:07.945 --> 00:08:09.595
<00:08:07.945>that <00:08:08.295>they <00:08:08.645>work <00:08:08.995>properly <00:08:09.344>together.

195
00:08:12.385 --> 00:08:15.005
<00:08:12.385>So <00:08:12.664>in <00:08:12.945>a <00:08:13.224>distributed <00:08:13.505>systems, <00:08:13.784>uh,

196
00:08:15.225 --> 00:08:17.725
<00:08:15.225>things <00:08:15.400>are <00:08:15.575>more <00:08:15.750>closer <00:08:15.925>together <00:08:16.100>like <00:08:16.275>your <00:08:16.450>own <00:08:16.625>services

197
00:08:18.265 --> 00:08:20.005
<00:08:18.265>and <00:08:18.498>some <00:08:18.731>are <00:08:18.965>more <00:08:19.198>further <00:08:19.431>apart <00:08:19.664>like

198
00:08:20.065 --> 00:08:21.285
<00:08:20.065>the, <00:08:20.431>uh, <00:08:20.797>other <00:08:21.163>services.

199
00:08:21.425 --> 00:08:22.725
<00:08:21.425>In <00:08:21.717>the <00:08:22.010>end, <00:08:22.302>this <00:08:22.595>influences

200
00:08:22.745 --> 00:08:24.365
<00:08:22.745>how <00:08:23.025>things <00:08:23.305>interact <00:08:23.585>with <00:08:23.865>each <00:08:24.145>other.

201
00:08:28.415 --> 00:08:30.035
<00:08:28.415>So <00:08:28.695>if <00:08:28.975>you <00:08:29.255>wanna <00:08:29.535>modernize <00:08:29.815>things,

202
00:08:30.665 --> 00:08:33.595
<00:08:30.665>take <00:08:30.772>a <00:08:30.880>look <00:08:30.988>at <00:08:31.095>the <00:08:31.203>most <00:08:31.311>painful <00:08:31.418>part <00:08:31.526>and <00:08:31.634>do <00:08:31.741>it <00:08:31.849>step <00:08:31.957>by <00:08:32.065>step.

203
00:08:33.665 --> 00:08:36.155
<00:08:33.664>It's <00:08:33.839>very <00:08:34.015>difficult <00:08:34.189>to <00:08:34.365>boil <00:08:34.539>the <00:08:34.714>ocean <00:08:34.890>at <00:08:35.064>once.

204
00:08:38.645 --> 00:08:40.985
<00:08:38.645>So <00:08:38.845>how <00:08:39.044>do <00:08:39.245>we <00:08:39.444>actually <00:08:39.645>keep <00:08:39.845>an <00:08:40.044>overview?

205
00:08:41.045 --> 00:08:42.265
<00:08:41.044>How <00:08:41.227>do <00:08:41.410>we <00:08:41.593>make <00:08:41.776>sure <00:08:41.959>that <00:08:42.143>we

206
00:08:42.465 --> 00:08:43.665
<00:08:42.465>properly <00:08:42.735>communicate <00:08:43.005>with <00:08:43.275>each <00:08:43.544>other?

207
00:08:44.165 --> 00:08:45.905
<00:08:44.164>The <00:08:44.444>next <00:08:44.724>principle <00:08:45.005>rely <00:08:45.285>on <00:08:45.564>patterns.

208
00:08:47.445 --> 00:08:49.705
<00:08:47.445>You <00:08:47.600>might <00:08:47.756>have <00:08:47.911>seen <00:08:48.067>these <00:08:48.222>four <00:08:48.378>gentleman <00:08:48.533>at <00:08:48.689>some <00:08:48.845>point.

209
00:08:50.575 --> 00:08:51.625
<00:08:50.575>This <00:08:50.764>is <00:08:50.953>the <00:08:51.142>gang <00:08:51.331>of <00:08:51.520>four.

210
00:08:52.055 --> 00:08:54.065
<00:08:52.055>They <00:08:52.288>introduced <00:08:52.521>quite <00:08:52.755>a <00:08:52.988>few, <00:08:53.221>uh, <00:08:53.454>patterns

211
00:08:54.065 --> 00:08:55.685
<00:08:54.065>that <00:08:54.298>we <00:08:54.531>still <00:08:54.765>use <00:08:54.998>in <00:08:55.231>software <00:08:55.465>development

212
00:08:55.685 --> 00:08:56.885
<00:08:55.685>and <00:08:55.954>architecture <00:08:56.224>to <00:08:56.495>this <00:08:56.765>day.

213
00:08:57.255 --> 00:08:59.725
<00:08:57.255>Maybe <00:08:57.455>heard <00:08:57.655>about <00:08:57.855>the <00:08:58.055>factory <00:08:58.255>methods, <00:08:58.455>uh, <00:08:58.655>adapter,

214
00:08:59.765 --> 00:09:02.125
<00:08:59.765>iterator, <00:09:00.045>facade, <00:09:00.324>all <00:09:00.605>the <00:09:00.885>different <00:09:01.165>things.

215
00:09:02.265 --> 00:09:04.445
<00:09:02.265>In <00:09:02.439>the <00:09:02.615>end, <00:09:02.790>it <00:09:02.965>helps <00:09:03.140>you <00:09:03.314>as <00:09:03.490>an <00:09:03.665>architect

216
00:09:04.465 --> 00:09:06.645
<00:09:04.465>and <00:09:04.620>as <00:09:04.776>a <00:09:04.931>software <00:09:05.087>developer <00:09:05.242>to <00:09:05.398>have <00:09:05.553>a <00:09:05.709>lingua <00:09:05.865>franca.

217
00:09:06.705 --> 00:09:09.565
<00:09:06.705>So <00:09:06.905>a <00:09:07.105>way <00:09:07.305>to <00:09:07.505>easily <00:09:07.705>communicate <00:09:07.905>complicated <00:09:08.105>topics.

218
00:09:11.615 --> 00:09:13.605
<00:09:11.615>Let's <00:09:11.770>take <00:09:11.926>a <00:09:12.081>look <00:09:12.237>at <00:09:12.392>some <00:09:12.548>of <00:09:12.703>those, <00:09:12.859>uh, <00:09:13.015>ideas

219
00:09:13.825 --> 00:09:14.885
<00:09:13.825>and <00:09:14.063>some <00:09:14.302>of <00:09:14.540>those <00:09:14.779>patterns.

220
00:09:15.785 --> 00:09:18.525
<00:09:15.785>On <00:09:15.912>the <00:09:16.039>right. <00:09:16.166>On <00:09:16.294>the <00:09:16.421>left <00:09:16.548>hand <00:09:16.675>side, <00:09:16.803>we <00:09:16.930>have <00:09:17.057>an, <00:09:17.185>uh,

221
00:09:18.625 --> 00:09:19.845
<00:09:18.625>one <00:09:18.991>way <00:09:19.357>integration <00:09:19.723>pattern.

222
00:09:20.345 --> 00:09:21.965
<00:09:20.345>So <00:09:20.695>a <00:09:21.045>producer, <00:09:21.395>a <00:09:21.745>consumer,

223
00:09:22.225 --> 00:09:23.565
<00:09:22.225>and <00:09:22.466>a <00:09:22.707>message <00:09:22.948>channel <00:09:23.189>in <00:09:23.431>between,

224
00:09:23.865 --> 00:09:25.125
<00:09:23.865>we <00:09:24.148>don't <00:09:24.432>expect <00:09:24.715>in <00:09:24.999>response,

225
00:09:25.425 --> 00:09:27.525
<00:09:25.425>but <00:09:25.625>we <00:09:25.824>want <00:09:26.025>our, <00:09:26.224>uh, <00:09:26.425>both <00:09:26.625>commu, <00:09:26.824>uh,

226
00:09:27.805 --> 00:09:29.325
<00:09:27.805>communication <00:09:28.146>partners <00:09:28.489>decoupled <00:09:28.831>from <00:09:29.173>each

227
00:09:29.325 --> 00:09:31.445
<00:09:29.325>other <00:09:29.605>on <00:09:29.885>the <00:09:30.165>right <00:09:30.445>hand <00:09:30.725>side.

228
00:09:31.445 --> 00:09:33.485
<00:09:31.445>On <00:09:31.620>the <00:09:31.795>other <00:09:31.970>side, <00:09:32.145>we <00:09:32.320>do <00:09:32.495>expect <00:09:32.670>a <00:09:32.845>response.

229
00:09:33.825 --> 00:09:35.285
<00:09:33.825>So <00:09:34.087>we <00:09:34.350>have <00:09:34.613>a <00:09:34.876>forward <00:09:35.139>channel

230
00:09:35.345 --> 00:09:36.925
<00:09:35.345>and <00:09:35.578>the <00:09:35.811>back <00:09:36.045>channel <00:09:36.278>for <00:09:36.511>the <00:09:36.745>response.

231
00:09:37.535 --> 00:09:39.005
<00:09:37.535>Quite <00:09:37.976>similar <00:09:38.417>in <00:09:38.858>decoupling.

232
00:09:39.005 --> 00:09:40.565
<00:09:39.005>However, <00:09:39.285>you <00:09:39.564>have <00:09:39.845>to <00:09:40.125>make <00:09:40.405>sure

233
00:09:40.565 --> 00:09:42.645
<00:09:40.565>that <00:09:40.765>you <00:09:40.965>have <00:09:41.165>a <00:09:41.365>return <00:09:41.565>address, <00:09:41.765>correlation <00:09:41.965>id

234
00:09:42.665 --> 00:09:44.405
<00:09:42.665>and <00:09:42.820>a <00:09:42.976>few <00:09:43.131>more <00:09:43.287>things <00:09:43.442>that <00:09:43.598>you <00:09:43.753>have <00:09:43.909>to <00:09:44.064>manage

235
00:09:44.465 --> 00:09:45.805
<00:09:44.465>and, <00:09:44.666>uh, <00:09:44.867>keep <00:09:45.068>an <00:09:45.269>eye <00:09:45.470>out <00:09:45.670>for.

236
00:09:48.875 --> 00:09:51.295
<00:09:48.875>So <00:09:49.050>I <00:09:49.225>already <00:09:49.400>talk <00:09:49.575>quite <00:09:49.750>a <00:09:49.925>bit <00:09:50.100>about <00:09:50.275>coupling,

237
00:09:51.795 --> 00:09:54.415
<00:09:51.795>but <00:09:52.028>next <00:09:52.261>principle, <00:09:52.495>strive <00:09:52.728>for <00:09:52.961>loose <00:09:53.194>coupling.

238
00:09:54.565 --> 00:09:56.335
<00:09:54.565>What <00:09:54.765>is <00:09:54.965>this <00:09:55.165>actually <00:09:55.365>that <00:09:55.565>I'm <00:09:55.765>talking <00:09:55.965>about?

239
00:10:00.235 --> 00:10:01.695
<00:10:00.235>So, <00:10:00.892>coupling <00:10:01.549>integrations,

240
00:10:01.695 --> 00:10:04.455
<00:10:01.695>magic <00:10:01.850>word <00:10:02.006>coupling <00:10:02.161>in <00:10:02.317>the <00:10:02.472>end <00:10:02.628>is <00:10:02.783>a <00:10:02.939>measure <00:10:03.095>measure

241
00:10:04.595 --> 00:10:07.535
<00:10:04.595>of <00:10:04.875>independent <00:10:05.155>variability <00:10:05.435>between <00:10:05.715>connected <00:10:05.995>systems.

242
00:10:08.075 --> 00:10:10.975
<00:10:08.075>So <00:10:08.275>basically, <00:10:08.475>how <00:10:08.675>much <00:10:08.875>can <00:10:09.075>system <00:10:09.275>B <00:10:09.475>change

243
00:10:11.285 --> 00:10:12.495
<00:10:11.285>without <00:10:11.829>affecting <00:10:12.374>system?

244
00:10:12.735 --> 00:10:15.255
<00:10:12.735>A <00:10:12.968>decoupling <00:10:13.201>always <00:10:13.435>comes <00:10:13.668>at <00:10:13.901>a <00:10:14.135>cost,

245
00:10:15.725 --> 00:10:17.535
<00:10:15.725>both <00:10:16.005>at <00:10:16.285>design <00:10:16.565>and <00:10:16.845>at <00:10:17.125>runtime.

246
00:10:18.035 --> 00:10:19.255
<00:10:18.035>And <00:10:18.309>especially <00:10:18.584>it <00:10:18.858>isn't <00:10:19.133>binary.

247
00:10:19.875 --> 00:10:21.935
<00:10:19.875>So <00:10:20.075>your <00:10:20.275>system <00:10:20.475>is <00:10:20.675>not <00:10:20.875>coupled <00:10:21.075>or <00:10:21.275>decoupled.

248
00:10:22.205 --> 00:10:24.615
<00:10:22.205>It's <00:10:22.345>quite <00:10:22.485>a <00:10:22.625>scale <00:10:22.765>that's, <00:10:22.905>uh, <00:10:23.045>that <00:10:23.185>that <00:10:23.325>is <00:10:23.465>in <00:10:23.605>between.

249
00:10:24.755 --> 00:10:26.855
<00:10:24.755>And <00:10:24.882>you <00:10:25.009>have <00:10:25.136>to <00:10:25.264>figure <00:10:25.391>out <00:10:25.518>where <00:10:25.645>on <00:10:25.773>your <00:10:25.900>scale <00:10:26.027>do <00:10:26.155>you

250
00:10:26.855 --> 00:10:27.895
<00:10:26.855>wanna <00:10:27.167>put <00:10:27.479>your <00:10:27.790>system?

251
00:10:29.755 --> 00:10:31.295
<00:10:29.755>So <00:10:30.101>what <00:10:30.448>are <00:10:30.794>some <00:10:31.141>dimensions

252
00:10:31.295 --> 00:10:32.815
<00:10:31.295>that <00:10:31.523>we <00:10:31.751>can <00:10:31.979>think <00:10:32.207>about <00:10:32.435>with <00:10:32.663>coupling?

253
00:10:33.315 --> 00:10:35.655
<00:10:33.315>We <00:10:33.490>can <00:10:33.665>think <00:10:33.840>about <00:10:34.015>programming <00:10:34.190>languages <00:10:34.365>that <00:10:34.540>we <00:10:34.715>decide

254
00:10:35.675 --> 00:10:38.295
<00:10:35.675>for <00:10:35.849>data <00:10:36.025>formats <00:10:36.199>and <00:10:36.375>quite <00:10:36.550>a <00:10:36.724>few <00:10:36.900>other <00:10:37.074>things.

255
00:10:40.645 --> 00:10:42.105
<00:10:40.645>So <00:10:40.907>first <00:10:41.170>thing <00:10:41.433>that <00:10:41.696>we <00:10:41.959>want

256
00:10:42.105 --> 00:10:43.825
<00:10:42.105>to <00:10:42.385>talk <00:10:42.665>about <00:10:42.945>is <00:10:43.225>temporal <00:10:43.505>dependency.

257
00:10:44.325 --> 00:10:46.865
<00:10:44.325>So <00:10:44.500>we <00:10:44.675>may <00:10:44.850>talk <00:10:45.025>about <00:10:45.200>sync <00:10:45.375>and <00:10:45.550>asing <00:10:45.725>communication.

258
00:10:46.925 --> 00:10:48.505
<00:10:46.925>So <00:10:47.204>do <00:10:47.484>we <00:10:47.765>expect <00:10:48.045>a <00:10:48.324>response

259
00:10:48.565 --> 00:10:50.225
<00:10:48.565>and <00:10:48.915>a <00:10:49.265>proper <00:10:49.615>response <00:10:49.965>immediately,

260
00:10:50.485 --> 00:10:52.105
<00:10:50.485>or <00:10:50.660>can <00:10:50.835>we <00:10:51.010>wait <00:10:51.185>for <00:10:51.360>it <00:10:51.535>to <00:10:51.710>happen <00:10:51.885>later?

261
00:10:53.595 --> 00:10:55.575
<00:10:53.595>And <00:10:53.770>for <00:10:53.945>that, <00:10:54.120>I <00:10:54.295>wanna <00:10:54.470>switch <00:10:54.645>to <00:10:54.820>an <00:10:54.995>example.

262
00:10:55.875 --> 00:10:57.335
<00:10:55.875>And <00:10:56.062>if <00:10:56.250>you <00:10:56.438>ever <00:10:56.625>done <00:10:56.813>an <00:10:57.001>immersion <00:10:57.189>day

263
00:10:57.335 --> 00:10:59.415
<00:10:57.335>or <00:10:57.615>workshop <00:10:57.895>at <00:10:58.175>Amazon <00:10:58.455>at <00:10:58.735>AWS,

264
00:10:59.415 --> 00:11:00.815
<00:10:59.415>you <00:10:59.625>might <00:10:59.835>have <00:11:00.045>seen <00:11:00.255>this <00:11:00.465>company <00:11:00.675>before.

265
00:11:01.045 --> 00:11:04.095
<00:11:01.045>It's <00:11:01.245>wild <00:11:01.444>rides. <00:11:01.645>It's <00:11:01.844>basically <00:11:02.045>a <00:11:02.245>ride <00:11:02.444>hailing

266
00:11:04.095 --> 00:11:05.455
<00:11:04.095>company <00:11:04.707>for <00:11:05.319>unicorns.

267
00:11:05.715 --> 00:11:08.375
<00:11:05.715>So <00:11:05.870>it <00:11:06.026>works <00:11:06.181>simpler <00:11:06.337>as <00:11:06.492>similar <00:11:06.648>to <00:11:06.803>Uber <00:11:06.959>or <00:11:07.115>Lyft.

268
00:11:08.795 --> 00:11:10.935
<00:11:08.795>You <00:11:08.935>order <00:11:09.074>unicorn <00:11:09.214>and <00:11:09.354>you <00:11:09.495>say <00:11:09.635>where <00:11:09.775>you <00:11:09.915>want <00:11:10.055>to <00:11:10.194>go,

269
00:11:11.035 --> 00:11:12.295
<00:11:11.035>and <00:11:11.261>the <00:11:11.488>unicorn <00:11:11.715>takes <00:11:11.942>you <00:11:12.169>there.

270
00:11:13.755 --> 00:11:15.615
<00:11:13.755>If <00:11:13.930>we <00:11:14.105>look <00:11:14.280>at <00:11:14.455>the <00:11:14.630>backend <00:11:14.805>of <00:11:14.980>wild <00:11:15.155>rides,

271
00:11:16.115 --> 00:11:18.055
<00:11:16.115>we <00:11:16.315>have <00:11:16.515>our <00:11:16.715>consumer <00:11:16.915>that <00:11:17.115>submits <00:11:17.315>a <00:11:17.515>request,

272
00:11:18.215 --> 00:11:20.455
<00:11:18.215>A <00:11:18.342>right <00:11:18.469>request <00:11:18.596>wants <00:11:18.724>to <00:11:18.851>go <00:11:18.978>from <00:11:19.105>point <00:11:19.233>A <00:11:19.360>to <00:11:19.487>point <00:11:19.615>B.

273
00:11:20.955 --> 00:11:23.255
<00:11:20.955>We <00:11:21.110>have <00:11:21.266>a <00:11:21.421>few <00:11:21.577>different <00:11:21.732>services <00:11:21.888>that <00:11:22.043>are <00:11:22.199>interacting <00:11:22.355>here,

274
00:11:23.315 --> 00:11:25.855
<00:11:23.315>the <00:11:23.490>right <00:11:23.665>booking <00:11:23.840>services <00:11:24.015>that <00:11:24.190>gets <00:11:24.365>the <00:11:24.540>initial <00:11:24.715>request.

275
00:11:26.275 --> 00:11:28.695
<00:11:26.275>And <00:11:26.449>if <00:11:26.625>you <00:11:26.800>downstream <00:11:26.975>service <00:11:27.150>that <00:11:27.324>process, <00:11:27.500>the <00:11:27.675>request

276
00:11:29.355 --> 00:11:31.375
<00:11:29.355>for <00:11:29.510>each <00:11:29.666>of <00:11:29.821>the <00:11:29.977>requests, <00:11:30.132>we <00:11:30.288>wait <00:11:30.443>for <00:11:30.599>a <00:11:30.755>response

277
00:11:31.475 --> 00:11:33.455
<00:11:31.475>to <00:11:31.675>properly <00:11:31.875>form <00:11:32.075>a <00:11:32.275>response <00:11:32.475>to <00:11:32.675>our <00:11:32.875>customer.

278
00:11:36.055 --> 00:11:38.475
<00:11:36.055>So <00:11:36.405>what <00:11:36.755>happens <00:11:37.104>when <00:11:37.454>one

279
00:11:38.475 --> 00:11:40.115
<00:11:38.475>service <00:11:38.755>actually <00:11:39.035>hits <00:11:39.315>the <00:11:39.595>limits, <00:11:39.875>right?

280
00:11:40.285 --> 00:11:41.755
<00:11:40.285>Since <00:11:40.549>we're <00:11:40.814>waiting <00:11:41.078>for <00:11:41.343>a <00:11:41.608>response,

281
00:11:42.265 --> 00:11:45.595
<00:11:42.265>this <00:11:42.439>propagates <00:11:42.615>quite <00:11:42.790>quickly <00:11:42.965>down <00:11:43.140>to <00:11:43.314>our, <00:11:43.490>uh, <00:11:43.665>consumer

282
00:11:45.935 --> 00:11:48.155
<00:11:45.935>and <00:11:46.214>create <00:11:46.494>some <00:11:46.775>issues <00:11:47.055>and <00:11:47.334>delays.

283
00:11:50.065 --> 00:11:53.165
<00:11:50.065>So <00:11:50.265>why <00:11:50.465>can't <00:11:50.665>we <00:11:50.865>scale <00:11:51.065>our <00:11:51.265>services <00:11:51.465>independently?

284
00:11:53.275 --> 00:11:55.245
<00:11:53.275>They're <00:11:53.625>still <00:11:53.975>quite <00:11:54.324>tightly <00:11:54.675>coupled.

285
00:11:55.945 --> 00:11:58.285
<00:11:55.945>So <00:11:56.225>let's <00:11:56.505>switch <00:11:56.785>to <00:11:57.065>asynchronous <00:11:57.345>communication.

286
00:12:00.835 --> 00:12:02.485
<00:12:00.835>Instead <00:12:01.115>of <00:12:01.395>waiting <00:12:01.675>for <00:12:01.955>the <00:12:02.235>response,

287
00:12:02.625 --> 00:12:04.365
<00:12:02.625>we <00:12:02.858>still <00:12:03.091>send <00:12:03.325>an <00:12:03.558>HT <00:12:03.791>DP <00:12:04.025>request,

288
00:12:04.785 --> 00:12:08.165
<00:12:04.785>but <00:12:04.940>we <00:12:05.096>only <00:12:05.251>get <00:12:05.407>an <00:12:05.562>accepted <00:12:05.718>message <00:12:05.873>basically <00:12:06.029>telling <00:12:06.185>our,

289
00:12:08.305 --> 00:12:10.485
<00:12:08.305>uh, <00:12:08.538>consumer, <00:12:08.771>Hey, <00:12:09.005>we <00:12:09.238>dealing <00:12:09.471>with <00:12:09.704>it.

290
00:12:10.545 --> 00:12:11.805
<00:12:10.545>You <00:12:10.828>get <00:12:11.112>a <00:12:11.395>response <00:12:11.679>later.

291
00:12:13.615 --> 00:12:15.515
<00:12:13.615>We <00:12:13.815>do <00:12:14.015>this <00:12:14.215>also <00:12:14.415>with <00:12:14.615>our <00:12:14.815>downstream <00:12:15.015>services.

292
00:12:16.055 --> 00:12:18.395
<00:12:16.055>The <00:12:16.255>only <00:12:16.454>exception <00:12:16.655>is <00:12:16.854>our <00:12:17.055>external <00:12:17.255>payment <00:12:17.454>provider

293
00:12:18.395 --> 00:12:21.075
<00:12:18.395>because <00:12:18.675>it <00:12:18.954>doesn't <00:12:19.235>support <00:12:19.515>asynchronous <00:12:19.795>communication.

294
00:12:21.335 --> 00:12:22.995
<00:12:21.335>We <00:12:21.568>just <00:12:21.801>send <00:12:22.035>a <00:12:22.268>synchronous <00:12:22.501>request <00:12:22.735>here.

295
00:12:25.045 --> 00:12:27.185
<00:12:25.045>So <00:12:25.219>basically <00:12:25.395>what <00:12:25.569>we're <00:12:25.745>doing, <00:12:25.920>we're <00:12:26.094>sending <00:12:26.270>a <00:12:26.444>message

296
00:12:27.405 --> 00:12:29.225
<00:12:27.405>to <00:12:27.871>our <00:12:28.338>downstream <00:12:28.805>services,

297
00:12:31.505 --> 00:12:33.795
<00:12:31.505>but <00:12:31.855>wild <00:12:32.205>rights <00:12:32.555>learned, <00:12:32.905>right?

298
00:12:33.865 --> 00:12:36.755
<00:12:33.865>Friends, <00:12:34.065>don't <00:12:34.265>let <00:12:34.465>friends <00:12:34.665>rely <00:12:34.865>on <00:12:35.065>synchronous <00:12:35.265>integration.

299
00:12:40.655 --> 00:12:42.905
<00:12:40.655>What <00:12:40.810>other <00:12:40.966>dependency <00:12:41.121>forms <00:12:41.277>are <00:12:41.432>we, <00:12:41.588>uh, <00:12:41.743>do <00:12:41.899>we <00:12:42.055>have?

300
00:12:43.085 --> 00:12:44.865
<00:12:43.085>We <00:12:43.435>also <00:12:43.785>have <00:12:44.135>availability <00:12:44.485>dependency.

301
00:12:45.565 --> 00:12:47.545
<00:12:45.565>So <00:12:45.765>my <00:12:45.965>communication <00:12:46.165>party <00:12:46.365>needs <00:12:46.565>to <00:12:46.765>be <00:12:46.965>online.

302
00:12:47.545 --> 00:12:51.145
<00:12:47.545>When <00:12:47.719>I <00:12:47.895>do <00:12:48.069>my <00:12:48.245>request <00:12:48.420>in <00:12:48.594>this <00:12:48.770>case <00:12:48.944>go.

303
00:12:51.145 --> 00:12:53.345
<00:12:51.145>Going <00:12:51.425>back <00:12:51.704>to <00:12:51.985>the <00:12:52.265>architecture, <00:12:52.545>um,

304
00:12:53.575 --> 00:12:55.185
<00:12:53.575>what <00:12:53.855>happens <00:12:54.135>if <00:12:54.415>something <00:12:54.695>goes <00:12:54.975>down,

305
00:12:55.565 --> 00:12:56.585
<00:12:55.565>we <00:12:55.794>can't <00:12:56.024>reach <00:12:56.253>the <00:12:56.483>service.

306
00:12:57.405 --> 00:13:01.055
<00:12:57.405>How <00:12:57.532>do <00:12:57.659>we <00:12:57.786>deal <00:12:57.914>with <00:12:58.041>that? <00:12:58.168>Going <00:12:58.295>back <00:12:58.423>to <00:12:58.550>a <00:12:58.677>pattern, <00:12:58.805>right?

307
00:13:01.055 --> 00:13:03.535
<00:13:01.055>Relying <00:13:01.210>on <00:13:01.366>patterns, <00:13:01.521>we <00:13:01.677>can <00:13:01.832>put <00:13:01.988>in <00:13:02.143>a <00:13:02.299>queue <00:13:02.454>here.

308
00:13:03.885 --> 00:13:07.335
<00:13:03.885>Each, <00:13:04.040>each <00:13:04.196>message <00:13:04.351>gets, <00:13:04.507>gets <00:13:04.662>consumed <00:13:04.818>by <00:13:04.973>one, <00:13:05.129>uh, <00:13:05.285>receiver.

309
00:13:07.955 --> 00:13:11.015
<00:13:07.955>We <00:13:08.130>decouple <00:13:08.305>our <00:13:08.480>messages <00:13:08.655>and <00:13:08.830>we <00:13:09.005>decouple <00:13:09.180>our <00:13:09.355>services

310
00:13:11.195 --> 00:13:13.175
<00:13:11.195>and <00:13:11.395>we <00:13:11.595>introduce <00:13:11.795>some <00:13:11.995>buffering <00:13:12.195>and <00:13:12.395>load <00:13:12.595>balancing.

311
00:13:15.035 --> 00:13:18.435
<00:13:15.035>How <00:13:15.268>do <00:13:15.501>we <00:13:15.735>introduce <00:13:15.968>this <00:13:16.201>here? <00:13:16.435>Simple.

312
00:13:18.735 --> 00:13:21.195
<00:13:18.735>The <00:13:18.875>request <00:13:19.015>that <00:13:19.155>we're <00:13:19.295>sending <00:13:19.435>out, <00:13:19.575>we <00:13:19.715>are <00:13:19.855>not <00:13:19.995>sending <00:13:20.135>them

313
00:13:21.195 --> 00:13:24.155
<00:13:21.195>to <00:13:21.350>the <00:13:21.506>services <00:13:21.661>directly <00:13:21.817>anymore, <00:13:21.972>but <00:13:22.128>we <00:13:22.283>introduce <00:13:22.439>a <00:13:22.595>queue

314
00:13:25.345 --> 00:13:26.845
<00:13:25.345>and <00:13:25.537>because <00:13:25.730>we <00:13:25.923>also <00:13:26.116>need <00:13:26.309>the <00:13:26.502>back <00:13:26.695>channel,

315
00:13:27.185 --> 00:13:29.885
<00:13:27.185>we <00:13:27.312>have <00:13:27.439>a <00:13:27.566>queue <00:13:27.694>back <00:13:27.821>to <00:13:27.948>our <00:13:28.075>right <00:13:28.203>booking <00:13:28.330>service <00:13:28.457>as <00:13:28.584>well.

316
00:13:32.445 --> 00:13:36.785
<00:13:32.445>So <00:13:32.572>some <00:13:32.699>other, <00:13:32.826>uh, <00:13:32.954>things <00:13:33.081>that <00:13:33.208>we <00:13:33.335>have <00:13:33.463>to, <00:13:33.590>uh, <00:13:33.717>think <00:13:33.845>about.

317
00:13:37.465 --> 00:13:40.265
<00:13:37.465>Location <00:13:37.745>dependency, <00:13:38.025>semantic <00:13:38.305>dependency, <00:13:38.585>IP <00:13:38.865>addresses,

318
00:13:40.425 --> 00:13:42.065
<00:13:40.425>DNS <00:13:40.775>names, <00:13:41.125>middle <00:13:41.474>names, <00:13:41.824>zip.

319
00:13:42.605 --> 00:13:43.865
<00:13:42.605>How <00:13:42.794>does <00:13:42.983>this <00:13:43.172>relate <00:13:43.361>to <00:13:43.550>our <00:13:43.739>service?

320
00:13:46.705 --> 00:13:49.685
<00:13:46.705>How <00:13:46.905>do <00:13:47.105>we <00:13:47.305>actually <00:13:47.505>add <00:13:47.705>something <00:13:47.905>new, <00:13:48.105>right?

321
00:13:49.685 --> 00:13:52.725
<00:13:49.685>Because <00:13:49.840>I <00:13:49.996>mentioned <00:13:50.151>at <00:13:50.307>the <00:13:50.462>beginning <00:13:50.618>maybe <00:13:50.773>we <00:13:50.929>maybe, <00:13:51.084>uh,

322
00:13:52.755 --> 00:13:54.165
<00:13:52.755>want <00:13:53.008>to <00:13:53.262>develop <00:13:53.516>our <00:13:53.770>service <00:13:54.024>further.

323
00:13:56.875 --> 00:13:58.445
<00:13:56.875>What <00:13:57.075>can <00:13:57.275>we <00:13:57.475>use <00:13:57.675>here <00:13:57.875>as <00:13:58.075>a <00:13:58.275>pattern?

324
00:13:58.905 --> 00:14:00.205
<00:13:58.905>The <00:13:59.295>publish <00:13:59.685>subscribe <00:14:00.075>pattern

325
00:14:00.265 --> 00:14:03.645
<00:14:00.265>or <00:14:00.392>the <00:14:00.519>fan <00:14:00.646>out <00:14:00.774>pattern <00:14:00.901>For <00:14:01.028>this, <00:14:01.155>we <00:14:01.283>use <00:14:01.410>a <00:14:01.537>topic <00:14:01.665>different

326
00:14:03.645 --> 00:14:04.965
<00:14:03.645>to <00:14:03.942>the <00:14:04.239>queue <00:14:04.536>right <00:14:04.833>here.

327
00:14:05.065 --> 00:14:06.485
<00:14:05.065>We <00:14:05.384>basically <00:14:05.704>send <00:14:06.023>out <00:14:06.343>messages

328
00:14:06.585 --> 00:14:08.685
<00:14:06.585>and <00:14:06.785>each <00:14:06.985>of <00:14:07.185>the <00:14:07.385>consumer <00:14:07.585>gets <00:14:07.785>the <00:14:07.985>message.

329
00:14:09.145 --> 00:14:10.285
<00:14:09.145>We <00:14:09.487>decouple <00:14:09.829>our <00:14:10.170>services,

330
00:14:10.425 --> 00:14:13.565
<00:14:10.425>and <00:14:10.599>this <00:14:10.775>allows <00:14:10.949>us <00:14:11.125>to <00:14:11.300>scale <00:14:11.474>the <00:14:11.650>consumers <00:14:11.824>independently.

331
00:14:15.585 --> 00:14:17.525
<00:14:15.585>So <00:14:15.818>how <00:14:16.051>do <00:14:16.285>we <00:14:16.518>apply <00:14:16.751>this <00:14:16.985>here?

332
00:14:17.945 --> 00:14:19.605
<00:14:17.945>We <00:14:18.178>have <00:14:18.411>all <00:14:18.645>our <00:14:18.878>services <00:14:19.111>attached <00:14:19.345>already,

333
00:14:20.105 --> 00:14:22.365
<00:14:20.105>but <00:14:20.232>what <00:14:20.359>happens <00:14:20.486>if <00:14:20.614>we <00:14:20.741>want <00:14:20.868>to <00:14:20.995>add <00:14:21.123>a <00:14:21.250>new <00:14:21.377>service, <00:14:21.505>right?

334
00:14:22.425 --> 00:14:25.685
<00:14:22.425>New <00:14:22.552>service <00:14:22.679>gets <00:14:22.806>in <00:14:22.934>new <00:14:23.061>queue, <00:14:23.188>new <00:14:23.315>service <00:14:23.443>on <00:14:23.570>the, <00:14:23.697>on <00:14:23.824>the,

335
00:14:25.685 --> 00:14:28.045
<00:14:25.685>on <00:14:25.918>the <00:14:26.151>back <00:14:26.385>end, <00:14:26.618>and <00:14:26.851>we <00:14:27.084>need

336
00:14:28.045 --> 00:14:29.725
<00:14:28.045>to <00:14:28.324>update <00:14:28.604>our <00:14:28.885>right <00:14:29.165>booking <00:14:29.444>service.

337
00:14:30.425 --> 00:14:33.485
<00:14:30.425>So <00:14:30.580>if <00:14:30.736>you <00:14:30.891>think <00:14:31.047>about, <00:14:31.202>I <00:14:31.358>mentioned, <00:14:31.513>uh, <00:14:31.669>coupling <00:14:31.824>decoupling,

338
00:14:34.175 --> 00:14:35.565
<00:14:34.175>we're <00:14:34.487>changing <00:14:34.800>the <00:14:35.113>service <00:14:35.426>B,

339
00:14:35.905 --> 00:14:37.885
<00:14:35.905>but <00:14:36.079>now <00:14:36.255>we <00:14:36.430>also <00:14:36.605>need <00:14:36.780>to <00:14:36.954>change <00:14:37.130>service <00:14:37.305>A.

340
00:14:37.985 --> 00:14:39.525
<00:14:37.985>So <00:14:38.262>there's <00:14:38.539>quite <00:14:38.816>some <00:14:39.093>coupling <00:14:39.371>still

341
00:14:39.545 --> 00:14:40.805
<00:14:39.545>yet, <00:14:39.771>uh, <00:14:39.998>left <00:14:40.225>in <00:14:40.452>the <00:14:40.679>system.

342
00:14:42.255 --> 00:14:44.165
<00:14:42.255>Let's <00:14:42.455>apply <00:14:42.655>the <00:14:42.855>pattern <00:14:43.055>that <00:14:43.255>I <00:14:43.455>just <00:14:43.655>mentioned.

343
00:14:44.905 --> 00:14:45.925
<00:14:44.905>We <00:14:45.211>introduce <00:14:45.516>a <00:14:45.823>topic

344
00:14:46.625 --> 00:14:49.285
<00:14:46.625>and <00:14:46.800>thus <00:14:46.975>the <00:14:47.150>right <00:14:47.325>booking <00:14:47.500>service <00:14:47.675>only <00:14:47.850>sends <00:14:48.025>messages

345
00:14:49.285 --> 00:14:50.285
<00:14:49.285>to <00:14:49.584>this <00:14:49.885>specific <00:14:50.185>topic.

346
00:14:51.245 --> 00:14:54.345
<00:14:51.245>If <00:14:51.400>we <00:14:51.556>get <00:14:51.711>a <00:14:51.867>new <00:14:52.022>service, <00:14:52.178>the <00:14:52.333>service <00:14:52.489>just <00:14:52.645>subscribes

347
00:14:54.345 --> 00:14:55.865
<00:14:54.345>to <00:14:54.573>this <00:14:54.801>topic <00:14:55.029>and <00:14:55.257>we <00:14:55.485>don't <00:14:55.713>need

348
00:14:55.865 --> 00:14:57.665
<00:14:55.865>to <00:14:56.040>do <00:14:56.215>any <00:14:56.390>changes <00:14:56.565>to <00:14:56.740>our <00:14:56.915>right <00:14:57.090>booking <00:14:57.265>service.

349
00:14:58.085 --> 00:15:00.985
<00:14:58.085>So <00:14:58.201>thus, <00:14:58.318>if <00:14:58.435>we <00:14:58.551>have <00:14:58.668>a <00:14:58.785>new <00:14:58.901>service, <00:14:59.018>we <00:14:59.135>can <00:14:59.251>just <00:14:59.368>edit <00:14:59.485>here

350
00:15:01.245 --> 00:15:03.625
<00:15:01.245>and <00:15:01.400>the <00:15:01.556>right <00:15:01.711>booking <00:15:01.867>service <00:15:02.022>doesn't <00:15:02.178>even <00:15:02.333>care <00:15:02.489>about <00:15:02.645>it.

351
00:15:06.305 --> 00:15:08.805
<00:15:06.305>So <00:15:06.479>we <00:15:06.655>won't <00:15:06.829>have <00:15:07.005>the <00:15:07.180>best <00:15:07.354>of <00:15:07.530>both <00:15:07.704>worlds.

352
00:15:08.985 --> 00:15:10.765
<00:15:08.985>We <00:15:09.265>can <00:15:09.545>also <00:15:09.825>just <00:15:10.105>combine <00:15:10.385>patterns

353
00:15:10.905 --> 00:15:12.165
<00:15:10.905>and <00:15:11.093>give <00:15:11.283>it <00:15:11.472>a <00:15:11.661>new <00:15:11.849>name, <00:15:12.039>obviously,

354
00:15:12.275 --> 00:15:13.445
<00:15:12.275>just <00:15:12.538>to <00:15:12.801>not <00:15:13.064>confuse <00:15:13.328>things.

355
00:15:14.315 --> 00:15:15.965
<00:15:14.315>This <00:15:14.595>is <00:15:14.875>called <00:15:15.155>topic <00:15:15.435>queue <00:15:15.715>training.

356
00:15:16.385 --> 00:15:19.365
<00:15:16.385>So <00:15:16.525>we <00:15:16.665>have <00:15:16.805>a <00:15:16.944>topic <00:15:17.085>sending <00:15:17.225>the <00:15:17.365>messages, <00:15:17.505>spreading <00:15:17.645>it <00:15:17.785>out

357
00:15:19.365 --> 00:15:22.405
<00:15:19.365>to <00:15:19.565>different <00:15:19.765>consumers <00:15:19.965>and <00:15:20.165>the <00:15:20.365>queues, <00:15:20.565>consuming <00:15:20.765>them

358
00:15:22.465 --> 00:15:25.565
<00:15:22.465>and <00:15:22.640>actually <00:15:22.815>buffering <00:15:22.990>and <00:15:23.165>load <00:15:23.340>balancing <00:15:23.515>to <00:15:23.690>our <00:15:23.865>consumers.

359
00:15:26.515 --> 00:15:27.725
<00:15:26.515>Important <00:15:26.878>to <00:15:27.241>note <00:15:27.604>here.

360
00:15:28.075 --> 00:15:30.805
<00:15:28.075>What <00:15:28.275>is <00:15:28.475>the <00:15:28.675>responsibility <00:15:28.875>of <00:15:29.075>the <00:15:29.275>different <00:15:29.475>components?

361
00:15:31.595 --> 00:15:33.575
<00:15:31.595>The <00:15:31.875>topic <00:15:32.155>belongs <00:15:32.435>to <00:15:32.715>the <00:15:32.995>producer.

362
00:15:34.355 --> 00:15:36.815
<00:15:34.355>So <00:15:34.530>the <00:15:34.705>right <00:15:34.880>booking <00:15:35.055>service <00:15:35.230>in <00:15:35.405>our <00:15:35.580>example <00:15:35.755>is

363
00:15:36.815 --> 00:15:38.255
<00:15:36.815>responsible <00:15:37.139>for <00:15:37.463>managing <00:15:37.787>the <00:15:38.111>topic.

364
00:15:38.955 --> 00:15:41.055
<00:15:38.955>The <00:15:39.188>queue, <00:15:39.421>however, <00:15:39.655>belongs <00:15:39.888>to <00:15:40.121>the <00:15:40.355>consumer.

365
00:15:41.125 --> 00:15:43.055
<00:15:41.125>This <00:15:41.358>is <00:15:41.591>something <00:15:41.825>that <00:15:42.058>the <00:15:42.291>consumer <00:15:42.525>decides

366
00:15:43.075 --> 00:15:44.495
<00:15:43.075>how <00:15:43.288>it <00:15:43.501>wants <00:15:43.714>to <00:15:43.927>receive <00:15:44.140>the <00:15:44.353>messages.

367
00:15:45.045 --> 00:15:46.335
<00:15:45.045>It's <00:15:45.238>a <00:15:45.432>question <00:15:45.625>that <00:15:45.819>I <00:15:46.012>quite, <00:15:46.206>uh,

368
00:15:46.335 --> 00:15:47.535
<00:15:46.335>often <00:15:46.551>get <00:15:46.767>asked <00:15:46.983>when <00:15:47.199>I <00:15:47.415>talk

369
00:15:47.775 --> 00:15:49.895
<00:15:47.775>with <00:15:48.055>customers <00:15:48.334>about <00:15:48.615>decoupling <00:15:48.895>architectures <00:15:49.175>event-driven

370
00:15:49.895 --> 00:15:53.375
<00:15:49.895>architectures, <00:15:50.069>and <00:15:50.245>doing <00:15:50.420>this <00:15:50.595>all <00:15:50.770>in <00:15:50.944>infrastructure <00:15:51.120>as <00:15:51.295>code.

371
00:15:53.375 --> 00:15:56.095
<00:15:53.375>Like <00:15:53.515>where <00:15:53.655>do <00:15:53.795>we <00:15:53.935>put <00:15:54.075>what? <00:15:54.215>That's <00:15:54.355>a <00:15:54.495>good <00:15:54.635>starting <00:15:54.775>point.

372
00:15:56.395 --> 00:15:58.175
<00:15:56.395>Who <00:15:56.675>is <00:15:56.954>responsible <00:15:57.235>for <00:15:57.515>what <00:15:57.795>topic

373
00:15:58.315 --> 00:16:00.175
<00:15:58.315>to <00:15:58.595>producer, <00:15:58.875>queue <00:15:59.155>to <00:15:59.435>the <00:15:59.715>consumer.

374
00:16:02.595 --> 00:16:04.775
<00:16:02.595>So <00:16:02.828>putting <00:16:03.061>everything <00:16:03.295>together <00:16:03.528>in <00:16:03.761>our <00:16:03.995>right

375
00:16:04.775 --> 00:16:06.135
<00:16:04.775>booking <00:16:05.387>platform, <00:16:05.999>right?

376
00:16:06.135 --> 00:16:09.415
<00:16:06.135>Booking <00:16:06.310>service <00:16:06.485>sends <00:16:06.660>to <00:16:06.835>topic <00:16:07.010>consumption <00:16:07.185>on <00:16:07.360>the <00:16:07.535>queue

377
00:16:09.475 --> 00:16:12.095
<00:16:09.475>to <00:16:09.650>our <00:16:09.825>downstream <00:16:10.000>services, <00:16:10.175>payment <00:16:10.350>services <00:16:10.525>and <00:16:10.700>so <00:16:10.875>on.

378
00:16:14.855 --> 00:16:17.275
<00:16:14.855>So <00:16:15.055>I <00:16:15.255>already <00:16:15.455>talked <00:16:15.655>a <00:16:15.855>bit <00:16:16.055>about <00:16:16.255>failure,

379
00:16:17.935 --> 00:16:20.395
<00:16:17.935>but <00:16:18.168>the <00:16:18.401>next <00:16:18.635>principle <00:16:18.868>is <00:16:19.101>managing <00:16:19.334>failure.

380
00:16:20.465 --> 00:16:22.635
<00:16:20.465>Something <00:16:20.745>that <00:16:21.025>quite <00:16:21.305>often <00:16:21.585>gets <00:16:21.865>neglected,

381
00:16:23.015 --> 00:16:25.075
<00:16:23.015>but <00:16:23.215>how <00:16:23.415>do <00:16:23.615>we <00:16:23.814>make <00:16:24.015>sure <00:16:24.215>that, <00:16:24.415>uh,

382
00:16:25.345 --> 00:16:26.915
<00:16:25.345>that <00:16:25.578>we <00:16:25.811>actually <00:16:26.045>deal <00:16:26.278>with <00:16:26.511>that <00:16:26.745>properly?

383
00:16:27.365 --> 00:16:28.715
<00:16:27.365>There <00:16:27.668>are <00:16:27.972>many <00:16:28.276>options, <00:16:28.580>right?

384
00:16:28.975 --> 00:16:32.355
<00:16:28.975>You <00:16:29.091>can <00:16:29.208>buy <00:16:29.325>a <00:16:29.441>phone, <00:16:29.558>you <00:16:29.675>pass <00:16:29.791>it <00:16:29.908>around <00:16:30.025>to <00:16:30.141>team, <00:16:30.258>and <00:16:30.375>when,

385
00:16:32.675 --> 00:16:34.275
<00:16:32.675>whenever <00:16:32.954>the <00:16:33.234>phone <00:16:33.515>rings, <00:16:33.795>the <00:16:34.074>person

386
00:16:34.275 --> 00:16:35.915
<00:16:34.275>that <00:16:34.449>picks <00:16:34.625>it <00:16:34.800>up <00:16:34.975>needs <00:16:35.150>to <00:16:35.324>deal <00:16:35.500>with <00:16:35.675>it.

387
00:16:36.795 --> 00:16:38.845
<00:16:36.795>It's <00:16:37.074>also <00:16:37.354>called <00:16:37.635>on-call <00:16:37.915>duty, <00:16:38.194>right?

388
00:16:38.985 --> 00:16:40.165
<00:16:38.985>Uh, <00:16:39.162>maybe <00:16:39.339>some <00:16:39.516>of <00:16:39.693>you <00:16:39.870>know <00:16:40.047>that,

389
00:16:40.745 --> 00:16:44.845
<00:16:40.745>but <00:16:40.861>um, <00:16:40.978>what <00:16:41.095>we <00:16:41.211>want <00:16:41.328>to <00:16:41.445>do, <00:16:41.561>we <00:16:41.678>want <00:16:41.795>to <00:16:41.911>have <00:16:42.028>fine <00:16:42.145>mechanisms

390
00:16:44.945 --> 00:16:47.085
<00:16:44.945>to <00:16:45.120>make <00:16:45.295>sure <00:16:45.470>the <00:16:45.645>phone <00:16:45.820>doesn't <00:16:45.995>ring <00:16:46.170>that <00:16:46.345>often.

391
00:16:49.665 --> 00:16:52.245
<00:16:49.665>And <00:16:49.820>if <00:16:49.976>you <00:16:50.131>think <00:16:50.287>about, <00:16:50.442>uh, <00:16:50.598>our <00:16:50.753>CTO <00:16:50.909>from <00:16:51.064>Amazon,

392
00:16:52.655 --> 00:16:54.085
<00:16:52.655>everything <00:16:52.976>fails <00:16:53.298>all <00:16:53.620>the <00:16:53.942>time.

393
00:16:54.185 --> 00:16:55.245
<00:16:54.185>You <00:16:54.375>might <00:16:54.566>have <00:16:54.757>seen <00:16:54.948>that <00:16:55.139>quote

394
00:16:55.465 --> 00:16:57.405
<00:16:55.465>and <00:16:55.640>uh, <00:16:55.815>yeah, <00:16:55.990>to <00:16:56.165>be <00:16:56.340>honest, <00:16:56.515>it's <00:16:56.690>actually <00:16:56.865>true.

395
00:16:58.745 --> 00:17:01.165
<00:16:58.745>So <00:16:58.920>let's <00:16:59.095>take <00:16:59.270>a <00:16:59.445>look <00:16:59.620>at <00:16:59.795>some <00:16:59.970>prominent <00:17:00.145>things

396
00:17:01.165 --> 00:17:03.405
<00:17:01.165>that <00:17:01.339>fail <00:17:01.515>often <00:17:01.689>or <00:17:01.865>that <00:17:02.040>cause <00:17:02.214>systems <00:17:02.390>to <00:17:02.564>fail.

397
00:17:03.985 --> 00:17:05.725
<00:17:03.985>And <00:17:04.185>one <00:17:04.385>thing <00:17:04.585>that <00:17:04.785>quite <00:17:04.984>often <00:17:05.185>causes <00:17:05.385>things

398
00:17:05.725 --> 00:17:07.485
<00:17:05.724>to <00:17:06.074>fail <00:17:06.425>is <00:17:06.774>retrial <00:17:07.125>logic.

399
00:17:08.345 --> 00:17:10.485
<00:17:08.345>So <00:17:08.625>what <00:17:08.905>can <00:17:09.185>cause <00:17:09.464>a <00:17:09.745>retrial?

400
00:17:11.165 --> 00:17:13.025
<00:17:11.165>Poison <00:17:11.631>pills, <00:17:12.098>transient <00:17:12.565>failures.

401
00:17:13.035 --> 00:17:14.505
<00:17:13.035>There <00:17:13.299>are <00:17:13.564>obviously <00:17:13.828>many <00:17:14.093>things <00:17:14.358>more,

402
00:17:14.645 --> 00:17:16.145
<00:17:14.645>but <00:17:14.869>let's <00:17:15.095>focus <00:17:15.319>on <00:17:15.545>these <00:17:15.770>things <00:17:15.994>first.

403
00:17:18.235 --> 00:17:19.385
<00:17:18.234>Let's <00:17:18.493>do <00:17:18.752>an <00:17:19.011>example <00:17:19.270>here.

404
00:17:20.445 --> 00:17:22.745
<00:17:20.444>We <00:17:20.619>have <00:17:20.794>a <00:17:20.970>producer <00:17:21.145>sending <00:17:21.319>messages <00:17:21.494>to <00:17:21.669>a <00:17:21.845>queue.

405
00:17:23.205 --> 00:17:25.025
<00:17:23.204>We <00:17:23.345>don't <00:17:23.484>have <00:17:23.625>a <00:17:23.764>topic <00:17:23.905>here, <00:17:24.044>but <00:17:24.185>that's <00:17:24.324>fine <00:17:24.464>for <00:17:24.605>now.

406
00:17:25.025 --> 00:17:28.145
<00:17:25.025>For <00:17:25.200>the <00:17:25.375>example, <00:17:25.550>we <00:17:25.725>have <00:17:25.900>a <00:17:26.075>consumer <00:17:26.250>consuming <00:17:26.425>it,

407
00:17:28.565 --> 00:17:30.025
<00:17:28.565>but <00:17:28.784>there's <00:17:29.003>an <00:17:29.222>exception <00:17:29.441>with <00:17:29.660>the <00:17:29.879>message.

408
00:17:30.265 --> 00:17:32.625
<00:17:30.265>C. <00:17:31.665>Okay?

409
00:17:32.695 --> 00:17:35.025
<00:17:32.695>Gets <00:17:32.895>added <00:17:33.095>back <00:17:33.294>to <00:17:33.495>the <00:17:33.695>queue, <00:17:33.895>gets <00:17:34.095>reprocessed,

410
00:17:36.185 --> 00:17:37.225
<00:17:36.185>repeatedly <00:17:37.120>exception.

411
00:17:37.605 --> 00:17:41.845
<00:17:37.605>How <00:17:37.732>do <00:17:37.859>we <00:17:37.986>deal <00:17:38.114>with <00:17:38.241>that? <00:17:38.368>Either <00:17:38.495>it <00:17:38.623>could <00:17:38.750>be <00:17:38.877>a <00:17:39.005>transient

412
00:17:41.845 --> 00:17:42.885
<00:17:41.845>failure <00:17:42.157>on <00:17:42.469>our <00:17:42.781>consumer.

413
00:17:43.105 --> 00:17:44.325
<00:17:43.105>So <00:17:43.471>something <00:17:43.837>is <00:17:44.203>wrong

414
00:17:44.325 --> 00:17:46.325
<00:17:44.325>with <00:17:44.558>the <00:17:44.791>consumer, <00:17:45.025>it's <00:17:45.258>maybe <00:17:45.491>not <00:17:45.725>available.

415
00:17:46.475 --> 00:17:47.645
<00:17:46.475>There's <00:17:46.826>an <00:17:47.177>issue, <00:17:47.528>right?

416
00:17:47.645 --> 00:17:48.805
<00:17:47.645>Something <00:17:47.993>is <00:17:48.341>just <00:17:48.689>wrong

417
00:17:49.465 --> 00:17:51.445
<00:17:49.465>or <00:17:49.639>it <00:17:49.814>actually <00:17:49.990>is <00:17:50.165>something <00:17:50.340>wrong <00:17:50.514>with <00:17:50.689>the <00:17:50.865>message.

418
00:17:51.505 --> 00:17:53.765
<00:17:51.505>So <00:17:51.680>it <00:17:51.855>is <00:17:52.030>a <00:17:52.205>poison <00:17:52.380>pill, <00:17:52.555>it's <00:17:52.730>male <00:17:52.905>formatted.

419
00:17:53.765 --> 00:17:55.045
<00:17:53.765>There's <00:17:53.995>maybe <00:17:54.225>an <00:17:54.456>attribute <00:17:54.686>in <00:17:54.917>there

420
00:17:55.045 --> 00:17:55.805
<00:17:55.045>that <00:17:55.273>doesn't <00:17:55.501>belong <00:17:55.729>there,

421
00:17:56.115 --> 00:17:57.405
<00:17:56.115>just <00:17:56.347>something <00:17:56.579>wrong <00:17:56.811>with <00:17:57.043>the <00:17:57.276>message.

422
00:17:59.425 --> 00:18:02.845
<00:17:59.425>How <00:17:59.541>can <00:17:59.658>we <00:17:59.774>deal <00:17:59.891>with <00:18:00.008>that? <00:18:00.125>We <00:18:00.241>can <00:18:00.358>tell <00:18:00.475>our <00:18:00.591>queue <00:18:00.708>to <00:18:00.825>send,

423
00:18:03.145 --> 00:18:05.565
<00:18:03.145>uh, <00:18:03.425>messages <00:18:03.705>that <00:18:03.985>get <00:18:04.264>processed <00:18:04.545>repeatedly

424
00:18:05.865 --> 00:18:07.165
<00:18:05.865>to <00:18:06.157>a <00:18:06.450>dead <00:18:06.742>letter <00:18:07.034>queue.

425
00:18:09.735 --> 00:18:11.955
<00:18:09.735>The <00:18:09.890>dead <00:18:10.046>letter <00:18:10.201>queue <00:18:10.357>at <00:18:10.512>a <00:18:10.668>later <00:18:10.823>stage <00:18:10.979>can <00:18:11.135>be

426
00:18:11.955 --> 00:18:12.995
<00:18:11.955>used <00:18:12.266>for <00:18:12.579>debugging, <00:18:12.890>right?

427
00:18:13.475 --> 00:18:15.915
<00:18:13.475>Retrieve <00:18:13.615>the <00:18:13.754>messages. <00:18:13.895>Again, <00:18:14.034>take <00:18:14.175>a <00:18:14.314>look <00:18:14.455>at <00:18:14.594>what <00:18:14.735>is <00:18:14.875>wrong.

428
00:18:16.105 --> 00:18:17.595
<00:18:16.105>This <00:18:16.440>can <00:18:16.775>cover <00:18:17.110>both <00:18:17.446>failures.

429
00:18:17.615 --> 00:18:20.915
<00:18:17.615>So <00:18:17.742>if <00:18:17.869>the <00:18:17.996>consumer <00:18:18.124>goes <00:18:18.251>down, <00:18:18.378>send <00:18:18.505>the <00:18:18.633>messages <00:18:18.760>to <00:18:18.887>the <00:18:19.015>dq,

430
00:18:21.555 --> 00:18:23.515
<00:18:21.555>consumer <00:18:21.788>gets <00:18:22.021>back <00:18:22.255>up, <00:18:22.488>reprocess <00:18:22.721>the <00:18:22.955>message.

431
00:18:23.905 --> 00:18:26.475
<00:18:23.905>Same <00:18:24.060>thing. <00:18:24.216>If <00:18:24.371>there's <00:18:24.527>an <00:18:24.682>issue <00:18:24.838>with <00:18:24.993>the <00:18:25.149>message, <00:18:25.305>malted

432
00:18:26.475 --> 00:18:29.115
<00:18:26.475>for <00:18:26.708>whatever <00:18:26.941>reason, <00:18:27.175>can <00:18:27.408>also <00:18:27.641>be, <00:18:27.875>uh,

433
00:18:29.305 --> 00:18:31.755
<00:18:29.305>reformatted <00:18:29.480>the <00:18:29.655>message, <00:18:29.830>put <00:18:30.005>it <00:18:30.180>back <00:18:30.355>into <00:18:30.530>the <00:18:30.705>system

434
00:18:31.775 --> 00:18:34.515
<00:18:31.775>and <00:18:32.055>reprocess <00:18:32.335>it, <00:18:32.615>reprocess <00:18:32.895>it <00:18:33.175>again.

435
00:18:37.495 --> 00:18:39.705
<00:18:37.495>Alright, <00:18:37.844>another <00:18:38.195>point <00:18:38.544>for <00:18:38.895>failure

436
00:18:40.085 --> 00:18:42.825
<00:18:40.085>and <00:18:40.318>quite <00:18:40.551>a <00:18:40.785>often <00:18:41.018>discussed <00:18:41.251>topic, <00:18:41.485>deduplication,

437
00:18:43.325 --> 00:18:46.385
<00:18:43.325>or <00:18:43.465>the <00:18:43.605>whole <00:18:43.745>discussion <00:18:43.885>about <00:18:44.025>how <00:18:44.165>often <00:18:44.305>do <00:18:44.445>I <00:18:44.585>actually <00:18:44.725>want

438
00:18:46.385 --> 00:18:47.385
<00:18:46.385>to <00:18:46.685>process <00:18:46.985>my <00:18:47.285>message?

439
00:18:51.595 --> 00:18:53.415
<00:18:51.595>So <00:18:51.828>as <00:18:52.061>I <00:18:52.295>mentioned, <00:18:52.528>right, <00:18:52.761>there's <00:18:52.995>something

440
00:18:53.415 --> 00:18:55.135
<00:18:53.415>that <00:18:53.764>gets <00:18:54.115>quite <00:18:54.465>frequently <00:18:54.815>requested,

441
00:18:55.135 --> 00:18:57.055
<00:18:55.135>especially <00:18:55.335>when <00:18:55.535>you <00:18:55.735>start <00:18:55.935>the <00:18:56.135>whole <00:18:56.335>discussion <00:18:56.535>about

442
00:18:57.305 --> 00:18:59.775
<00:18:57.305>decoupling <00:18:57.655>systems <00:18:58.005>and <00:18:58.355>asynchronous <00:18:58.705>communication.

443
00:19:00.525 --> 00:19:02.095
<00:19:00.525>Yeah, <00:19:00.725>all <00:19:00.925>fine. <00:19:01.125>I <00:19:01.325>want <00:19:01.525>to <00:19:01.725>do <00:19:01.925>that,

444
00:19:02.115 --> 00:19:03.175
<00:19:02.115>but <00:19:02.433>I <00:19:02.751>only <00:19:03.069>want

445
00:19:03.175 --> 00:19:05.575
<00:19:03.175>to <00:19:03.350>process <00:19:03.524>my <00:19:03.700>message <00:19:03.875>exactly <00:19:04.050>once <00:19:04.225>because <00:19:04.399>else, <00:19:04.575>right?

446
00:19:05.575 --> 00:19:06.855
<00:19:05.575>It, <00:19:05.703>I, <00:19:05.831>I <00:19:05.959>don't <00:19:06.087>know <00:19:06.215>what <00:19:06.343>to <00:19:06.471>do <00:19:06.599>with <00:19:06.727>that.

447
00:19:08.495 --> 00:19:11.235
<00:19:08.495>So <00:19:08.650>what <00:19:08.806>do <00:19:08.961>we <00:19:09.117>need <00:19:09.272>to <00:19:09.428>do <00:19:09.583>if <00:19:09.739>we <00:19:09.895>want

448
00:19:11.235 --> 00:19:12.675
<00:19:11.235>to <00:19:11.667>do <00:19:12.099>proper <00:19:12.531>deduplication?

449
00:19:13.145 --> 00:19:15.275
<00:19:13.145>Obviously <00:19:13.345>we <00:19:13.545>can <00:19:13.745>have <00:19:13.945>a <00:19:14.145>fee <00:19:14.345>four <00:19:14.545>queue.

450
00:19:15.415 --> 00:19:17.955
<00:19:15.415>So <00:19:15.555>first, <00:19:15.695>in <00:19:15.835>first <00:19:15.975>out <00:19:16.115>queue, <00:19:16.254>we <00:19:16.395>have <00:19:16.534>a <00:19:16.675>proper <00:19:16.815>ordering

451
00:19:17.955 --> 00:19:19.755
<00:19:17.955>of <00:19:18.188>our <00:19:18.421>messages, <00:19:18.655>but <00:19:18.888>there <00:19:19.121>are <00:19:19.355>a

452
00:19:19.755 --> 00:19:20.795
<00:19:19.755>few <00:19:19.989>other <00:19:20.223>things <00:19:20.457>to <00:19:20.691>consider.

453
00:19:21.775 --> 00:19:22.955
<00:19:21.775>Our <00:19:22.129>producer, <00:19:22.483>for <00:19:22.837>example,

454
00:19:23.565 --> 00:19:25.995
<00:19:23.565>could <00:19:23.798>also <00:19:24.031>produce <00:19:24.265>the <00:19:24.498>same <00:19:24.731>message <00:19:24.965>twice,

455
00:19:26.225 --> 00:19:27.675
<00:19:26.225>send <00:19:26.485>the <00:19:26.746>same <00:19:27.008>request <00:19:27.269>twice <00:19:27.530>due

456
00:19:27.675 --> 00:19:29.555
<00:19:27.675>to <00:19:27.908>network <00:19:28.141>issue <00:19:28.375>for <00:19:28.608>whatever <00:19:28.841>reason, <00:19:29.075>right?

457
00:19:29.555 --> 00:19:32.715
<00:19:29.555>Sending <00:19:29.710>it <00:19:29.866>twice. <00:19:30.021>We <00:19:30.177>can <00:19:30.332>use <00:19:30.488>a <00:19:30.643>message <00:19:30.799>deduplication <00:19:30.955>ID

458
00:19:32.715 --> 00:19:33.915
<00:19:32.715>that <00:19:33.074>covers <00:19:33.435>that <00:19:33.795>so

459
00:19:33.915 --> 00:19:36.435
<00:19:33.915>that <00:19:34.070>we <00:19:34.226>make <00:19:34.381>sure <00:19:34.537>if <00:19:34.692>we <00:19:34.848>resubmit <00:19:35.003>the <00:19:35.159>same <00:19:35.315>message,

460
00:19:36.975 --> 00:19:39.155
<00:19:36.975>it <00:19:37.130>doesn't <00:19:37.286>get <00:19:37.441>added <00:19:37.597>to <00:19:37.752>the <00:19:37.908>queue <00:19:38.063>a <00:19:38.219>second <00:19:38.375>time.

461
00:19:39.625 --> 00:19:41.715
<00:19:39.625>However, <00:19:39.975>this <00:19:40.325>is <00:19:40.675>only <00:19:41.025>something

462
00:19:41.715 --> 00:19:43.675
<00:19:41.715>that <00:19:41.889>is <00:19:42.064>done <00:19:42.240>over <00:19:42.415>a <00:19:42.590>five <00:19:42.764>minute <00:19:42.939>interval, <00:19:43.115>right?

463
00:19:43.675 --> 00:19:45.755
<00:19:43.675>If <00:19:43.850>you <00:19:44.024>send <00:19:44.200>the <00:19:44.375>same <00:19:44.550>thing <00:19:44.725>five <00:19:44.899>minutes <00:19:45.075>later

464
00:19:45.885 --> 00:19:48.675
<00:19:45.885>after <00:19:46.085>the <00:19:46.285>interval, <00:19:46.485>a <00:19:46.685>message <00:19:46.885>gets <00:19:47.085>added <00:19:47.285>again,

465
00:19:49.675 --> 00:19:51.975
<00:19:49.675>for <00:19:49.850>the <00:19:50.024>consumption <00:19:50.200>site <00:19:50.375>can <00:19:50.550>have <00:19:50.725>the <00:19:50.899>same <00:19:51.075>thing,

466
00:19:52.475 --> 00:19:53.495
<00:19:52.475>you <00:19:52.781>receive <00:19:53.087>the <00:19:53.392>message,

467
00:19:53.755 --> 00:19:54.775
<00:19:53.755>but <00:19:53.984>due <00:19:54.214>to <00:19:54.443>an <00:19:54.673>issue

468
00:19:54.775 --> 00:19:57.215
<00:19:54.775>with <00:19:54.975>your <00:19:55.175>SDK <00:19:55.375>network <00:19:55.575>outage <00:19:55.775>something <00:19:55.975>you <00:19:56.175>send

469
00:19:57.215 --> 00:19:58.375
<00:19:57.215>the <00:19:57.562>same <00:19:57.911>request <00:19:58.259>twice.

470
00:19:58.835 --> 00:20:03.615
<00:19:58.835>And <00:19:58.951>we <00:19:59.068>can <00:19:59.185>use <00:19:59.301>the <00:19:59.418>receive <00:19:59.535>request <00:19:59.651>attempt <00:19:59.768>ID <00:19:59.885>in <00:20:00.001>SQS <00:20:00.118>to, <00:20:00.235>uh,

471
00:20:03.805 --> 00:20:05.895
<00:20:03.805>make <00:20:03.980>sure <00:20:04.155>that <00:20:04.330>we <00:20:04.505>don't <00:20:04.680>have <00:20:04.855>the <00:20:05.030>message <00:20:05.205>as,

472
00:20:05.915 --> 00:20:07.215
<00:20:05.915>or <00:20:06.110>don't <00:20:06.304>send <00:20:06.500>the <00:20:06.695>same <00:20:06.889>request <00:20:07.085>a

473
00:20:07.215 --> 00:20:08.375
<00:20:07.215>second <00:20:07.423>time, <00:20:07.632>get <00:20:07.841>a <00:20:08.050>new <00:20:08.259>message.

474
00:20:08.955 --> 00:20:10.055
<00:20:08.955>But <00:20:09.202>this <00:20:09.450>is <00:20:09.697>also <00:20:09.945>something

475
00:20:10.055 --> 00:20:12.015
<00:20:10.055>that <00:20:10.288>is <00:20:10.521>only <00:20:10.755>possible <00:20:10.988>within <00:20:11.221>the <00:20:11.455>message

476
00:20:12.025 --> 00:20:13.295
<00:20:12.025>visibility, <00:20:13.168>timeout.

477
00:20:14.235 --> 00:20:16.455
<00:20:14.235>So <00:20:14.375>what <00:20:14.514>does <00:20:14.655>it <00:20:14.794>mean? <00:20:14.935>What <00:20:15.074>do <00:20:15.215>we <00:20:15.354>learn <00:20:15.495>from <00:20:15.635>that?

478
00:20:17.195 --> 00:20:20.375
<00:20:17.195>DE <00:20:17.370>application <00:20:17.544>is <00:20:17.720>always <00:20:17.895>relative <00:20:18.070>to <00:20:18.245>a <00:20:18.419>defined <00:20:18.595>scope.

479
00:20:20.955 --> 00:20:24.115
<00:20:20.955>If <00:20:21.082>you <00:20:21.209>want <00:20:21.336>to <00:20:21.464>say, <00:20:21.591>Hey, <00:20:21.718>my <00:20:21.845>scope <00:20:21.973>is <00:20:22.100>the <00:20:22.227>whole <00:20:22.355>timeframe,

480
00:20:24.135 --> 00:20:27.755
<00:20:24.135>the <00:20:24.310>whole <00:20:24.485>system, <00:20:24.660>everything <00:20:24.835>only <00:20:25.010>once, <00:20:25.185>in <00:20:25.360>worst <00:20:25.535>case,

481
00:20:27.755 --> 00:20:30.435
<00:20:27.755>this <00:20:27.955>can <00:20:28.155>quite <00:20:28.355>drastically <00:20:28.555>cripple <00:20:28.755>your <00:20:28.955>application, <00:20:29.155>right?

482
00:20:30.615 --> 00:20:31.915
<00:20:30.615>If <00:20:30.782>you <00:20:30.949>want <00:20:31.116>to <00:20:31.283>have <00:20:31.450>this <00:20:31.617>only <00:20:31.784>once.

483
00:20:32.855 --> 00:20:35.155
<00:20:32.855>So <00:20:32.995>trade <00:20:33.135>off, <00:20:33.275>make <00:20:33.415>sure <00:20:33.555>that <00:20:33.695>you <00:20:33.835>are <00:20:33.975>aware <00:20:34.115>of <00:20:34.255>that

484
00:20:35.295 --> 00:20:36.795
<00:20:35.295>and <00:20:35.487>think <00:20:35.680>about <00:20:35.873>how <00:20:36.066>you <00:20:36.259>wanna <00:20:36.452>do <00:20:36.645>this.

485
00:20:38.575 --> 00:20:42.435
<00:20:38.575>So <00:20:38.715>to <00:20:38.855>give <00:20:38.995>you <00:20:39.135>an <00:20:39.275>example <00:20:39.415>of <00:20:39.555>what <00:20:39.695>could <00:20:39.835>happen, <00:20:39.975>again,

486
00:20:42.655 --> 00:20:44.475
<00:20:42.655>we <00:20:42.810>have <00:20:42.966>a <00:20:43.121>sender, <00:20:43.277>we <00:20:43.432>have <00:20:43.588>a <00:20:43.743>fee <00:20:43.899>for <00:20:44.055>queue.

487
00:20:44.935 --> 00:20:47.075
<00:20:44.935>It <00:20:45.135>gets <00:20:45.335>put, <00:20:45.534>uh, <00:20:45.735>pushed <00:20:45.935>onto <00:20:46.135>our <00:20:46.335>consumers.

488
00:20:47.585 --> 00:20:49.685
<00:20:47.585>One <00:20:47.725>of <00:20:47.865>the <00:20:48.005>consumer <00:20:48.145>is <00:20:48.285>the <00:20:48.425>lucky <00:20:48.565>one, <00:20:48.705>gets <00:20:48.845>the <00:20:48.985>message,

489
00:20:51.065 --> 00:20:52.445
<00:20:51.065>has <00:20:51.375>some <00:20:51.686>more <00:20:51.996>downstream <00:20:52.307>services.

490
00:20:52.935 --> 00:20:54.165
<00:20:52.935>First <00:20:53.211>thing <00:20:53.488>is <00:20:53.765>a <00:20:54.042>database.

491
00:20:55.255 --> 00:20:57.685
<00:20:55.255>Great, <00:20:55.605>everything <00:20:55.955>works <00:20:56.305>process <00:20:56.655>properly.

492
00:20:58.825 --> 00:21:02.865
<00:20:58.825>Second <00:20:59.025>service, <00:20:59.225>not <00:20:59.425>so <00:20:59.625>much. <00:20:59.825>Something <00:21:00.025>is <00:21:00.225>wrong.

493
00:21:02.865 --> 00:21:04.465
<00:21:02.865>There's <00:21:03.065>an <00:21:03.265>exception <00:21:03.465>in <00:21:03.665>our, <00:21:03.865>in <00:21:04.065>our <00:21:04.265>message

494
00:21:05.365 --> 00:21:07.105
<00:21:05.365>and <00:21:05.565>not <00:21:05.765>in <00:21:05.965>our <00:21:06.165>message, <00:21:06.365>in <00:21:06.565>our <00:21:06.765>processing.

495
00:21:07.765 --> 00:21:09.745
<00:21:07.765>So <00:21:07.998>what <00:21:08.231>do <00:21:08.465>we <00:21:08.698>wanna <00:21:08.931>do <00:21:09.165>now?

496
00:21:10.125 --> 00:21:11.505
<00:21:10.125>Do <00:21:10.332>we <00:21:10.539>want <00:21:10.746>to <00:21:10.953>revert <00:21:11.160>things <00:21:11.367>back?

497
00:21:11.605 --> 00:21:12.905
<00:21:11.605>Remove <00:21:11.897>this <00:21:12.190>from <00:21:12.482>the <00:21:12.775>database.

498
00:21:12.965 --> 00:21:14.305
<00:21:12.965>Do <00:21:13.115>we <00:21:13.266>want <00:21:13.417>to <00:21:13.568>add <00:21:13.718>this <00:21:13.869>to <00:21:14.020>the <00:21:14.171>queue?

499
00:21:14.305 --> 00:21:15.625
<00:21:14.305>Again, <00:21:14.602>is <00:21:14.899>it <00:21:15.196>even <00:21:15.493>possible?

500
00:21:15.685 --> 00:21:16.905
<00:21:15.685>Is <00:21:15.868>the <00:21:16.051>message <00:21:16.234>still <00:21:16.417>in <00:21:16.600>the <00:21:16.783>queue?

501
00:21:17.725 --> 00:21:19.665
<00:21:17.725>So <00:21:17.880>the <00:21:18.036>thing <00:21:18.191>is, <00:21:18.347>you <00:21:18.502>have <00:21:18.658>to <00:21:18.813>think <00:21:18.969>about <00:21:19.125>how

502
00:21:19.665 --> 00:21:20.905
<00:21:19.665>to <00:21:19.944>properly <00:21:20.223>manage <00:21:20.502>that, <00:21:20.781>right?

503
00:21:21.325 --> 00:21:24.265
<00:21:21.325>And <00:21:21.525>that's <00:21:21.725>the <00:21:21.925>thing <00:21:22.125>with, <00:21:22.325>uh, <00:21:22.525>with <00:21:22.725>deduplication,

504
00:21:25.205 --> 00:21:28.545
<00:21:25.205>if <00:21:25.405>you <00:21:25.605>require <00:21:25.804>exactly <00:21:26.004>one <00:21:26.205>processing <00:21:26.405>or <00:21:26.605>delivery

505
00:21:28.645 --> 00:21:31.145
<00:21:28.645>or <00:21:28.878>processing, <00:21:29.111>you <00:21:29.345>should <00:21:29.578>think <00:21:29.811>about <00:21:30.045>how

506
00:21:31.145 --> 00:21:32.305
<00:21:31.145>to <00:21:31.493>handle <00:21:31.841>failure, <00:21:32.189>right?

507
00:21:32.455 --> 00:21:33.785
<00:21:32.455>It's <00:21:32.604>a <00:21:32.754>trade <00:21:32.903>off <00:21:33.053>you <00:21:33.203>have <00:21:33.352>to <00:21:33.502>deal <00:21:33.652>with.

508
00:21:34.065 --> 00:21:36.065
<00:21:34.065>I <00:21:34.265>mean, <00:21:34.465>handling <00:21:34.665>failure, <00:21:34.865>you <00:21:35.065>should <00:21:35.265>always <00:21:35.465>do,

509
00:21:36.205 --> 00:21:37.305
<00:21:36.205>but <00:21:36.452>especially <00:21:36.700>when <00:21:36.947>you <00:21:37.195>want

510
00:21:37.305 --> 00:21:39.665
<00:21:37.305>to <00:21:37.480>have <00:21:37.655>exactly <00:21:37.830>one <00:21:38.005>processing, <00:21:38.180>it's <00:21:38.355>even <00:21:38.530>more <00:21:38.705>important.

511
00:21:42.215 --> 00:21:46.635
<00:21:42.215>So <00:21:42.389>another <00:21:42.564>measure <00:21:42.740>to <00:21:42.915>handle <00:21:43.090>failure, <00:21:43.264>archive <00:21:43.439>and <00:21:43.615>replay.

512
00:21:48.955 --> 00:21:52.335
<00:21:48.955>So <00:21:49.095>we <00:21:49.235>have <00:21:49.375>a <00:21:49.514>producer <00:21:49.655>sends <00:21:49.794>messages <00:21:49.935>to <00:21:50.074>a <00:21:50.215>message <00:21:50.355>bus,

513
00:21:53.535 --> 00:21:55.025
<00:21:53.535>they <00:21:53.803>get <00:21:54.071>forwarded <00:21:54.339>to <00:21:54.607>our <00:21:54.876>consumer.

514
00:21:56.785 --> 00:21:58.085
<00:21:56.785>We <00:21:56.980>have <00:21:57.175>a <00:21:57.370>queue <00:21:57.565>in <00:21:57.760>between, <00:21:57.955>right?

515
00:21:58.085 --> 00:22:00.125
<00:21:58.085>Because <00:21:58.260>we, <00:21:58.435>we <00:21:58.610>said, <00:21:58.785>Hey, <00:21:58.960>let's <00:21:59.135>apply <00:21:59.310>some <00:21:59.485>patterns.

516
00:22:02.355 --> 00:22:05.165
<00:22:02.355>There's <00:22:02.530>a <00:22:02.705>failure <00:22:02.880>in <00:22:03.055>the <00:22:03.230>system, <00:22:03.405>right? <00:22:03.580>Okay, <00:22:03.755>nice.

517
00:22:05.225 --> 00:22:07.445
<00:22:05.225>We <00:22:05.399>have <00:22:05.574>our <00:22:05.750>queue <00:22:05.925>message <00:22:06.100>gets <00:22:06.274>back <00:22:06.449>added <00:22:06.625>again,

518
00:22:07.445 --> 00:22:09.125
<00:22:07.445>everything's <00:22:07.725>fine, <00:22:08.004>we <00:22:08.284>just <00:22:08.564>reprocess <00:22:08.845>it

519
00:22:09.185 --> 00:22:10.845
<00:22:09.185>or <00:22:09.360>we <00:22:09.534>move <00:22:09.710>it <00:22:09.885>to <00:22:10.060>a <00:22:10.235>DOQ <00:22:10.409>or <00:22:10.585>something.

520
00:22:11.065 --> 00:22:12.765
<00:22:11.065>All <00:22:11.765>good. <00:22:12.465>But

521
00:22:12.765 --> 00:22:15.765
<00:22:12.765>what <00:22:12.905>happens <00:22:13.045>if <00:22:13.185>the <00:22:13.325>error <00:22:13.465>only <00:22:13.605>gets <00:22:13.745>detected <00:22:13.885>14 <00:22:14.025>days <00:22:14.165>later?

522
00:22:15.765 --> 00:22:17.725
<00:22:15.765>Because <00:22:15.940>maybe <00:22:16.115>there <00:22:16.290>was <00:22:16.465>an <00:22:16.640>issue <00:22:16.815>in <00:22:16.990>business <00:22:17.165>logic

523
00:22:17.825 --> 00:22:18.885
<00:22:17.825>or <00:22:18.063>something <00:22:18.302>else <00:22:18.540>was <00:22:18.779>wrong.

524
00:22:20.085 --> 00:22:22.085
<00:22:20.085>A <00:22:20.240>bit <00:22:20.396>difficult, <00:22:20.551>right? <00:22:20.707>It's <00:22:20.862>not <00:22:21.018>in <00:22:21.173>the <00:22:21.329>queue <00:22:21.485>anymore.

525
00:22:22.145 --> 00:22:23.165
<00:22:22.145>Not <00:22:22.374>in <00:22:22.604>the <00:22:22.833>system <00:22:23.062>anymore.

526
00:22:23.225 --> 00:22:24.645
<00:22:23.225>The <00:22:23.437>message <00:22:23.650>bus <00:22:23.864>doesn't <00:22:24.077>have <00:22:24.290>it <00:22:24.503>anymore.

527
00:22:25.105 --> 00:22:27.125
<00:22:25.105>How <00:22:25.245>do <00:22:25.385>we <00:22:25.525>deal <00:22:25.665>with <00:22:25.805>that? <00:22:25.945>And <00:22:26.085>you <00:22:26.225>might <00:22:26.365>say, <00:22:26.505>Hey,

528
00:22:27.125 --> 00:22:28.605
<00:22:27.125>that's <00:22:27.391>exactly <00:22:27.657>why <00:22:27.924>we <00:22:28.190>use <00:22:28.457>Kafka

529
00:22:28.605 --> 00:22:30.325
<00:22:28.605>because <00:22:28.805>we <00:22:29.005>can <00:22:29.205>store <00:22:29.405>the <00:22:29.605>messages <00:22:29.805>for <00:22:30.005>ages.

530
00:22:30.325 --> 00:22:33.165
<00:22:30.325>We <00:22:30.452>just <00:22:30.579>move <00:22:30.706>the <00:22:30.834>our <00:22:30.961>pointer <00:22:31.088>to <00:22:31.215>the <00:22:31.343>stream <00:22:31.470>to <00:22:31.597>the <00:22:31.725>beginning.

531
00:22:33.165 --> 00:22:34.405
<00:22:33.165>Again, <00:22:33.537>just <00:22:33.908>reprocess <00:22:34.281>things.

532
00:22:34.875 --> 00:22:37.005
<00:22:34.875>However, <00:22:35.075>there's <00:22:35.275>also <00:22:35.475>different <00:22:35.675>way <00:22:35.875>to <00:22:36.075>do <00:22:36.275>this

533
00:22:37.005 --> 00:22:41.185
<00:22:37.005>with <00:22:37.180>a <00:22:37.355>message <00:22:37.530>bus <00:22:37.705>reverting <00:22:37.880>back <00:22:38.055>to <00:22:38.230>initial <00:22:38.405>state.

534
00:22:42.215 --> 00:22:45.105
<00:22:42.215>What <00:22:42.370>we <00:22:42.526>can <00:22:42.681>also <00:22:42.837>do <00:22:42.992>from <00:22:43.148>our <00:22:43.303>message <00:22:43.459>bus <00:22:43.615>store,

535
00:22:45.205 --> 00:22:46.705
<00:22:45.205>all <00:22:45.475>our <00:22:45.745>messages <00:22:46.014>in <00:22:46.284>an <00:22:46.554>archive,

536
00:22:48.045 --> 00:22:49.545
<00:22:48.045>you <00:22:48.270>can <00:22:48.495>do <00:22:48.720>this <00:22:48.945>for <00:22:49.170>different <00:22:49.395>purposes.

537
00:22:50.165 --> 00:22:53.385
<00:22:50.165>One <00:22:50.340>purpose <00:22:50.514>would <00:22:50.690>be <00:22:50.865>to, <00:22:51.040>um, <00:22:51.215>actually <00:22:51.389>use <00:22:51.565>it

538
00:22:53.385 --> 00:22:57.025
<00:22:53.385>for <00:22:53.540>regulatory <00:22:53.696>reasons <00:22:53.851>or, <00:22:54.007>um, <00:22:54.162>in <00:22:54.318>this <00:22:54.473>case <00:22:54.629>for <00:22:54.785>archive

539
00:22:57.025 --> 00:23:00.265
<00:22:57.025>and <00:22:57.225>replay, <00:22:57.425>when <00:22:57.625>you <00:22:57.825>actually <00:22:58.025>replay <00:22:58.225>the <00:22:58.425>messages,

540
00:23:00.615 --> 00:23:02.105
<00:23:00.615>they <00:23:00.883>get <00:23:01.151>a <00:23:01.419>new <00:23:01.687>message <00:23:01.956>ID

541
00:23:02.365 --> 00:23:05.145
<00:23:02.365>and <00:23:02.492>get, <00:23:02.619>uh, <00:23:02.746>get <00:23:02.874>flown <00:23:03.001>through <00:23:03.128>the <00:23:03.255>system <00:23:03.383>in <00:23:03.510>the <00:23:03.637>same <00:23:03.765>way.

542
00:23:07.195 --> 00:23:08.725
<00:23:07.195>What <00:23:07.391>do <00:23:07.588>you <00:23:07.785>have <00:23:07.981>to <00:23:08.178>think <00:23:08.375>about <00:23:08.572>now?

543
00:23:08.725 --> 00:23:10.485
<00:23:08.725>The <00:23:08.958>message <00:23:09.191>gets <00:23:09.425>processed <00:23:09.658>a <00:23:09.891>second <00:23:10.125>time.

544
00:23:10.785 --> 00:23:12.845
<00:23:10.785>So <00:23:10.985>please <00:23:11.185>make <00:23:11.385>sure <00:23:11.585>that <00:23:11.785>if <00:23:11.985>item <00:23:12.185>pot

545
00:23:13.405 --> 00:23:14.965
<00:23:13.405>consumers, <00:23:13.638>to <00:23:13.871>be <00:23:14.105>sure <00:23:14.338>to <00:23:14.571>handle <00:23:14.805>that.

546
00:23:17.515 --> 00:23:19.695
<00:23:17.515>So <00:23:17.981>failure <00:23:18.448>is <00:23:18.915>inevitable.

547
00:23:20.285 --> 00:23:23.295
<00:23:20.285>Embrace <00:23:20.440>failure <00:23:20.596>and <00:23:20.751>let <00:23:20.907>tools <00:23:21.062>and <00:23:21.218>patterns <00:23:21.373>help <00:23:21.529>you, <00:23:21.685>right?

548
00:23:23.385 --> 00:23:24.975
<00:23:23.385>Quite <00:23:23.665>important. <00:23:23.945>Think <00:23:24.225>about <00:23:24.504>it <00:23:24.785>early

549
00:23:25.195 --> 00:23:27.215
<00:23:25.195>and <00:23:25.370>think <00:23:25.544>about <00:23:25.720>how <00:23:25.895>this <00:23:26.070>applies <00:23:26.245>to <00:23:26.419>your <00:23:26.595>system.

550
00:23:30.015 --> 00:23:32.955
<00:23:30.015>One <00:23:30.170>of <00:23:30.326>the <00:23:30.481>last <00:23:30.637>points <00:23:30.792>here, <00:23:30.948>prepare <00:23:31.103>for <00:23:31.259>success, <00:23:31.415>right?

551
00:23:32.955 --> 00:23:34.595
<00:23:32.955>Something <00:23:33.188>that <00:23:33.421>business <00:23:33.655>obviously <00:23:33.888>wants <00:23:34.121>to <00:23:34.355>hear.

552
00:23:34.595 --> 00:23:37.515
<00:23:34.595>Often <00:23:34.770>your <00:23:34.945>app <00:23:35.120>works <00:23:35.295>well <00:23:35.470>for <00:23:35.645>a <00:23:35.820>hundred <00:23:35.995>users,

553
00:23:38.865 --> 00:23:41.285
<00:23:38.865>but <00:23:39.040>does <00:23:39.215>it <00:23:39.390>also <00:23:39.565>work <00:23:39.740>for <00:23:39.915>100 <00:23:40.090>million <00:23:40.265>users?

554
00:23:42.115 --> 00:23:44.045
<00:23:42.115>Okay, <00:23:42.315>maybe <00:23:42.515>you <00:23:42.715>don't <00:23:42.915>have <00:23:43.115>100 <00:23:43.315>million <00:23:43.515>users,

555
00:23:44.055 --> 00:23:45.725
<00:23:44.055>maybe <00:23:44.405>maybe <00:23:44.755>business <00:23:45.105>calculated <00:23:45.455>that,

556
00:23:45.725 --> 00:23:47.605
<00:23:45.725>but <00:23:45.865>maybe <00:23:46.004>you <00:23:46.145>say, <00:23:46.284>Hey, <00:23:46.425>we, <00:23:46.564>we <00:23:46.705>don't <00:23:46.844>actually <00:23:46.985>need <00:23:47.125>100

557
00:23:47.605 --> 00:23:50.645
<00:23:47.605>users, <00:23:47.805>but <00:23:48.005>you <00:23:48.205>can <00:23:48.405>also <00:23:48.605>have <00:23:48.805>100 <00:23:49.005>users

558
00:23:50.645 --> 00:23:52.365
<00:23:50.645>that <00:23:50.878>kick <00:23:51.111>your <00:23:51.345>system <00:23:51.578>really, <00:23:51.811>really <00:23:52.045>hard.

559
00:23:52.785 --> 00:23:55.645
<00:23:52.785>How <00:23:52.940>can <00:23:53.096>you <00:23:53.251>deal <00:23:53.407>with <00:23:53.562>that? <00:23:53.718>It's <00:23:53.873>about <00:23:54.029>scaling, <00:23:54.185>right?

560
00:23:55.815 --> 00:23:57.605
<00:23:55.815>Maybe <00:23:55.970>you <00:23:56.126>have <00:23:56.281>a <00:23:56.437>machine <00:23:56.592>that <00:23:56.748>you <00:23:56.903>like <00:23:57.059>a <00:23:57.215>lot,

561
00:23:58.265 --> 00:23:59.685
<00:23:58.265>you <00:23:58.584>do <00:23:58.904>vertical <00:23:59.223>scaling, <00:23:59.543>right?

562
00:23:59.745 --> 00:24:02.245
<00:23:59.745>You <00:23:59.872>have <00:23:59.999>to <00:24:00.126>improve <00:24:00.254>your, <00:24:00.381>you <00:24:00.508>have <00:24:00.635>to <00:24:00.763>buy <00:24:00.890>a <00:24:01.017>bigger <00:24:01.145>machine.

563
00:24:02.475 --> 00:24:05.245
<00:24:02.475>Make <00:24:02.708>it <00:24:02.941>better. <00:24:03.175>If <00:24:03.408>you <00:24:03.641>followed <00:24:03.875>some

564
00:24:05.245 --> 00:24:06.405
<00:24:05.245>of <00:24:05.453>the <00:24:05.662>principles <00:24:05.871>in <00:24:06.080>the <00:24:06.289>beginning,

565
00:24:07.065 --> 00:24:08.725
<00:24:07.065>you <00:24:07.240>may <00:24:07.415>end <00:24:07.590>up <00:24:07.765>with <00:24:07.940>something <00:24:08.115>like <00:24:08.290>this, <00:24:08.465>right?

566
00:24:08.725 --> 00:24:10.085
<00:24:08.725>Either <00:24:09.133>monolith <00:24:09.541>or <00:24:09.949>distributed

567
00:24:10.085 --> 00:24:11.725
<00:24:10.085>architecture <00:24:10.435>or <00:24:10.785>something <00:24:11.135>in <00:24:11.485>between.

568
00:24:12.425 --> 00:24:15.285
<00:24:12.425>The <00:24:12.580>most <00:24:12.736>important <00:24:12.891>point <00:24:13.047>to <00:24:13.202>take <00:24:13.358>away <00:24:13.513>here <00:24:13.669>is <00:24:13.825>architect

569
00:24:15.285 --> 00:24:17.685
<00:24:15.285>for <00:24:15.565>flexibility <00:24:15.845>on <00:24:16.125>all <00:24:16.405>layers, <00:24:16.685>right?

570
00:24:17.785 --> 00:24:19.005
<00:24:17.785>Not <00:24:18.004>only <00:24:18.224>on <00:24:18.443>the <00:24:18.663>compute, <00:24:18.883>right?

571
00:24:19.005 --> 00:24:21.245
<00:24:19.005>We <00:24:19.145>saw <00:24:19.285>some <00:24:19.425>of <00:24:19.565>the <00:24:19.705>messaging, <00:24:19.845>some <00:24:19.985>of <00:24:20.125>the <00:24:20.265>decoupling <00:24:20.405>things.

572
00:24:21.495 --> 00:24:23.245
<00:24:21.495>Think <00:24:21.774>about <00:24:22.054>how <00:24:22.334>they <00:24:22.614>scale <00:24:22.895>properly

573
00:24:23.345 --> 00:24:24.765
<00:24:23.345>and <00:24:23.600>how <00:24:23.856>your <00:24:24.111>whole <00:24:24.367>system <00:24:24.623>behaves.

574
00:24:26.745 --> 00:24:28.685
<00:24:26.745>The <00:24:27.024>last <00:24:27.304>point <00:24:27.584>here, <00:24:27.864>last <00:24:28.145>principle.

575
00:24:28.775 --> 00:24:31.725
<00:24:28.775>Don't <00:24:28.902>reinvent <00:24:29.029>the <00:24:29.156>wheel. <00:24:29.284>And <00:24:29.411>we <00:24:29.538>see <00:24:29.665>this, <00:24:29.793>uh, <00:24:29.920>quite <00:24:30.047>a <00:24:30.175>bit.

576
00:24:32.025 --> 00:24:33.645
<00:24:32.025>You <00:24:32.258>need <00:24:32.491>to <00:24:32.725>build <00:24:32.958>everything <00:24:33.191>yourself, <00:24:33.425>right?

577
00:24:33.645 --> 00:24:35.845
<00:24:33.645>Because <00:24:33.878>you <00:24:34.111>want <00:24:34.345>to <00:24:34.578>avoid <00:24:34.811>login, <00:24:35.045>please

578
00:24:36.415 --> 00:24:38.845
<00:24:36.415>don't <00:24:36.615>build <00:24:36.815>the <00:24:37.014>next <00:24:37.215>great <00:24:37.415>container <00:24:37.615>orchestration <00:24:37.815>engine.

579
00:24:38.845 --> 00:24:41.675
<00:24:38.845>If <00:24:39.045>this <00:24:39.245>is <00:24:39.445>not <00:24:39.645>your <00:24:39.845>business, <00:24:40.045>think <00:24:40.245>about

580
00:24:41.675 --> 00:24:43.755
<00:24:41.675>what <00:24:41.955>differentiates <00:24:42.235>your <00:24:42.514>company <00:24:42.794>from <00:24:43.075>others

581
00:24:43.895 --> 00:24:45.195
<00:24:43.895>and <00:24:44.187>work <00:24:44.480>on <00:24:44.772>those <00:24:45.065>features.

582
00:24:46.945 --> 00:24:49.395
<00:24:46.945>Also <00:24:47.411>HGDP <00:24:47.878>codes, <00:24:48.345>right?

583
00:24:49.395 --> 00:24:51.795
<00:24:49.395>Inventing <00:24:49.595>something <00:24:49.795>new, <00:24:49.995>maybe <00:24:50.195>not <00:24:50.395>the <00:24:50.595>greatest <00:24:50.795>idea.

584
00:24:52.735 --> 00:24:54.935
<00:24:52.735>Please <00:24:54.135>apply

585
00:24:54.955 --> 00:24:58.295
<00:24:54.955>and <00:24:55.155>understand, <00:24:55.355>uh, <00:24:55.554>standards <00:24:55.754>in <00:24:55.955>the <00:24:56.155>industry, <00:24:56.355>right?

586
00:24:58.295 --> 00:25:00.375
<00:24:58.295>It <00:24:58.495>really, <00:24:58.695>everyone <00:24:58.895>will <00:24:59.095>thank <00:24:59.295>you <00:24:59.495>for <00:24:59.695>that.

587
00:25:00.395 --> 00:25:02.495
<00:25:00.395>The <00:25:00.522>people <00:25:00.649>that <00:25:00.776>come <00:25:00.904>after <00:25:01.031>you <00:25:01.158>will <00:25:01.285>really <00:25:01.413>thank <00:25:01.540>you <00:25:01.667>if <00:25:01.795>you

588
00:25:02.495 --> 00:25:03.535
<00:25:02.495>do <00:25:02.963>proper <00:25:03.431>standards.

589
00:25:05.155 --> 00:25:07.655
<00:25:05.155>And <00:25:05.310>I <00:25:05.466>wanna <00:25:05.621>bring <00:25:05.777>the <00:25:05.932>quote <00:25:06.088>from, <00:25:06.243>uh, <00:25:06.399>from <00:25:06.555>Dirk.

590
00:25:07.655 --> 00:25:09.855
<00:25:07.655>Again, <00:25:07.935>no <00:25:08.215>architecture <00:25:08.495>decision <00:25:08.774>you <00:25:09.055>take

591
00:25:09.865 --> 00:25:11.135
<00:25:09.865>comes <00:25:10.150>without <00:25:10.436>a <00:25:10.722>trade <00:25:11.008>off.

592
00:25:11.745 --> 00:25:13.815
<00:25:11.745>Every <00:25:12.024>architecture <00:25:12.304>decision <00:25:12.584>brings <00:25:12.864>some <00:25:13.145>pain

593
00:25:14.115 --> 00:25:15.935
<00:25:14.115>and <00:25:14.315>your <00:25:14.515>job <00:25:14.715>as <00:25:14.915>a <00:25:15.115>software <00:25:15.315>architect <00:25:15.515>is

594
00:25:15.935 --> 00:25:18.335
<00:25:15.935>to <00:25:16.110>identify <00:25:16.284>the <00:25:16.460>least <00:25:16.635>painful <00:25:16.810>option <00:25:16.985>on <00:25:17.159>the <00:25:17.335>table.

595
00:25:20.655 --> 00:25:23.075
<00:25:20.655>And <00:25:20.855>with <00:25:21.055>that, <00:25:21.254>I <00:25:21.455>already <00:25:21.655>see <00:25:21.855>some <00:25:22.055>smartphones.

596
00:25:23.535 --> 00:25:24.715
<00:25:23.535>You <00:25:23.747>can <00:25:23.959>take <00:25:24.172>them <00:25:24.384>out. <00:25:24.597>Now,

597
00:25:25.115 --> 00:25:27.275
<00:25:25.115>I <00:25:25.290>would <00:25:25.465>really <00:25:25.640>appreciate <00:25:25.815>if <00:25:25.990>you <00:25:26.165>scan <00:25:26.340>the <00:25:26.515>QR

598
00:25:27.275 --> 00:25:28.675
<00:25:27.275>code <00:25:27.590>and <00:25:27.905>leave <00:25:28.220>some <00:25:28.534>feedback.

599
00:25:28.895 --> 00:25:30.035
<00:25:28.895>Really <00:25:29.237>important <00:25:29.579>for <00:25:29.921>me.

600
00:25:30.575 --> 00:25:32.595
<00:25:30.575>And <00:25:30.730>with <00:25:30.886>that, <00:25:31.041>I <00:25:31.197>want <00:25:31.352>to <00:25:31.508>thank <00:25:31.663>everyone <00:25:31.819>for <00:25:31.975>joining

601
00:25:33.055 --> 00:25:34.795
<00:25:33.055>and <00:25:33.255>have <00:25:33.455>a <00:25:33.655>great <00:25:33.855>rest <00:25:34.055>of <00:25:34.255>the <00:25:34.455>conference.