WEBVTT

1
00:00:08.395 --> 00:00:08.685
Yeah.

2
00:00:09.175 --> 00:00:13.645
<00:00:09.175>Hello. <00:00:09.315>Um, <00:00:09.455>I'm <00:00:09.595>happy <00:00:09.735>to <00:00:09.875>see <00:00:10.015>so <00:00:10.155>much <00:00:10.295>of <00:00:10.435>you <00:00:10.575>interested

3
00:00:14.585 --> 00:00:16.245
<00:00:14.585>in <00:00:14.865>what <00:00:15.145>I <00:00:15.425>have <00:00:15.705>to <00:00:15.985>share.

4
00:00:16.545 --> 00:00:21.165
<00:00:16.545>Yes. <00:00:16.895>I'm <00:00:17.245>sorry. <00:00:17.595>Of <00:00:17.945>my,

5
00:00:21.355 --> 00:00:25.205
<00:00:21.355>today's <00:00:21.555>topic <00:00:21.755>is <00:00:21.955>how <00:00:22.155>to <00:00:22.355>destroy <00:00:22.555>a <00:00:22.755>monolith.

6
00:00:26.265 --> 00:00:28.045
<00:00:26.265>And <00:00:26.545>first, <00:00:26.825>a <00:00:27.105>bit <00:00:27.385>about <00:00:27.665>me.

7
00:00:28.185 --> 00:00:31.685
<00:00:28.185>My <00:00:28.360>name <00:00:28.535>is <00:00:28.709>Pave, <00:00:28.884>I'm <00:00:29.060>a <00:00:29.235>senior <00:00:29.410>software <00:00:29.584>engineer.

8
00:00:32.065 --> 00:00:36.125
<00:00:32.064>I'm <00:00:32.265>doing <00:00:32.464>software <00:00:32.665>engineering <00:00:32.864>for <00:00:33.065>nearly <00:00:33.265>20 <00:00:33.464>years,

9
00:00:37.305 --> 00:00:39.085
<00:00:37.305>and <00:00:38.005>um, <00:00:38.705>most

10
00:00:39.105 --> 00:00:43.685
<00:00:39.105>of <00:00:39.245>the <00:00:39.385>time <00:00:39.525>was <00:00:39.665>a <00:00:39.805>dedicated <00:00:39.944>focus <00:00:40.084>on <00:00:40.224>backend <00:00:40.364>and <00:00:40.504>Java.

11
00:00:44.425 --> 00:00:49.205
<00:00:44.425>At <00:00:44.625>my <00:00:44.824>current <00:00:45.025>position <00:00:45.224>at <00:00:45.425>IL <00:00:45.625>Springer, <00:00:45.824>uh,

12
00:00:49.205 --> 00:00:51.285
<00:00:49.205>which <00:00:49.438>I <00:00:49.671>hold <00:00:49.905>for <00:00:50.138>about <00:00:50.371>10 <00:00:50.605>years,

13
00:00:51.995 --> 00:00:55.605
<00:00:51.995>it's <00:00:52.228>all <00:00:52.461>about <00:00:52.695>writing <00:00:52.928>web <00:00:53.161>apps <00:00:53.394>for

14
00:00:56.145 --> 00:00:59.205
<00:00:56.145>the <00:00:56.425>huge <00:00:56.705>national <00:00:56.985>brands <00:00:57.265>of <00:00:57.545>Springer.

15
00:00:59.865 --> 00:01:02.805
<00:00:59.865>You <00:01:00.098>might <00:01:00.331>know, <00:01:00.565>build <00:01:00.798>or <00:01:01.031>red <00:01:01.265>newspapers.

16
00:01:04.025 --> 00:01:06.325
<00:01:04.025>And, <00:01:04.725>um, <00:01:05.425>yeah,

17
00:01:07.795 --> 00:01:11.725
<00:01:07.795>with <00:01:07.950>the <00:01:08.106>web <00:01:08.261>apps <00:01:08.417>we <00:01:08.572>build, <00:01:08.728>we <00:01:08.883>are <00:01:09.039>enabling <00:01:09.195>premium

18
00:01:11.985 --> 00:01:16.845
<00:01:11.985>and <00:01:12.185>paid <00:01:12.385>content <00:01:12.585>means <00:01:12.785>you <00:01:12.985>can <00:01:13.185>purchase <00:01:13.385>subscriptions

19
00:01:17.305 --> 00:01:19.725
<00:01:17.305>and <00:01:17.655>then <00:01:18.005>read <00:01:18.355>premium <00:01:18.705>articles.

20
00:01:21.785 --> 00:01:26.285
<00:01:21.785>So <00:01:21.960>let <00:01:22.134>me <00:01:22.310>give <00:01:22.485>you <00:01:22.660>a <00:01:22.835>rough <00:01:23.009>impression <00:01:23.185>of

21
00:01:26.665 --> 00:01:29.725
<00:01:26.664>how, <00:01:26.898>of <00:01:27.131>what <00:01:27.365>we <00:01:27.598>have <00:01:27.831>to <00:01:28.065>deal

22
00:01:29.795 --> 00:01:32.085
<00:01:29.795>with <00:01:30.075>about <00:01:30.355>me <00:01:30.635>and <00:01:30.915>my <00:01:31.195>team.

23
00:01:32.585 --> 00:01:37.245
<00:01:32.585>Um, <00:01:32.818>our <00:01:33.051>main <00:01:33.285>responsibilities <00:01:33.518>are <00:01:33.751>mostly <00:01:33.985>three.

24
00:01:37.905 --> 00:01:42.485
<00:01:37.905>The <00:01:38.032>first <00:01:38.159>of <00:01:38.286>them <00:01:38.414>are <00:01:38.541>the <00:01:38.668>user <00:01:38.795>flows <00:01:38.923>for <00:01:39.050>the <00:01:39.177>end <00:01:39.305>users

25
00:01:42.905 --> 00:01:46.805
<00:01:42.905>of <00:01:43.138>build <00:01:43.371>and <00:01:43.605>file <00:01:43.838>means <00:01:44.071>login, <00:01:44.305>registration,

26
00:01:47.095 --> 00:01:49.645
<00:01:47.095>other <00:01:47.445>flows, <00:01:47.795>um, <00:01:48.145>like <00:01:48.495>these.

27
00:01:50.145 --> 00:01:54.565
<00:01:50.145>And <00:01:50.272>we <00:01:50.399>have <00:01:50.526>about <00:01:50.654>1 <00:01:50.781>million <00:01:50.908>sessions <00:01:51.035>a <00:01:51.163>day <00:01:51.290>on <00:01:51.417>our <00:01:51.545>systems.

28
00:01:55.355 --> 00:01:57.205
<00:01:55.354>This <00:01:55.634>is <00:01:55.914>both <00:01:56.195>web <00:01:56.475>and <00:01:56.755>app.

29
00:01:58.505 --> 00:02:02.405
<00:01:58.505>The <00:01:58.679>next <00:01:58.854>responsibility <00:01:59.030>is <00:01:59.205>that <00:01:59.380>we <00:01:59.554>collect <00:01:59.729>the <00:01:59.905>data

30
00:02:03.505 --> 00:02:04.685
<00:02:03.505>in <00:02:04.036>these <00:02:04.567>flows

31
00:02:04.825 --> 00:02:08.125
<00:02:04.825>and <00:02:05.105>manage <00:02:05.385>it <00:02:05.665>to, <00:02:05.945>uh, <00:02:06.225>go

32
00:02:08.125 --> 00:02:12.605
<00:02:08.125>to <00:02:08.358>our <00:02:08.591>third <00:02:08.824>responsibility, <00:02:09.058>which <00:02:09.291>is, <00:02:09.525>um,

33
00:02:13.945 --> 00:02:16.285
<00:02:13.945>the <00:02:14.295>provisioning <00:02:14.644>of <00:02:14.995>this <00:02:15.345>data

34
00:02:16.865 --> 00:02:19.045
<00:02:16.865>to <00:02:17.215>other <00:02:17.565>teams <00:02:17.915>and <00:02:18.265>partners.

35
00:02:20.025 --> 00:02:24.125
<00:02:20.025>So <00:02:20.165>let <00:02:20.305>me <00:02:20.445>spoil <00:02:20.585>a <00:02:20.725>bit <00:02:20.865>with <00:02:21.005>these <00:02:21.145>numbers <00:02:21.285>in <00:02:21.425>mind.

36
00:02:24.385 --> 00:02:28.485
<00:02:24.385>We <00:02:24.560>were <00:02:24.734>able <00:02:24.910>to <00:02:25.084>replace <00:02:25.260>the <00:02:25.435>monolith, <00:02:25.609>which <00:02:25.785>served

37
00:02:29.055 --> 00:02:33.845
<00:02:29.055>these <00:02:29.210>topics <00:02:29.366>with <00:02:29.521>no <00:02:29.677>downtime <00:02:29.832>at <00:02:29.988>10:00 <00:02:30.143>AM <00:02:30.299>in <00:02:30.455>the

38
00:02:33.845 --> 00:02:38.005
<00:02:33.845>morning <00:02:33.984>where <00:02:34.125>a <00:02:34.265>lot <00:02:34.405>of <00:02:34.545>users <00:02:34.685>were <00:02:34.825>busy <00:02:34.965>on <00:02:35.105>the <00:02:35.245>system.

39
00:02:38.665 --> 00:02:42.525
<00:02:38.665>We <00:02:38.898>maintained <00:02:39.131>functionality <00:02:39.364>throughout <00:02:39.598>all <00:02:39.831>the <00:02:40.065>time.

40
00:02:43.555 --> 00:02:45.445
<00:02:43.555>Yeah, <00:02:44.955>so,

41
00:02:45.665 --> 00:02:50.525
<00:02:45.665>but <00:02:45.864>let's <00:02:46.065>tell, <00:02:46.265>tell, <00:02:46.465>I <00:02:46.665>wanna <00:02:46.864>tell <00:02:47.065>you

42
00:02:50.525 --> 00:02:52.885
<00:02:50.525>where <00:02:50.875>we <00:02:51.225>started <00:02:51.575>the <00:02:51.925>monolith.

43
00:02:53.785 --> 00:02:57.885
<00:02:53.785>So <00:02:53.940>the <00:02:54.096>application <00:02:54.251>was <00:02:54.407>created <00:02:54.562>with <00:02:54.718>the <00:02:54.873>idea <00:02:55.029>in <00:02:55.185>mind

44
00:02:57.985 --> 00:03:01.725
<00:02:57.985>to <00:02:58.218>provide <00:02:58.451>a <00:02:58.685>flexible <00:02:58.918>access <00:02:59.151>to <00:02:59.385>data

45
00:03:02.145 --> 00:03:06.365
<00:03:02.145>for <00:03:02.378>a <00:03:02.611>variety <00:03:02.845>of <00:03:03.078>purposes <00:03:03.311>and <00:03:03.545>tenants.

46
00:03:06.625 --> 00:03:09.605
<00:03:06.625>It <00:03:06.858>was <00:03:07.091>meant <00:03:07.325>to <00:03:07.558>be <00:03:07.791>super <00:03:08.025>dynamic.

47
00:03:10.345 --> 00:03:12.685
<00:03:10.345>You <00:03:10.578>could <00:03:10.811>add <00:03:11.045>fields <00:03:11.278>on <00:03:11.511>the <00:03:11.745>fly.

48
00:03:13.345 --> 00:03:17.725
<00:03:13.345>Um, <00:03:13.545>but <00:03:13.745>this <00:03:13.945>led <00:03:14.145>to <00:03:14.345>an <00:03:14.545>unbelievable <00:03:14.745>amount

49
00:03:17.945 --> 00:03:22.045
<00:03:17.945>of <00:03:18.411>code <00:03:18.878>500,000 <00:03:19.345>lines

50
00:03:22.105 --> 00:03:24.205
<00:03:22.105>of <00:03:22.454>code <00:03:22.804>in <00:03:23.155>one <00:03:23.505>application.

51
00:03:25.945 --> 00:03:30.605
<00:03:25.945>And <00:03:26.084>it <00:03:26.225>wasn't, <00:03:26.364>not <00:03:26.505>only <00:03:26.644>that <00:03:26.785>much, <00:03:26.924>it <00:03:27.065>was <00:03:27.204>super <00:03:27.345>hard

52
00:03:30.785 --> 00:03:34.925
<00:03:30.785>to <00:03:30.984>handle <00:03:31.185>and <00:03:31.385>this <00:03:31.585>led <00:03:31.785>to <00:03:31.984>the <00:03:32.185>situation

53
00:03:34.925 --> 00:03:37.125
<00:03:34.925>that <00:03:35.275>even <00:03:35.625>the <00:03:35.975>smallest <00:03:36.325>changes

54
00:03:37.755 --> 00:03:41.965
<00:03:37.755>were <00:03:37.988>task <00:03:38.221>completely <00:03:38.454>blown <00:03:38.688>out <00:03:38.921>of <00:03:39.155>proportion.

55
00:03:42.465 --> 00:03:45.245
<00:03:42.465>And <00:03:42.665>you <00:03:42.865>can't <00:03:43.065>just <00:03:43.265>tell <00:03:43.465>your <00:03:43.665>stakeholder, <00:03:43.865>okay,

56
00:03:45.305 --> 00:03:48.645
<00:03:45.305>it <00:03:45.432>will <00:03:45.559>take <00:03:45.686>two <00:03:45.814>days <00:03:45.941>to <00:03:46.068>change <00:03:46.195>the <00:03:46.323>color <00:03:46.450>of <00:03:46.577>the <00:03:46.705>button.

57
00:03:49.145 --> 00:03:52.085
<00:03:49.145>No <00:03:49.378>one, <00:03:49.611>no <00:03:49.845>one <00:03:50.078>will <00:03:50.311>understand <00:03:50.545>why.

58
00:03:52.985 --> 00:03:57.085
<00:03:52.985>In <00:03:53.185>addition, <00:03:53.385>what <00:03:53.585>was <00:03:53.785>done <00:03:53.985>back <00:03:54.185>then <00:03:54.385>was

59
00:03:57.315 --> 00:03:59.485
<00:03:57.315>that <00:03:58.015>underlying <00:03:58.715>frameworks

60
00:03:59.545 --> 00:04:03.525
<00:03:59.545>and <00:03:59.745>libraries <00:03:59.945>were <00:04:00.145>so <00:04:00.345>heavily <00:04:00.545>customized <00:04:00.745>on <00:04:00.945>top

61
00:04:03.915 --> 00:04:06.925
<00:04:03.915>that <00:04:04.265>it <00:04:04.614>was <00:04:04.965>completely <00:04:05.315>impossible

62
00:04:07.425 --> 00:04:09.285
<00:04:07.425>to <00:04:08.125>upgrade <00:04:08.825>libraries

63
00:04:09.855 --> 00:04:11.125
<00:04:09.855>after <00:04:10.236>a <00:04:10.617>certain <00:04:10.998>point

64
00:04:11.125 --> 00:04:13.885
<00:04:11.125>of <00:04:11.405>time <00:04:11.685>without <00:04:11.965>breaking <00:04:12.245>the <00:04:12.525>application.

65
00:04:16.495 --> 00:04:19.905
<00:04:16.495>Last <00:04:16.670>but <00:04:16.845>not <00:04:17.019>least, <00:04:17.195>aging <00:04:17.370>didn't <00:04:17.545>make <00:04:17.720>things <00:04:17.894>better.

66
00:04:20.485 --> 00:04:22.225
<00:04:20.485>You <00:04:20.765>probably <00:04:21.045>know <00:04:21.325>that <00:04:21.605>as <00:04:21.885>well.

67
00:04:23.405 --> 00:04:26.305
<00:04:23.405>And, <00:04:23.604>um, <00:04:23.804>it <00:04:24.005>ran <00:04:24.205>in <00:04:24.405>the <00:04:24.604>data <00:04:24.804>center.

68
00:04:26.845 --> 00:04:31.225
<00:04:26.845>So, <00:04:27.020>um, <00:04:27.195>we <00:04:27.370>were <00:04:27.545>limited, <00:04:27.720>um, <00:04:27.895>here <00:04:28.070>as <00:04:28.245>well.

69
00:04:32.085 --> 00:04:36.025
<00:04:32.085>No <00:04:32.240>way <00:04:32.396>to <00:04:32.551>scale <00:04:32.707>up <00:04:32.862>quickly <00:04:33.018>for <00:04:33.173>peaks <00:04:33.329>of <00:04:33.484>users

70
00:04:36.705 --> 00:04:39.945
<00:04:36.705>problems <00:04:36.984>with <00:04:37.265>analyzing <00:04:37.544>the <00:04:37.825>network <00:04:38.104>if

71
00:04:39.945 --> 00:04:41.305
<00:04:39.945>issues <00:04:40.557>occurred <00:04:41.169>there.

72
00:04:44.685 --> 00:04:47.785
<00:04:44.685>So <00:04:44.885>in <00:04:45.085>general, <00:04:45.285>I <00:04:45.485>don't <00:04:45.685>think <00:04:45.885>that <00:04:46.085>monolithic

73
00:04:48.545 --> 00:04:50.865
<00:04:48.545>structures <00:04:48.895>are <00:04:49.245>bad <00:04:49.595>at <00:04:49.945>all.

74
00:04:51.405 --> 00:04:54.385
<00:04:51.405>If <00:04:51.580>you <00:04:51.755>make <00:04:51.929>a <00:04:52.104>same <00:04:52.280>choice <00:04:52.455>that <00:04:52.630>monolith <00:04:52.804>is

75
00:04:54.415 --> 00:04:59.225
<00:04:54.415>what <00:04:54.570>will <00:04:54.726>benefit <00:04:54.881>your <00:04:55.037>use <00:04:55.192>case <00:04:55.348>the <00:04:55.503>most, <00:04:55.659>feel <00:04:55.815>free.

76
00:05:00.245 --> 00:05:04.985
<00:05:00.245>But <00:05:00.478>you <00:05:00.711>should <00:05:00.945>always <00:05:01.178>ask <00:05:01.411>yourself <00:05:01.645>why,

77
00:05:05.285 --> 00:05:09.385
<00:05:05.285>uh, <00:05:05.440>why <00:05:05.596>does <00:05:05.751>it <00:05:05.907>seem <00:05:06.062>easier <00:05:06.218>to <00:05:06.373>go <00:05:06.529>this <00:05:06.685>way?

78
00:05:10.405 --> 00:05:14.665
<00:05:10.405>And, <00:05:10.580>um, <00:05:10.755>it <00:05:10.929>might <00:05:11.104>be <00:05:11.280>you <00:05:11.455>already <00:05:11.630>have <00:05:11.804>access

79
00:05:14.725 --> 00:05:15.825
<00:05:14.725>to <00:05:15.220>the <00:05:15.715>database.

80
00:05:16.125 --> 00:05:20.705
<00:05:16.125>You <00:05:16.265>don't <00:05:16.405>want <00:05:16.545>to <00:05:16.685>write <00:05:16.825>a <00:05:16.965>separate <00:05:17.105>API <00:05:17.245>for <00:05:17.385>external <00:05:17.525>access

81
00:05:21.405 --> 00:05:22.745
<00:05:21.405>to <00:05:22.008>that <00:05:22.611>database.

82
00:05:23.325 --> 00:05:25.865
<00:05:23.325>It <00:05:23.525>took <00:05:23.724>too, <00:05:23.925>it <00:05:24.125>takes <00:05:24.325>too <00:05:24.525>long <00:05:24.724>to

83
00:05:26.535 --> 00:05:31.225
<00:05:26.535>ramp <00:05:26.735>up <00:05:26.935>new <00:05:27.135>components <00:05:27.335>and <00:05:27.535>secure <00:05:27.735>their <00:05:27.935>communication.

84
00:05:31.805 --> 00:05:34.745
<00:05:31.805>But <00:05:32.005>if <00:05:32.205>you <00:05:32.405>don't <00:05:32.605>ask <00:05:32.805>yourself <00:05:33.005>the <00:05:33.205>question,

85
00:05:35.565 --> 00:05:37.465
<00:05:35.565>why <00:05:35.798>am <00:05:36.031>I <00:05:36.265>tempted <00:05:36.498>to <00:05:36.731>do <00:05:36.965>so

86
00:05:37.485 --> 00:05:40.185
<00:05:37.485>and <00:05:37.640>find <00:05:37.796>a <00:05:37.951>good <00:05:38.107>answer, <00:05:38.262>then <00:05:38.418>you <00:05:38.573>will <00:05:38.729>end <00:05:38.885>up

87
00:05:40.185 --> 00:05:45.105
<00:05:40.185>with <00:05:40.340>something <00:05:40.496>like <00:05:40.651>that <00:05:40.807>mixed <00:05:40.962>up <00:05:41.118>to <00:05:41.273>the <00:05:41.429>max <00:05:41.585>three

88
00:05:45.905 --> 00:05:50.785
<00:05:45.905>responsibilities <00:05:46.184>in <00:05:46.465>one <00:05:46.744>huge <00:05:47.025>application <00:05:47.304>was

89
00:05:51.335 --> 00:05:55.625
<00:05:51.335>more <00:05:51.490>or <00:05:51.646>less <00:05:51.801>direct <00:05:51.957>access <00:05:52.112>to <00:05:52.268>the <00:05:52.423>data <00:05:52.579>from <00:05:52.734>everywhere.

90
00:05:59.905 --> 00:06:02.165
<00:05:59.905>So <00:06:00.255>we <00:06:00.604>needed <00:06:00.955>to <00:06:01.304>act

91
00:06:02.305 --> 00:06:06.325
<00:06:02.305>and <00:06:02.505>transform <00:06:02.705>that <00:06:02.905>monster <00:06:03.105>into <00:06:03.305>a <00:06:03.505>modern <00:06:03.705>landscape.

92
00:06:06.935 --> 00:06:09.085
<00:06:06.935>Let's <00:06:07.285>dismantle <00:06:07.635>the <00:06:07.985>monolith. <00:06:08.335>Okay.

93
00:06:09.135 --> 00:06:10.285
<00:06:09.135>First <00:06:09.480>thing <00:06:09.825>you <00:06:10.170>Google

94
00:06:10.905 --> 00:06:13.165
<00:06:10.905>and <00:06:11.184>you <00:06:11.465>come <00:06:11.744>up <00:06:12.025>with, <00:06:12.304>um,

95
00:06:13.825 --> 00:06:16.965
<00:06:13.825>two <00:06:14.104>strategies <00:06:14.385>which <00:06:14.664>are <00:06:14.945>commonly <00:06:15.224>advised

96
00:06:17.105 --> 00:06:18.965
<00:06:17.105>to <00:06:17.455>tackle <00:06:17.805>such <00:06:18.155>a <00:06:18.505>task.

97
00:06:19.845 --> 00:06:24.085
<00:06:19.845>I <00:06:19.985>tell <00:06:20.125>you <00:06:20.265>about <00:06:20.405>the <00:06:20.545>first <00:06:20.685>one, <00:06:20.825>which <00:06:20.965>is <00:06:21.105>code <00:06:21.245>first.

98
00:06:25.265 --> 00:06:26.725
<00:06:25.265>So <00:06:25.703>we <00:06:26.141>tried <00:06:26.579>that.

99
00:06:27.985 --> 00:06:32.165
<00:06:27.985>Uh, <00:06:28.218>we <00:06:28.451>tried <00:06:28.685>a <00:06:28.918>mixture <00:06:29.151>of <00:06:29.385>decomposition

100
00:06:32.305 --> 00:06:35.565
<00:06:32.305>by <00:06:32.771>domain <00:06:33.238>service <00:06:33.705>extraction

101
00:06:36.025 --> 00:06:39.405
<00:06:36.025>and <00:06:36.491>incre, <00:06:36.958>incremental <00:06:37.424>refactoring.

102
00:06:39.985 --> 00:06:44.005
<00:06:39.985>But <00:06:40.160>after, <00:06:40.335>uh, <00:06:40.510>some <00:06:40.685>time, <00:06:40.860>it <00:06:41.035>took <00:06:41.210>us <00:06:41.385>months

103
00:06:44.225 --> 00:06:48.485
<00:06:44.225>to <00:06:44.400>be <00:06:44.575>honest, <00:06:44.750>to <00:06:44.925>develop <00:06:45.100>just <00:06:45.275>a <00:06:45.450>small <00:06:45.625>component

104
00:06:48.785 --> 00:06:51.485
<00:06:48.784>for <00:06:49.135>one <00:06:49.484>use <00:06:49.835>case, <00:06:50.184>uh,

105
00:06:51.485 --> 00:06:53.845
<00:06:51.485>which <00:06:51.835>was <00:06:52.185>super <00:06:52.535>tightly <00:06:52.885>coupled

106
00:06:53.995 --> 00:06:56.125
<00:06:53.995>with <00:06:54.228>the <00:06:54.461>old <00:06:54.695>code <00:06:54.928>of <00:06:55.161>the <00:06:55.395>legacy.

107
00:06:56.745 --> 00:07:00.605
<00:06:56.745>And <00:06:56.872>we <00:06:56.999>had <00:06:57.126>to <00:06:57.254>refactor <00:06:57.381>the <00:06:57.508>legacy <00:06:57.635>over <00:06:57.763>and <00:06:57.890>over <00:06:58.017>and <00:06:58.145>over,

108
00:07:01.265 --> 00:07:04.165
<00:07:01.265>and <00:07:01.544>we <00:07:01.825>saw <00:07:02.104>this <00:07:02.385>isn't <00:07:02.664>feasible.

109
00:07:04.545 --> 00:07:07.765
<00:07:04.545>We <00:07:04.685>would <00:07:04.825>never <00:07:04.965>make <00:07:05.105>that <00:07:05.245>in <00:07:05.385>a <00:07:05.525>sane <00:07:05.665>amount <00:07:05.805>of <00:07:05.945>time.

110
00:07:12.035 --> 00:07:15.805
<00:07:12.035>This <00:07:12.210>is, <00:07:12.385>by <00:07:12.560>the <00:07:12.735>way, <00:07:12.910>the <00:07:13.085>data <00:07:13.260>model, <00:07:13.435>uh,

111
00:07:17.315 --> 00:07:21.445
<00:07:17.315>This, <00:07:18.715>Yeah,

112
00:07:22.185 --> 00:07:26.885
<00:07:22.185>uh, <00:07:22.360>it <00:07:22.535>was, <00:07:22.710>it <00:07:22.885>was <00:07:23.060>created <00:07:23.235>with <00:07:23.410>the <00:07:23.585>idea

113
00:07:26.915 --> 00:07:30.725
<00:07:26.915>that <00:07:27.115>it <00:07:27.315>should <00:07:27.515>be <00:07:27.715>super <00:07:27.915>complex <00:07:28.115>and <00:07:28.315>extendable,

114
00:07:31.185 --> 00:07:36.125
<00:07:31.185>but <00:07:31.325>this <00:07:31.465>already <00:07:31.605>defines <00:07:31.745>how <00:07:31.885>the <00:07:32.025>code <00:07:32.165>looks <00:07:32.305>and <00:07:32.445>vice <00:07:32.585>versa.

115
00:07:37.145 --> 00:07:40.325
<00:07:37.145>And <00:07:37.320>for <00:07:37.495>me, <00:07:37.669>you <00:07:37.844>will <00:07:38.020>often <00:07:38.195>hear <00:07:38.370>me <00:07:38.544>saying

116
00:07:40.355 --> 00:07:43.285
<00:07:40.355>that <00:07:40.635>writing <00:07:40.915>code <00:07:41.195>is <00:07:41.475>reading <00:07:41.755>code.

117
00:07:43.905 --> 00:07:46.685
<00:07:43.905>Uh, <00:07:44.104>you <00:07:44.304>read <00:07:44.505>code <00:07:44.705>before <00:07:44.905>you <00:07:45.104>write <00:07:45.304>code,

118
00:07:46.785 --> 00:07:50.565
<00:07:46.784>and <00:07:46.912>um, <00:07:47.039>if <00:07:47.166>you <00:07:47.294>don't <00:07:47.421>reduce <00:07:47.548>the <00:07:47.675>amount <00:07:47.803>of <00:07:47.930>code <00:07:48.057>you <00:07:48.184>have

119
00:07:50.565 --> 00:07:54.765
<00:07:50.565>to <00:07:50.705>read, <00:07:50.844>it'll <00:07:50.985>take <00:07:51.125>you <00:07:51.265>tremendously <00:07:51.405>long <00:07:51.545>to <00:07:51.685>write <00:07:51.825>new <00:07:51.965>code.

120
00:07:55.945 --> 00:07:57.965
<00:07:55.945>So <00:07:56.224>you <00:07:56.505>need <00:07:56.784>to <00:07:57.065>reduce <00:07:57.344>it.

121
00:07:59.235 --> 00:08:01.805
<00:07:59.235>Yeah, <00:07:59.585>this <00:07:59.935>aimed <00:08:00.285>for <00:08:00.635>flexibility,

122
00:08:02.585 --> 00:08:05.045
<00:08:02.585>but <00:08:02.818>instead <00:08:03.051>it <00:08:03.284>just <00:08:03.518>created <00:08:03.751>a <00:08:03.984>mess.

123
00:08:07.955 --> 00:08:08.245
Then

124
00:08:17.775 --> 00:08:21.635
<00:08:17.775>we <00:08:17.930>finally <00:08:18.086>took <00:08:18.241>a <00:08:18.397>look <00:08:18.552>at <00:08:18.708>the <00:08:18.863>SEC <00:08:19.019>second <00:08:19.174>strategy,

125
00:08:22.325 --> 00:08:24.155
<00:08:22.325>which <00:08:22.675>is <00:08:23.025>called <00:08:23.375>data <00:08:23.724>first.

126
00:08:25.495 --> 00:08:29.555
<00:08:25.495>And <00:08:25.650>with <00:08:25.806>this <00:08:25.961>strategy <00:08:26.117>in <00:08:26.272>mind, <00:08:26.428>we <00:08:26.583>were <00:08:26.739>instantly <00:08:26.895>able

127
00:08:29.735 --> 00:08:33.035
<00:08:29.735>to <00:08:29.935>plan <00:08:30.135>the <00:08:30.335>phases <00:08:30.535>of <00:08:30.735>the <00:08:30.935>complete <00:08:31.135>project.

128
00:08:34.495 --> 00:08:39.075
<00:08:34.495>Um, <00:08:34.728>What <00:08:34.961>we <00:08:35.195>planned <00:08:35.428>to <00:08:35.661>do <00:08:35.895>was

129
00:08:39.735 --> 00:08:42.755
<00:08:39.735>moving <00:08:39.968>the <00:08:40.201>data <00:08:40.435>to <00:08:40.668>a <00:08:40.901>different <00:08:41.135>location

130
00:08:42.855 --> 00:08:45.635
<00:08:42.855>to <00:08:43.088>keep <00:08:43.321>a <00:08:43.555>parallel <00:08:43.788>copy <00:08:44.021>of <00:08:44.255>it,

131
00:08:46.385 --> 00:08:50.595
<00:08:46.385>rebuild <00:08:46.618>the <00:08:46.851>data <00:08:47.085>management <00:08:47.318>around <00:08:47.551>it, <00:08:47.785>rebuild

132
00:08:50.775 --> 00:08:52.915
<00:08:50.775>or <00:08:51.125>replace <00:08:51.475>the <00:08:51.824>user <00:08:52.175>flows

133
00:08:53.535 --> 00:08:56.245
<00:08:53.535>and <00:08:53.885>rebuild <00:08:54.235>the <00:08:54.584>provisioning <00:08:54.935>component

134
00:08:56.945 --> 00:08:58.885
<00:08:56.945>and <00:08:57.225>then <00:08:57.505>do <00:08:57.785>a <00:08:58.065>switch <00:08:58.345>over.

135
00:08:59.435 --> 00:09:01.165
<00:08:59.435>This <00:08:59.785>was <00:09:00.135>my <00:09:00.484>rough <00:09:00.834>plan.

136
00:09:02.945 --> 00:09:06.165
<00:09:02.945>So <00:09:03.145>we <00:09:03.345>started <00:09:03.545>with <00:09:03.745>some <00:09:03.945>very <00:09:04.145>minimal, <00:09:04.345>uh,

137
00:09:06.355 --> 00:09:08.285
<00:09:06.355>data <00:09:06.705>set <00:09:07.055>on <00:09:07.405>the <00:09:07.755>user

138
00:09:09.025 --> 00:09:11.965
<00:09:09.025>and <00:09:09.225>we <00:09:09.425>built <00:09:09.625>the <00:09:09.824>data <00:09:10.025>management <00:09:10.225>around <00:09:10.425>it.

139
00:09:12.625 --> 00:09:16.885
<00:09:12.625>So, <00:09:12.825>um, <00:09:13.025>we <00:09:13.225>instantly <00:09:13.425>ramped <00:09:13.625>up, <00:09:13.825>uh, <00:09:14.025>simple

140
00:09:17.405 --> 00:09:20.125
<00:09:17.405>crud <00:09:17.755>components <00:09:18.105>in <00:09:18.454>the <00:09:18.805>cloud.

141
00:09:21.585 --> 00:09:24.205
<00:09:21.585>We <00:09:21.935>had, <00:09:22.285>uh, <00:09:22.635>Aurora <00:09:22.985>serverless

142
00:09:24.725 --> 00:09:28.885
<00:09:24.725>databases <00:09:24.880>in <00:09:25.036>the <00:09:25.191>cloud <00:09:25.347>also, <00:09:25.502>no <00:09:25.658>need <00:09:25.813>to <00:09:25.969>install, <00:09:26.125>just

143
00:09:29.445 --> 00:09:31.725
<00:09:29.445>configure, <00:09:29.678>and <00:09:29.911>you <00:09:30.145>are <00:09:30.378>fine <00:09:30.611>to <00:09:30.845>go.

144
00:09:32.695 --> 00:09:36.205
<00:09:32.695>We've <00:09:32.870>built <00:09:33.045>a <00:09:33.220>sinking <00:09:33.395>component <00:09:33.570>from <00:09:33.745>old <00:09:33.920>to <00:09:34.095>new.

145
00:09:37.125 --> 00:09:38.605
<00:09:37.125>I <00:09:37.315>will <00:09:37.505>come <00:09:37.695>to <00:09:37.886>that <00:09:38.076>in <00:09:38.266>a <00:09:38.457>moment.

146
00:09:39.665 --> 00:09:42.165
<00:09:39.665>And <00:09:39.944>with <00:09:40.224>a <00:09:40.505>sinking <00:09:40.785>between <00:09:41.064>old

147
00:09:42.185 --> 00:09:45.965
<00:09:42.185>and <00:09:42.385>new <00:09:42.584>data <00:09:42.785>in <00:09:42.984>place, <00:09:43.185>we <00:09:43.385>were <00:09:43.584>able

148
00:09:45.965 --> 00:09:48.005
<00:09:45.965>to <00:09:46.245>dump <00:09:46.525>out <00:09:46.805>the <00:09:47.085>old <00:09:47.365>data

149
00:09:48.665 --> 00:09:52.525
<00:09:48.665>and <00:09:48.839>copy <00:09:49.015>it <00:09:49.189>over <00:09:49.365>to <00:09:49.540>the <00:09:49.714>new <00:09:49.890>system <00:09:50.064>also

150
00:09:52.525 --> 00:09:54.085
<00:09:52.525>with <00:09:52.991>our <00:09:53.458>ING <00:09:53.925>component.

151
00:09:55.435 --> 00:09:57.245
<00:09:55.435>Yeah, <00:09:55.668>just <00:09:55.901>to <00:09:56.135>give <00:09:56.368>you <00:09:56.601>the <00:09:56.834>idea,

152
00:09:57.485 --> 00:10:00.325
<00:09:57.485>I <00:09:57.640>won't <00:09:57.796>share <00:09:57.951>my <00:09:58.107>actual <00:09:58.262>data <00:09:58.418>model <00:09:58.573>here <00:09:58.729>with <00:09:58.885>you,

153
00:10:00.785 --> 00:10:04.885
<00:10:00.785>but <00:10:00.925>this <00:10:01.064>is <00:10:01.204>roughly <00:10:01.344>the <00:10:01.485>size <00:10:01.625>of <00:10:01.765>how <00:10:01.905>it <00:10:02.045>looks <00:10:02.185>now.

154
00:10:05.035 --> 00:10:08.125
<00:10:05.035>Five <00:10:05.268>tables <00:10:05.501>and <00:10:05.735>a <00:10:05.968>handful <00:10:06.201>of <00:10:06.435>fields.

155
00:10:08.745 --> 00:10:10.245
<00:10:08.745>How <00:10:09.082>could <00:10:09.420>that <00:10:09.757>have <00:10:10.095>happened?

156
00:10:10.425 --> 00:10:13.805
<00:10:10.425>You <00:10:10.580>saw <00:10:10.736>the <00:10:10.891>other <00:10:11.047>one <00:10:11.202>which <00:10:11.358>was <00:10:11.513>blown <00:10:11.669>quite <00:10:11.824>out

157
00:10:13.865 --> 00:10:14.885
<00:10:13.865>of <00:10:14.783>proportion.

158
00:10:15.745 --> 00:10:18.765
<00:10:15.745>Um, <00:10:16.025>when <00:10:16.305>you <00:10:16.585>look <00:10:16.865>at <00:10:17.145>code,

159
00:10:19.225 --> 00:10:22.005
<00:10:19.225>you <00:10:19.575>will <00:10:19.925>often <00:10:20.275>see <00:10:20.625>code

160
00:10:22.075 --> 00:10:24.805
<00:10:22.075>that <00:10:22.425>seems <00:10:22.775>obsolete <00:10:23.125>or <00:10:23.475>redundant.

161
00:10:25.345 --> 00:10:30.005
<00:10:25.345>And <00:10:25.500>sometimes <00:10:25.656>as <00:10:25.811>a <00:10:25.967>developer <00:10:26.122>it's <00:10:26.278>hard <00:10:26.433>to <00:10:26.589>then <00:10:26.745>say,

162
00:10:30.195 --> 00:10:33.045
<00:10:30.195>okay, <00:10:30.475>I <00:10:30.755>think <00:10:31.035>this <00:10:31.315>can <00:10:31.595>go

163
00:10:33.475 --> 00:10:36.645
<00:10:33.475>because, <00:10:33.755>um, <00:10:34.035>it <00:10:34.315>doesn't <00:10:34.595>feel <00:10:34.875>good

164
00:10:36.705 --> 00:10:40.285
<00:10:36.705>to <00:10:36.905>just <00:10:37.105>delete <00:10:37.305>something <00:10:37.505>which <00:10:37.705>was <00:10:37.905>there <00:10:38.105>before.

165
00:10:41.065 --> 00:10:43.325
<00:10:41.065>But <00:10:41.531>obviously <00:10:41.998>as <00:10:42.465>I,

166
00:10:45.025 --> 00:10:48.605
<00:10:45.025>as <00:10:45.199>I <00:10:45.375>experienced <00:10:45.550>a <00:10:45.725>lot <00:10:45.900>in <00:10:46.074>my <00:10:46.250>career, <00:10:46.425>um,

167
00:10:49.215 --> 00:10:53.005
<00:10:49.215>there <00:10:49.355>is <00:10:49.495>something <00:10:49.635>in <00:10:49.775>the <00:10:49.915>code <00:10:50.055>which <00:10:50.195>is <00:10:50.335>no <00:10:50.475>longer <00:10:50.615>used

168
00:10:53.465 --> 00:10:56.805
<00:10:53.465>or <00:10:53.665>which <00:10:53.865>was <00:10:54.065>blown <00:10:54.265>up <00:10:54.465>to <00:10:54.665>start <00:10:54.865>with.

169
00:10:57.425 --> 00:11:00.805
<00:10:57.425>And <00:10:57.580>I've <00:10:57.736>even <00:10:57.891>came <00:10:58.047>across <00:10:58.202>colleagues <00:10:58.358>who <00:10:58.513>said, <00:10:58.669>oh <00:10:58.824>no,

170
00:11:00.805 --> 00:11:01.965
<00:11:00.805>we <00:11:01.153>can't <00:11:01.501>remove <00:11:01.849>that.

171
00:11:01.985 --> 00:11:04.165
<00:11:01.985>That's <00:11:02.685>optional <00:11:03.385>functionality.

172
00:11:04.615 --> 00:11:07.245
<00:11:04.615>Maybe <00:11:04.790>we <00:11:04.965>will <00:11:05.140>need <00:11:05.315>that <00:11:05.490>someday. <00:11:05.665>No, <00:11:05.840>you <00:11:06.015>won't.

173
00:11:07.625 --> 00:11:10.405
<00:11:07.625>You <00:11:07.858>probably <00:11:08.091>have <00:11:08.325>a <00:11:08.558>version <00:11:08.791>control <00:11:09.025>system

174
00:11:11.105 --> 00:11:15.365
<00:11:11.105>and <00:11:11.305>it's <00:11:11.505>not <00:11:11.705>optional <00:11:11.905>functionality, <00:11:12.105>it's <00:11:12.305>tech <00:11:12.505>depth.

175
00:11:15.705 --> 00:11:20.205
<00:11:15.705>No <00:11:15.860>one <00:11:16.016>uses <00:11:16.171>it <00:11:16.327>may, <00:11:16.482>maybe <00:11:16.638>it <00:11:16.793>isn't <00:11:16.949>even <00:11:17.105>live.

176
00:11:21.235 --> 00:11:25.245
<00:11:21.235>Yeah. <00:11:21.435>But <00:11:21.635>doesn't <00:11:21.835>that <00:11:22.035>look <00:11:22.235>much <00:11:22.435>better <00:11:22.635>now?

177
00:11:26.315 --> 00:11:30.165
<00:11:26.315>Yeah. <00:11:26.490>Don't <00:11:26.665>repeat <00:11:26.840>the, <00:11:27.015>um, <00:11:27.190>mistakes <00:11:27.365>of <00:11:27.540>the <00:11:27.715>past.

178
00:11:30.495 --> 00:11:33.005
<00:11:30.495>Don't <00:11:30.775>write <00:11:31.055>obsolete <00:11:31.335>or <00:11:31.615>redundant <00:11:31.895>code.

179
00:11:34.005 --> 00:11:36.365
<00:11:34.005>Concentrate <00:11:34.285>on <00:11:34.564>your <00:11:34.845>basic <00:11:35.125>use <00:11:35.405>case

180
00:11:36.545 --> 00:11:39.125
<00:11:36.545>and <00:11:36.700>on <00:11:36.856>the <00:11:37.011>basic <00:11:37.167>data <00:11:37.322>you <00:11:37.478>will <00:11:37.633>need <00:11:37.789>for <00:11:37.944>that.

181
00:11:39.505 --> 00:11:42.285
<00:11:39.505>You <00:11:39.738>can <00:11:39.971>always <00:11:40.205>or <00:11:40.438>add <00:11:40.671>something <00:11:40.905>later.

182
00:11:46.415 --> 00:11:50.195
<00:11:46.415>But <00:11:46.615>how <00:11:46.814>exactly <00:11:47.015>did <00:11:47.214>we <00:11:47.415>do <00:11:47.615>this <00:11:47.814>thing?

183
00:11:53.775 --> 00:11:56.615
<00:11:53.775>I <00:11:54.008>have <00:11:54.241>already <00:11:54.475>told <00:11:54.708>you, <00:11:54.941>we've, <00:11:55.175>uh,

184
00:11:56.625 --> 00:11:58.615
<00:11:56.625>built <00:11:57.091>a <00:11:57.558>parallel <00:11:58.025>database

185
00:11:58.765 --> 00:12:01.375
<00:11:58.765>with <00:11:58.965>a <00:11:59.165>new <00:11:59.365>data <00:11:59.564>model <00:11:59.765>in <00:11:59.965>the <00:12:00.165>cloud.

186
00:12:02.715 --> 00:12:04.415
<00:12:02.715>Uh, <00:12:03.065>we <00:12:03.415>used <00:12:03.765>the <00:12:04.115>fact

187
00:12:04.645 --> 00:12:09.055
<00:12:04.645>that <00:12:04.800>the <00:12:04.956>old <00:12:05.111>system <00:12:05.267>already <00:12:05.422>had <00:12:05.578>an <00:12:05.733>eventing <00:12:05.889>mechanism <00:12:06.045>in

188
00:12:09.145 --> 00:12:14.135
<00:12:09.145>place, <00:12:09.300>which <00:12:09.456>happened <00:12:09.611>on <00:12:09.767>average <00:12:09.922>change <00:12:10.078>on <00:12:10.233>the <00:12:10.389>user <00:12:10.545>data.

189
00:12:14.755 --> 00:12:19.095
<00:12:14.755>So <00:12:14.895>every <00:12:15.035>time <00:12:15.175>a <00:12:15.314>user <00:12:15.455>changed <00:12:15.595>a <00:12:15.735>field <00:12:15.875>in <00:12:16.015>this <00:12:16.155>data,

190
00:12:19.675 --> 00:12:21.455
<00:12:19.675>an <00:12:20.141>event <00:12:20.608>was <00:12:21.074>emitted.

191
00:12:21.835 --> 00:12:24.975
<00:12:21.835>But <00:12:21.990>even <00:12:22.146>if <00:12:22.301>you <00:12:22.457>don't <00:12:22.612>have <00:12:22.768>such <00:12:22.923>an <00:12:23.079>eventing <00:12:23.235>system,

192
00:12:25.165 --> 00:12:26.975
<00:12:25.165>it's <00:12:25.444>super <00:12:25.724>easy <00:12:26.005>to <00:12:26.285>write <00:12:26.564>one.

193
00:12:27.195 --> 00:12:30.815
<00:12:27.195>You <00:12:27.395>can <00:12:27.595>either <00:12:27.795>put <00:12:27.995>messaging <00:12:28.195>in <00:12:28.395>the <00:12:28.595>code,

194
00:12:31.235 --> 00:12:34.935
<00:12:31.235>you <00:12:31.435>could <00:12:31.635>use <00:12:31.835>something <00:12:32.035>like <00:12:32.235>database <00:12:32.435>trigger <00:12:32.635>functions

195
00:12:35.115 --> 00:12:39.655
<00:12:35.115>or <00:12:35.255>the <00:12:35.395>like, <00:12:35.535>um, <00:12:35.675>if <00:12:35.815>you <00:12:35.955>have <00:12:36.095>unamo, <00:12:36.235>unamo <00:12:36.375>even <00:12:36.515>comes

196
00:12:39.885 --> 00:12:44.055
<00:12:39.885>with <00:12:40.085>an <00:12:40.285>inbuilt <00:12:40.485>optional <00:12:40.685>kinesis <00:12:40.885>dream <00:12:41.085>for <00:12:41.285>changes.

197
00:12:45.875 --> 00:12:48.245
<00:12:45.875>Yeah. <00:12:46.155>So <00:12:46.435>what <00:12:46.715>we <00:12:46.995>did, <00:12:47.275>uh,

198
00:12:48.625 --> 00:12:53.485
<00:12:48.625>we <00:12:48.780>synced <00:12:48.936>every <00:12:49.091>change <00:12:49.247>on <00:12:49.402>the <00:12:49.558>old <00:12:49.713>data <00:12:49.869>through <00:12:50.025>this

199
00:12:54.125 --> 00:12:57.885
<00:12:54.125>AWS <00:12:54.405>pattern <00:12:54.685>into <00:12:54.965>the <00:12:55.245>new <00:12:55.525>system.

200
00:12:58.505 --> 00:13:02.805
<00:12:58.505>The <00:12:58.645>pattern <00:12:58.785>is <00:12:58.925>also <00:12:59.064>one <00:12:59.205>example <00:12:59.345>for <00:12:59.485>the <00:12:59.625>beauty <00:12:59.765>of <00:12:59.905>services.

201
00:13:03.435 --> 00:13:05.645
<00:13:03.435>It's <00:13:03.785>quite <00:13:04.135>ready <00:13:04.484>to <00:13:04.834>use

202
00:13:06.235 --> 00:13:09.485
<00:13:06.235>because, <00:13:06.468>um, <00:13:06.701>if <00:13:06.935>you <00:13:07.168>have <00:13:07.401>a <00:13:07.635>queue,

203
00:13:09.745 --> 00:13:13.685
<00:13:09.745>in <00:13:09.945>our <00:13:10.145>case <00:13:10.345>it <00:13:10.545>was <00:13:10.745>SQS, <00:13:10.945>which <00:13:11.145>uh,

204
00:13:14.005 --> 00:13:18.125
<00:13:14.005>receives <00:13:14.205>the <00:13:14.405>events <00:13:14.605>with <00:13:14.805>the <00:13:15.005>new <00:13:15.205>data <00:13:15.405>sets,

205
00:13:18.825 --> 00:13:23.205
<00:13:18.825>you <00:13:19.000>can <00:13:19.175>easily <00:13:19.350>configure <00:13:19.525>a <00:13:19.700>lambda <00:13:19.875>as <00:13:20.050>a <00:13:20.225>consumer

206
00:13:23.385 --> 00:13:24.405
<00:13:23.385>of <00:13:23.843>this <00:13:24.303>queue.

207
00:13:24.985 --> 00:13:28.325
<00:13:24.985>And <00:13:25.265>this <00:13:25.545>lambda <00:13:25.825>will <00:13:26.105>then <00:13:26.385>process

208
00:13:28.865 --> 00:13:33.405
<00:13:28.865>all <00:13:29.005>the <00:13:29.145>data <00:13:29.285>changes, <00:13:29.425>which <00:13:29.565>means, <00:13:29.705>um, <00:13:29.845>these <00:13:29.985>will <00:13:30.125>be <00:13:30.265>creates

209
00:13:33.915 --> 00:13:38.285
<00:13:33.915>deletes <00:13:34.115>or <00:13:34.314>updates <00:13:34.515>on <00:13:34.714>your <00:13:34.915>new <00:13:35.115>data <00:13:35.314>base.

210
00:13:39.545 --> 00:13:44.485
<00:13:39.545>So <00:13:39.700>you <00:13:39.856>can't, <00:13:40.011>um, <00:13:40.167>this <00:13:40.322>is <00:13:40.478>not <00:13:40.633>only <00:13:40.789>restricted <00:13:40.944>to

211
00:13:45.035 --> 00:13:48.365
<00:13:45.035>something <00:13:45.235>like <00:13:45.435>we <00:13:45.635>did <00:13:45.834>with <00:13:46.035>a <00:13:46.235>huge <00:13:46.435>monolith,

212
00:13:48.665 --> 00:13:51.365
<00:13:48.665>but <00:13:48.898>in <00:13:49.131>fact, <00:13:49.365>every <00:13:49.598>time <00:13:49.831>I <00:13:50.064>need

213
00:13:51.545 --> 00:13:54.365
<00:13:51.545>to <00:13:51.778>migrate <00:13:52.011>data <00:13:52.245>from <00:13:52.478>A <00:13:52.711>to <00:13:52.944>B,

214
00:13:54.985 --> 00:13:59.445
<00:13:54.985>I'm <00:13:55.185>using <00:13:55.385>something <00:13:55.585>similar <00:13:55.785>with <00:13:55.985>this <00:13:56.185>exact <00:13:56.385>pattern.

215
00:13:59.945 --> 00:14:03.605
<00:13:59.945>And <00:14:00.178>as <00:14:00.411>soon <00:14:00.645>as <00:14:00.878>you <00:14:01.111>have, <00:14:01.345>uh,

216
00:14:04.425 --> 00:14:08.285
<00:14:04.425>the <00:14:04.658>syncing <00:14:04.891>in <00:14:05.125>place, <00:14:05.358>you <00:14:05.591>can <00:14:05.824>then

217
00:14:08.835 --> 00:14:12.045
<00:14:08.835>copy <00:14:09.185>over <00:14:09.535>the <00:14:09.885>remaining <00:14:10.235>data.

218
00:14:13.265 --> 00:14:15.125
<00:14:13.265>Um, <00:14:13.545>if <00:14:13.824>you <00:14:14.105>use <00:14:14.385>a <00:14:14.665>timestamp,

219
00:14:15.665 --> 00:14:20.125
<00:14:15.665>you <00:14:15.820>can <00:14:15.976>decide <00:14:16.131>which <00:14:16.287>event <00:14:16.442>was <00:14:16.598>earlier <00:14:16.753>to <00:14:16.909>not <00:14:17.064>override

220
00:14:20.355 --> 00:14:22.005
<00:14:20.355>what <00:14:20.821>was <00:14:21.288>already <00:14:21.755>synced.

221
00:14:22.835 --> 00:14:27.765
<00:14:22.835>Yeah. <00:14:22.962>And <00:14:23.089>um, <00:14:23.216>if <00:14:23.344>you <00:14:23.471>use <00:14:23.598>Lambda, <00:14:23.725>which <00:14:23.853>is <00:14:23.980>scalable <00:14:24.107>as <00:14:24.235>well,

222
00:14:28.465 --> 00:14:31.565
<00:14:28.465>um, <00:14:28.698>you <00:14:28.931>have <00:14:29.165>the <00:14:29.398>additional <00:14:29.631>benefit, <00:14:29.865>uh,

223
00:14:32.315 --> 00:14:37.045
<00:14:32.315>that <00:14:32.455>even <00:14:32.595>our <00:14:32.735>6 <00:14:32.875>million <00:14:33.015>users <00:14:33.155>weren't <00:14:33.295>hard <00:14:33.435>to <00:14:33.575>copy <00:14:33.715>over

224
00:14:37.045 --> 00:14:40.325
<00:14:37.045>because <00:14:37.324>we <00:14:37.604>use <00:14:37.885>this <00:14:38.165>exact <00:14:38.444>structure.

225
00:14:44.345 --> 00:14:48.725
<00:14:44.345>So, <00:14:44.811>Um, <00:14:45.278>I <00:14:45.745>really

226
00:14:49.435 --> 00:14:51.925
<00:14:49.435>like <00:14:49.714>the <00:14:49.994>approach <00:14:50.275>to <00:14:50.555>use <00:14:50.834>services

227
00:14:52.945 --> 00:14:57.125
<00:14:52.945>and <00:14:53.178>the <00:14:53.411>next <00:14:53.645>logical <00:14:53.878>thought <00:14:54.111>about <00:14:54.345>that

228
00:14:57.745 --> 00:15:02.645
<00:14:57.745>was <00:14:57.900>that <00:14:58.056>we <00:14:58.211>would <00:14:58.367>like <00:14:58.522>to <00:14:58.678>use <00:14:58.833>a <00:14:58.989>complete <00:14:59.145>software

229
00:15:02.705 --> 00:15:05.885
<00:15:02.705>as <00:15:02.905>a <00:15:03.105>service <00:15:03.305>to <00:15:03.505>replace <00:15:03.705>one <00:15:03.905>of <00:15:04.105>the

230
00:15:07.405 --> 00:15:12.085
<00:15:07.405>responsibilities <00:15:07.638>of <00:15:07.871>our <00:15:08.105>former <00:15:08.338>system <00:15:08.571>enter <00:15:08.805>uri.

231
00:15:12.665 --> 00:15:15.405
<00:15:12.665>Um, <00:15:13.365>so <00:15:14.064>authenticating

232
00:15:15.545 --> 00:15:19.485
<00:15:15.545>and <00:15:15.719>authorizing <00:15:15.895>users <00:15:16.069>is <00:15:16.245>a <00:15:16.420>super <00:15:16.594>critical <00:15:16.770>use <00:15:16.944>case.

233
00:15:19.985 --> 00:15:22.525
<00:15:19.985>You <00:15:20.218>want <00:15:20.451>the <00:15:20.685>knowledge <00:15:20.918>of <00:15:21.151>experts <00:15:21.385>here.

234
00:15:22.865 --> 00:15:26.685
<00:15:22.865>You <00:15:23.005>will <00:15:23.145>never <00:15:23.285>be <00:15:23.425>able <00:15:23.565>with <00:15:23.705>a <00:15:23.845>small <00:15:23.985>team <00:15:24.125>of <00:15:24.265>engineers

235
00:15:26.825 --> 00:15:31.085
<00:15:26.825>to <00:15:27.175>build <00:15:27.525>something <00:15:27.875>equally <00:15:28.225>mature

236
00:15:31.635 --> 00:15:34.765
<00:15:31.635>with <00:15:31.835>just <00:15:32.035>your <00:15:32.235>small <00:15:32.435>team <00:15:32.635>main, <00:15:32.835>maintain <00:15:33.035>it

237
00:15:34.765 --> 00:15:37.125
<00:15:34.765>with <00:15:35.045>all <00:15:35.324>the <00:15:35.605>technical <00:15:35.885>changes <00:15:36.165>happening,

238
00:15:37.385 --> 00:15:41.685
<00:15:37.385>new <00:15:37.560>authentication <00:15:37.735>methods, <00:15:37.910>pass <00:15:38.085>keys, <00:15:38.260>I <00:15:38.435>don't <00:15:38.610>know <00:15:38.785>what.

239
00:15:43.025 --> 00:15:44.885
<00:15:43.025>So <00:15:43.305>we <00:15:43.584>had <00:15:43.865>all <00:15:44.145>the <00:15:44.425>um,

240
00:15:47.145 --> 00:15:51.405
<00:15:47.145>all <00:15:47.261>the <00:15:47.378>flows <00:15:47.495>ready <00:15:47.611>to <00:15:47.728>go <00:15:47.845>as <00:15:47.961>soon <00:15:48.078>as <00:15:48.194>we <00:15:48.311>decided <00:15:48.428>to <00:15:48.545>have

241
00:15:52.165 --> 00:15:55.605
<00:15:52.165>URI <00:15:52.320>as <00:15:52.476>a <00:15:52.631>backend <00:15:52.787>for <00:15:52.942>user <00:15:53.098>flows, <00:15:53.253>we <00:15:53.409>just <00:15:53.564>had

242
00:15:55.605 --> 00:15:59.205
<00:15:55.605>to <00:15:55.805>configure <00:15:56.005>the <00:15:56.205>project <00:15:56.405>on <00:15:56.605>the <00:15:56.805>platform, <00:15:57.005>um,

243
00:15:59.955 --> 00:16:04.405
<00:15:59.955>find <00:16:00.130>our <00:16:00.305>way <00:16:00.480>around <00:16:00.655>it <00:16:00.830>by <00:16:01.005>using <00:16:01.180>the <00:16:01.355>inbuilt

244
00:16:04.935 --> 00:16:06.725
<00:16:04.935>front <00:16:05.635>end <00:16:06.334>first.

245
00:16:06.985 --> 00:16:11.165
<00:16:06.985>But <00:16:07.125>then <00:16:07.265>we <00:16:07.405>uh, <00:16:07.545>even <00:16:07.685>wrote <00:16:07.825>our <00:16:07.965>own <00:16:08.105>custom <00:16:08.245>front <00:16:08.385>end

246
00:16:11.265 --> 00:16:13.285
<00:16:11.265>and <00:16:11.465>just <00:16:11.665>used <00:16:11.865>ORI <00:16:12.064>as <00:16:12.265>a <00:16:12.465>back <00:16:12.665>end.

247
00:16:17.765 --> 00:16:20.425
<00:16:17.765>We <00:16:17.998>completed <00:16:18.231>our <00:16:18.465>new <00:16:18.698>system <00:16:18.931>with <00:16:19.165>our

248
00:16:21.225 --> 00:16:22.825
<00:16:21.225>provisioning <00:16:22.625>component

249
00:16:23.285 --> 00:16:28.105
<00:16:23.285>and <00:16:23.518>we, <00:16:23.751>since <00:16:23.985>we <00:16:24.218>split <00:16:24.451>up <00:16:24.685>onto

250
00:16:28.815 --> 00:16:33.465
<00:16:28.815>microservices, <00:16:29.048>what <00:16:29.281>was <00:16:29.515>formerly <00:16:29.748>a <00:16:29.981>persistence <00:16:30.215>service

251
00:16:33.875 --> 00:16:38.385
<00:16:33.875>class <00:16:34.015>in <00:16:34.155>the <00:16:34.295>middle <00:16:34.435>of <00:16:34.575>the <00:16:34.715>monolith, <00:16:34.855>we <00:16:34.995>were <00:16:35.135>able <00:16:35.275>to

252
00:16:39.255 --> 00:16:42.865
<00:16:39.255>establish <00:16:39.535>a <00:16:39.814>mature <00:16:40.095>level <00:16:40.375>of <00:16:40.655>control

253
00:16:43.125 --> 00:16:44.945
<00:16:43.125>around <00:16:43.591>our <00:16:44.058>new <00:16:44.525>components.

254
00:16:45.805 --> 00:16:50.745
<00:16:45.805>So <00:16:45.979>authentication <00:16:46.155>can <00:16:46.329>be <00:16:46.505>done, <00:16:46.680>uh, <00:16:46.854>on <00:16:47.030>network, <00:16:47.204>network,

255
00:16:51.165 --> 00:16:54.945
<00:16:51.165>on <00:16:51.444>paths, <00:16:51.724>on <00:16:52.005>rights, <00:16:52.285>on <00:16:52.564>token,

256
00:16:55.405 --> 00:16:57.105
<00:16:55.405>or <00:16:56.105>even <00:16:56.805>field-based.

257
00:16:57.925 --> 00:17:00.665
<00:16:57.925>And <00:16:58.204>that's <00:16:58.484>the <00:16:58.765>beauty <00:16:59.045>of <00:16:59.324>microservices

258
00:17:00.775 --> 00:17:05.465
<00:17:00.775>that <00:17:00.949>you <00:17:01.125>can <00:17:01.300>wrap <00:17:01.475>the <00:17:01.650>exact <00:17:01.824>level <00:17:02.000>of <00:17:02.175>control

259
00:17:05.525 --> 00:17:07.785
<00:17:05.525>and <00:17:05.805>security <00:17:06.085>you <00:17:06.365>need <00:17:06.645>around <00:17:06.925>them.

260
00:17:09.345 --> 00:17:12.965
<00:17:09.345>We <00:17:09.545>began <00:17:09.745>then <00:17:09.944>to <00:17:10.145>use <00:17:10.345>our <00:17:10.545>new <00:17:10.745>system

261
00:17:13.665 --> 00:17:17.285
<00:17:13.665>for <00:17:13.898>lead <00:17:14.131>requests <00:17:14.365>from <00:17:14.598>other <00:17:14.831>teams, <00:17:15.065>partners

262
00:17:18.105 --> 00:17:22.205
<00:17:18.105>and <00:17:18.280>um, <00:17:18.454>all <00:17:18.630>use <00:17:18.805>cases <00:17:18.980>which <00:17:19.155>needed <00:17:19.329>the <00:17:19.505>data,

263
00:17:22.385 --> 00:17:24.005
<00:17:22.385>but <00:17:22.665>eat <00:17:22.944>your <00:17:23.224>own <00:17:23.504>dog <00:17:23.785>food.

264
00:17:24.505 --> 00:17:27.285
<00:17:24.505>So <00:17:24.785>first <00:17:25.065>consume <00:17:25.345>the <00:17:25.625>stuff <00:17:25.905>yourself

265
00:17:27.585 --> 00:17:29.805
<00:17:27.585>before <00:17:27.818>you <00:17:28.051>onboard <00:17:28.285>other <00:17:28.518>teams <00:17:28.751>on <00:17:28.985>it

266
00:17:29.805 --> 00:17:31.925
<00:17:29.805>to <00:17:30.085>make <00:17:30.365>sure <00:17:30.645>everything's <00:17:30.925>working <00:17:31.205>properly.

267
00:17:32.915 --> 00:17:37.245
<00:17:32.915>Yeah. <00:17:34.315>Finally

268
00:17:37.825 --> 00:17:38.925
<00:17:37.825>the <00:17:38.320>switch <00:17:38.815>over.

269
00:17:40.195 --> 00:17:44.285
<00:17:40.195>What <00:17:40.370>were <00:17:40.544>the <00:17:40.720>preconditions <00:17:40.895>to <00:17:41.070>do? <00:17:41.245>So <00:17:41.419>not <00:17:41.595>much.

270
00:17:44.745 --> 00:17:49.085
<00:17:44.745>We <00:17:44.900>had <00:17:45.056>both <00:17:45.211>login <00:17:45.367>systems <00:17:45.522>running <00:17:45.678>in <00:17:45.833>parallel, <00:17:45.989>old <00:17:46.145>system

271
00:17:49.545 --> 00:17:51.965
<00:17:49.545>and <00:17:49.895>new <00:17:50.245>system, <00:17:50.595>old <00:17:50.945>system

272
00:17:52.975 --> 00:17:56.205
<00:17:52.975>constantly <00:17:53.254>sinking <00:17:53.534>data <00:17:53.814>to <00:17:54.094>new <00:17:54.375>source,

273
00:17:56.315 --> 00:17:58.845
<00:17:56.315>same <00:17:56.595>user <00:17:56.875>data <00:17:57.155>on <00:17:57.435>both <00:17:57.715>sides.

274
00:17:59.235 --> 00:18:01.885
<00:17:59.235>Reading <00:17:59.514>requests <00:17:59.794>from <00:18:00.074>the <00:18:00.354>new <00:18:00.635>system

275
00:18:02.545 --> 00:18:04.685
<00:18:02.545>in <00:18:02.825>place <00:18:03.105>for <00:18:03.385>the <00:18:03.665>go <00:18:03.945>live.

276
00:18:05.065 --> 00:18:07.805
<00:18:05.065>We <00:18:05.345>then <00:18:05.625>did <00:18:05.905>uh, <00:18:06.185>two <00:18:06.465>steps.

277
00:18:08.785 --> 00:18:13.685
<00:18:08.785>The <00:18:08.912>first <00:18:09.039>was <00:18:09.166>a <00:18:09.294>FA <00:18:09.421>phase <00:18:09.548>rollout <00:18:09.675>of <00:18:09.803>the <00:18:09.930>new <00:18:10.057>login <00:18:10.185>solution

278
00:18:14.655 --> 00:18:19.605
<00:18:14.655>means <00:18:14.830>we <00:18:15.004>took <00:18:15.180>one <00:18:15.355>day <00:18:15.530>to <00:18:15.705>go <00:18:15.879>from <00:18:16.055>2%

279
00:18:19.705 --> 00:18:24.565
<00:18:19.705>to <00:18:19.832>a <00:18:19.959>hundred <00:18:20.086>percent <00:18:20.214>of <00:18:20.341>the <00:18:20.468>users <00:18:20.595>being <00:18:20.723>on <00:18:20.850>the <00:18:20.977>new <00:18:21.105>system.

280
00:18:25.745 --> 00:18:27.205
<00:18:25.745>And <00:18:26.183>the <00:18:26.620>second <00:18:27.059>step,

281
00:18:27.905 --> 00:18:30.925
<00:18:27.905>and <00:18:28.138>now <00:18:28.371>you <00:18:28.605>uh, <00:18:28.838>need <00:18:29.071>to <00:18:29.305>understand

282
00:18:30.925 --> 00:18:34.685
<00:18:30.925>that <00:18:31.080>this <00:18:31.236>is <00:18:31.391>a <00:18:31.547>landmark <00:18:31.702>in <00:18:31.858>the <00:18:32.013>complete <00:18:32.169>migration <00:18:32.325>process,

283
00:18:36.025 --> 00:18:39.005
<00:18:36.025>we <00:18:36.305>switched <00:18:36.585>on <00:18:36.865>the <00:18:37.145>new <00:18:37.425>register

284
00:18:40.505 --> 00:18:45.365
<00:18:40.505>and <00:18:40.785>simultaneously <00:18:41.065>send <00:18:41.345>the <00:18:41.625>writing <00:18:41.905>requests

285
00:18:45.505 --> 00:18:46.685
<00:18:45.505>to <00:18:45.859>the <00:18:46.213>new <00:18:46.567>system.

286
00:18:47.265 --> 00:18:50.685
<00:18:47.265>So <00:18:47.440>what <00:18:47.615>happened <00:18:47.790>there <00:18:47.965>is <00:18:48.140>that <00:18:48.315>your <00:18:48.490>single <00:18:48.665>source

287
00:18:50.825 --> 00:18:52.045
<00:18:50.825>of <00:18:51.374>truth <00:18:51.923>changes.

288
00:18:52.745 --> 00:18:54.325
<00:18:52.745>And <00:18:52.978>this <00:18:53.211>is <00:18:53.445>a <00:18:53.678>point <00:18:53.911>you <00:18:54.145>want

289
00:18:54.325 --> 00:18:57.645
<00:18:54.325>to <00:18:54.480>keep <00:18:54.636>in <00:18:54.791>mind <00:18:54.947>when <00:18:55.102>designing <00:18:55.258>a <00:18:55.413>process <00:18:55.569>like <00:18:55.725>that.

290
00:18:58.505 --> 00:19:01.725
<00:18:58.505>Uh, <00:18:58.645>when <00:18:58.785>you <00:18:58.925>do <00:18:59.065>that, <00:18:59.205>what <00:18:59.345>are <00:18:59.485>the <00:18:59.625>conditions <00:18:59.765>for <00:18:59.905>it?

291
00:19:01.955 --> 00:19:06.525
<00:19:01.955>Because <00:19:02.095>from <00:19:02.235>there <00:19:02.375>it <00:19:02.514>is <00:19:02.655>not <00:19:02.794>really <00:19:02.935>easy <00:19:03.074>to <00:19:03.215>go <00:19:03.355>back.

292
00:19:06.825 --> 00:19:11.245
<00:19:06.825>Uh, <00:19:06.980>you <00:19:07.136>could <00:19:07.291>invest <00:19:07.447>time <00:19:07.602>to <00:19:07.758>um, <00:19:07.913>have <00:19:08.069>a <00:19:08.225>backup

293
00:19:11.805 --> 00:19:13.485
<00:19:11.805>strategy <00:19:12.271>or <00:19:12.738>rollback <00:19:13.205>strategy.

294
00:19:14.385 --> 00:19:17.845
<00:19:14.385>Um, <00:19:14.540>but <00:19:14.696>we <00:19:14.851>didn't <00:19:15.007>do <00:19:15.162>so <00:19:15.318>because <00:19:15.473>we <00:19:15.629>were <00:19:15.785>bold.

295
00:19:18.415 --> 00:19:20.085
<00:19:18.415>Login <00:19:18.881>went <00:19:19.348>super <00:19:19.815>easy

296
00:19:20.545 --> 00:19:23.685
<00:19:20.545>and <00:19:20.778>we <00:19:21.011>were <00:19:21.245>just <00:19:21.478>confident <00:19:21.711>that, <00:19:21.945>uh,

297
00:19:23.875 --> 00:19:25.405
<00:19:23.875>what <00:19:24.150>we <00:19:24.425>thought <00:19:24.701>of <00:19:24.976>would <00:19:25.252>work.

298
00:19:26.555 --> 00:19:28.925
<00:19:26.555>Yeah. <00:19:27.021>So <00:19:27.488>no <00:19:27.955>downtime.

299
00:19:29.465 --> 00:19:33.485
<00:19:29.465>The <00:19:29.605>users <00:19:29.745>didn't <00:19:29.885>even <00:19:30.024>recognize <00:19:30.165>that <00:19:30.304>we <00:19:30.445>took <00:19:30.584>the <00:19:30.725>old <00:19:30.865>system

300
00:19:33.495 --> 00:19:35.965
<00:19:33.495>underneath <00:19:33.669>the <00:19:33.844>way <00:19:34.020>and <00:19:34.195>gave <00:19:34.370>them <00:19:34.544>a <00:19:34.719>new <00:19:34.895>one.

301
00:19:36.995 --> 00:19:40.645
<00:19:36.995>What <00:19:37.150>was <00:19:37.306>left <00:19:37.461>was <00:19:37.617>to <00:19:37.772>tear <00:19:37.928>the <00:19:38.083>old <00:19:38.239>system <00:19:38.395>down.

302
00:19:40.835 --> 00:19:42.445
<00:19:40.835>Very <00:19:41.115>good <00:19:41.395>feeling <00:19:41.675>I <00:19:41.955>tell <00:19:42.235>you,

303
00:19:42.945 --> 00:19:45.405
<00:19:42.945>and <00:19:43.411>to <00:19:43.878>destroy <00:19:44.345>temporary

304
00:19:46.005 --> 00:19:48.365
<00:19:46.005>software <00:19:46.355>like <00:19:46.705>the <00:19:47.055>sinking <00:19:47.405>component.

305
00:19:49.945 --> 00:19:53.485
<00:19:49.945>Um, <00:19:50.645>but <00:19:51.345>more

306
00:19:53.955 --> 00:19:55.685
<00:19:53.955>what <00:19:54.235>did <00:19:54.514>we <00:19:54.794>learn <00:19:55.074>from <00:19:55.355>that

307
00:19:56.825 --> 00:20:00.685
<00:19:56.825>and <00:19:57.105>how <00:19:57.385>did <00:19:57.665>we <00:19:57.945>enable <00:19:58.225>ourselves

308
00:20:00.865 --> 00:20:02.965
<00:20:00.865>to <00:20:01.145>even <00:20:01.425>do <00:20:01.705>such <00:20:01.985>a <00:20:02.265>project?

309
00:20:03.795 --> 00:20:05.605
<00:20:03.795>What <00:20:04.075>were <00:20:04.355>the <00:20:04.635>problems <00:20:04.915>and <00:20:05.195>why?

310
00:20:06.745 --> 00:20:10.765
<00:20:06.745>Um, <00:20:06.978>the <00:20:07.211>problem <00:20:07.445>when <00:20:07.678>doing <00:20:07.911>the <00:20:08.145>monolith

311
00:20:10.825 --> 00:20:13.765
<00:20:10.825>and <00:20:11.025>while <00:20:11.225>doing, <00:20:11.425>working <00:20:11.625>with <00:20:11.825>the <00:20:12.025>monolith, <00:20:12.225>uh,

312
00:20:13.765 --> 00:20:15.405
<00:20:13.765>it <00:20:13.998>took <00:20:14.231>a <00:20:14.465>long <00:20:14.698>time <00:20:14.931>to <00:20:15.165>implement.

313
00:20:15.905 --> 00:20:19.165
<00:20:15.905>We <00:20:16.138>had <00:20:16.371>lots <00:20:16.605>of <00:20:16.838>custom <00:20:17.071>code <00:20:17.305>testing

314
00:20:19.465 --> 00:20:21.645
<00:20:19.465>and <00:20:19.814>maintaining <00:20:20.165>was <00:20:20.514>a <00:20:20.865>drag

315
00:20:22.545 --> 00:20:26.085
<00:20:22.545>and <00:20:22.778>no <00:20:23.011>courageous <00:20:23.245>design <00:20:23.478>decisions <00:20:23.711>were <00:20:23.945>done.

316
00:20:28.825 --> 00:20:32.245
<00:20:28.825>We <00:20:29.025>decided <00:20:29.225>to <00:20:29.425>solve <00:20:29.625>these <00:20:29.825>problems <00:20:30.025>with <00:20:30.225>paradigms.

317
00:20:32.425 --> 00:20:37.125
<00:20:32.425>We <00:20:32.580>as <00:20:32.736>a <00:20:32.891>team <00:20:33.047>embrace <00:20:33.202>and <00:20:33.358>doing <00:20:33.513>our <00:20:33.669>daily <00:20:33.825>work

318
00:20:37.225 --> 00:20:38.285
<00:20:37.225>and <00:20:37.463>we <00:20:37.702>live <00:20:37.940>by <00:20:38.179>them.

319
00:20:39.145 --> 00:20:41.885
<00:20:39.145>So <00:20:39.378>if <00:20:39.611>your <00:20:39.845>implementation <00:20:40.078>takes <00:20:40.311>too <00:20:40.545>long,

320
00:20:43.105 --> 00:20:45.405
<00:20:43.105>new <00:20:43.455>components <00:20:43.805>are <00:20:44.155>too <00:20:44.505>expensive,

321
00:20:46.395 --> 00:20:47.965
<00:20:46.395>have <00:20:46.628>a <00:20:46.861>look <00:20:47.095>at <00:20:47.328>the <00:20:47.561>tech <00:20:47.795>stack.

322
00:20:48.785 --> 00:20:52.245
<00:20:48.785>Um, <00:20:48.912>you <00:20:49.039>want <00:20:49.166>to <00:20:49.294>be <00:20:49.421>able <00:20:49.548>to <00:20:49.675>ramp <00:20:49.803>up <00:20:49.930>quickly, <00:20:50.057>you <00:20:50.185>want

323
00:20:52.245 --> 00:20:53.645
<00:20:52.245>to <00:20:52.496>be <00:20:52.749>able <00:20:53.001>to <00:20:53.253>write <00:20:53.504>quickly.

324
00:20:54.625 --> 00:20:57.885
<00:20:54.625>Uh, <00:20:54.825>you <00:20:55.025>want <00:20:55.225>to <00:20:55.425>write <00:20:55.625>temporary <00:20:55.825>co <00:20:56.025>code

325
00:20:57.915 --> 00:20:59.045
<00:20:57.915>that <00:20:58.254>doesn't <00:20:58.593>hurt <00:20:58.932>you.

326
00:20:59.225 --> 00:21:00.605
<00:20:59.225>You <00:20:59.473>can <00:20:59.721>throw <00:20:59.970>it <00:21:00.218>away <00:21:00.467>after,

327
00:21:00.825 --> 00:21:04.405
<00:21:00.825>but <00:21:00.965>your <00:21:01.105>effort <00:21:01.245>was <00:21:01.385>wasn't <00:21:01.525>that <00:21:01.665>huge <00:21:01.805>so <00:21:01.945>it <00:21:02.085>doesn't <00:21:02.225>hurt.

328
00:21:05.385 --> 00:21:08.125
<00:21:05.385>Um, <00:21:06.785>yeah.

329
00:21:08.225 --> 00:21:10.925
<00:21:08.225>So <00:21:08.458>who <00:21:08.691>is <00:21:08.925>already <00:21:09.158>using <00:21:09.391>a <00:21:09.625>complete

330
00:21:10.995 --> 00:21:12.685
<00:21:10.995>cloud-based <00:21:12.395>infrastructure?

331
00:21:13.025 --> 00:21:16.165
<00:21:13.025>Please <00:21:13.375>raise <00:21:13.725>your <00:21:14.075>hands. <00:21:14.425>Okay.

332
00:21:16.745 --> 00:21:18.925
<00:21:16.745>Who <00:21:16.919>of <00:21:17.094>you <00:21:17.270>is <00:21:17.445>doing <00:21:17.620>Java <00:21:17.794>in <00:21:17.969>the <00:21:18.145>cloud?

333
00:21:20.775 --> 00:21:24.865
<00:21:20.775>Okay, <00:21:21.008>so <00:21:21.241>um, <00:21:21.475>have <00:21:21.708>a <00:21:21.941>look <00:21:22.175>at

334
00:21:25.445 --> 00:21:28.585
<00:21:25.445>QoS <00:21:25.645>framework <00:21:25.845>if <00:21:26.044>you <00:21:26.245>didn't <00:21:26.445>already <00:21:26.645>do <00:21:26.845>so.

335
00:21:29.085 --> 00:21:31.625
<00:21:29.085>QoS <00:21:29.285>for <00:21:29.485>us <00:21:29.685>was <00:21:29.885>an <00:21:30.085>absolute <00:21:30.285>game <00:21:30.485>changer

336
00:21:32.645 --> 00:21:34.865
<00:21:32.645>and <00:21:32.925>um, <00:21:33.205>we <00:21:33.485>were <00:21:33.764>able <00:21:34.045>to

337
00:21:35.665 --> 00:21:38.625
<00:21:35.665>decrease <00:21:36.014>our <00:21:36.365>implementation <00:21:36.715>time <00:21:37.065>drastically

338
00:21:38.845 --> 00:21:41.545
<00:21:38.845>and <00:21:39.045>use <00:21:39.245>features <00:21:39.445>like <00:21:39.645>alumni <00:21:39.845>in <00:21:40.045>the <00:21:40.245>cloud,

339
00:21:41.755 --> 00:21:45.185
<00:21:41.755>which <00:21:41.955>wasn't <00:21:42.155>possible <00:21:42.355>with <00:21:42.555>other <00:21:42.755>Java <00:21:42.955>frameworks <00:21:43.155>before.

340
00:21:45.845 --> 00:21:47.345
<00:21:45.845>So <00:21:46.295>yay <00:21:46.745>for <00:21:47.195>QoS.

341
00:21:48.805 --> 00:21:52.985
<00:21:48.805>Um, <00:21:48.932>you <00:21:49.059>already <00:21:49.186>know <00:21:49.314>by <00:21:49.441>now, <00:21:49.568>uh, <00:21:49.695>that <00:21:49.823>I'm <00:21:49.950>a <00:21:50.077>huge <00:21:50.205>fan

342
00:21:52.985 --> 00:21:54.305
<00:21:52.985>of <00:21:53.380>the <00:21:53.777>service <00:21:54.173>approach.

343
00:21:55.205 --> 00:22:00.025
<00:21:55.205>Um, <00:21:55.485>because <00:21:55.764>in <00:21:56.044>my <00:21:56.324>experience, <00:21:56.605>uh,

344
00:22:00.585 --> 00:22:03.225
<00:22:00.585>engineering <00:22:00.818>has <00:22:01.051>changed <00:22:01.285>over <00:22:01.518>the <00:22:01.751>last <00:22:01.985>decade.

345
00:22:03.845 --> 00:22:07.505
<00:22:03.845>You <00:22:04.045>don't <00:22:04.245>have <00:22:04.445>these <00:22:04.645>huge <00:22:04.845>standing <00:22:05.045>teams <00:22:05.245>anymore

346
00:22:07.635 --> 00:22:11.145
<00:22:07.635>where <00:22:07.790>you <00:22:07.946>build <00:22:08.101>lots <00:22:08.257>of <00:22:08.412>custom <00:22:08.568>software <00:22:08.723>on <00:22:08.879>your <00:22:09.035>own.

347
00:22:11.565 --> 00:22:14.305
<00:22:11.565>You <00:22:11.765>are <00:22:11.965>just <00:22:12.165>a <00:22:12.365>handful <00:22:12.565>of <00:22:12.765>engineers <00:22:12.965>now

348
00:22:14.805 --> 00:22:19.745
<00:22:14.805>and <00:22:14.945>I <00:22:15.085>think <00:22:15.225>to <00:22:15.365>design <00:22:15.505>a <00:22:15.645>landscape <00:22:15.785>where <00:22:15.925>you <00:22:16.065>use <00:22:16.205>ready

349
00:22:19.885 --> 00:22:22.385
<00:22:19.885>to <00:22:20.165>use <00:22:20.445>services, <00:22:20.725>stick <00:22:21.004>them <00:22:21.285>together

350
00:22:22.805 --> 00:22:25.265
<00:22:22.805>and <00:22:23.005>write <00:22:23.205>the <00:22:23.405>glue <00:22:23.605>code <00:22:23.805>to <00:22:24.005>connect <00:22:24.205>them.

351
00:22:25.375 --> 00:22:27.025
<00:22:25.375>This <00:22:25.841>is <00:22:26.308>modern <00:22:26.775>engineering

352
00:22:27.085 --> 00:22:30.225
<00:22:27.085>and <00:22:27.260>you <00:22:27.435>will <00:22:27.610>still <00:22:27.785>have <00:22:27.960>enough <00:22:28.135>code <00:22:28.310>to <00:22:28.485>write

353
00:22:30.565 --> 00:22:34.065
<00:22:30.565>for <00:22:30.740>some <00:22:30.915>custom <00:22:31.090>stuff <00:22:31.265>and <00:22:31.440>for <00:22:31.615>gluing <00:22:31.790>them <00:22:31.965>together.

354
00:22:34.935 --> 00:22:36.985
<00:22:34.935>Yeah, <00:22:35.215>write <00:22:35.495>code <00:22:35.774>is <00:22:36.054>read <00:22:36.335>code

355
00:22:37.485 --> 00:22:41.785
<00:22:37.485>and <00:22:37.625>if <00:22:37.764>you <00:22:37.905>use <00:22:38.044>services <00:22:38.185>consistently, <00:22:38.324>you <00:22:38.465>will <00:22:38.604>be <00:22:38.745>able <00:22:38.885>to

356
00:22:42.305 --> 00:22:45.505
<00:22:42.305>recognize <00:22:42.655>patterns <00:22:43.005>faster <00:22:43.355>as <00:22:43.705>well

357
00:22:45.505 --> 00:22:46.865
<00:22:45.505>as <00:22:45.811>your <00:22:46.117>colleagues <00:22:46.423>will <00:22:46.729>do.

358
00:22:46.925 --> 00:22:50.625
<00:22:46.925>You <00:22:47.100>will <00:22:47.274>be <00:22:47.450>able <00:22:47.625>to <00:22:47.800>onboard <00:22:47.975>new <00:22:48.149>colleagues <00:22:48.325>easier

359
00:22:51.015 --> 00:22:53.065
<00:22:51.015>because <00:22:51.295>they <00:22:51.575>don't <00:22:51.855>have <00:22:52.135>to <00:22:52.415>go

360
00:22:53.065 --> 00:22:55.985
<00:22:53.065>through <00:22:53.298>your <00:22:53.531>custom <00:22:53.765>code <00:22:53.998>forever <00:22:54.231>to <00:22:54.465>understand

361
00:22:55.985 --> 00:22:57.225
<00:22:55.985>what <00:22:56.357>is <00:22:56.728>happening <00:22:57.101>there.

362
00:22:57.255 --> 00:23:00.305
<00:22:57.255>They <00:22:57.455>will <00:22:57.655>instantly <00:22:57.855>recognize <00:22:58.055>what <00:22:58.255>is <00:22:58.455>happening <00:22:58.655>there.

363
00:23:00.405 --> 00:23:03.025
<00:23:00.405>And <00:23:00.605>last <00:23:00.805>but <00:23:01.004>not <00:23:01.205>least, <00:23:01.405>your <00:23:01.605>own <00:23:01.805>skillset.

364
00:23:03.805 --> 00:23:08.385
<00:23:03.805>So <00:23:03.960>no <00:23:04.116>employer, <00:23:04.271>no <00:23:04.427>future <00:23:04.582>employer <00:23:04.738>ever <00:23:04.893>said, <00:23:05.049>oh <00:23:05.205>great

365
00:23:08.385 --> 00:23:11.745
<00:23:08.385>that <00:23:08.525>you <00:23:08.665>know <00:23:08.805>all <00:23:08.945>the <00:23:09.085>custom <00:23:09.225>code <00:23:09.365>of <00:23:09.504>your <00:23:09.645>current <00:23:09.785>employer

366
00:23:11.885 --> 00:23:14.625
<00:23:11.885>but <00:23:12.085>nothing <00:23:12.285>else <00:23:12.485>you <00:23:12.685>want <00:23:12.885>to <00:23:13.085>do <00:23:13.285>services.

367
00:23:14.735 --> 00:23:19.425
<00:23:14.735>This. <00:23:15.435>Another <00:23:16.135>problem

368
00:23:19.805 --> 00:23:22.385
<00:23:19.805>was <00:23:20.271>huge <00:23:20.738>test <00:23:21.205>suits.

369
00:23:23.085 --> 00:23:26.625
<00:23:23.085>So <00:23:23.240>by <00:23:23.396>now <00:23:23.551>we <00:23:23.707>just <00:23:23.862>do <00:23:24.018>basic <00:23:24.173>testing <00:23:24.329>in <00:23:24.485>the

370
00:23:26.905 --> 00:23:28.385
<00:23:26.905>pipeline <00:23:27.571>unit <00:23:28.237>based.

371
00:23:28.645 --> 00:23:30.785
<00:23:28.645>Mostly <00:23:29.111>we <00:23:29.578>don't, <00:23:30.045>um,

372
00:23:31.815 --> 00:23:34.625
<00:23:31.815>provide <00:23:32.165>a <00:23:32.515>complete <00:23:32.865>integration <00:23:33.215>step

373
00:23:35.235 --> 00:23:38.145
<00:23:35.235>stage <00:23:35.514>over <00:23:35.794>all <00:23:36.074>teams <00:23:36.354>and <00:23:36.635>borders

374
00:23:38.375 --> 00:23:42.425
<00:23:38.375>because <00:23:38.515>with <00:23:38.655>the <00:23:38.795>landscape <00:23:38.935>our <00:23:39.075>size, <00:23:39.215>you <00:23:39.355>just <00:23:39.495>want <00:23:39.635>to <00:23:39.775>be,

375
00:23:42.645 --> 00:23:46.845
<00:23:42.645>um, <00:23:42.845>able <00:23:43.045>to <00:23:43.245>maintain <00:23:43.445>consistent <00:23:43.645>data <00:23:43.845>for <00:23:44.045>all

376
00:23:46.845 --> 00:23:47.845
<00:23:46.845>of <00:23:47.295>these <00:23:47.745>players.

377
00:23:48.385 --> 00:23:50.565
<00:23:48.385>We <00:23:48.735>only <00:23:49.085>test <00:23:49.435>against <00:23:49.785>production,

378
00:23:50.855 --> 00:23:54.765
<00:23:50.855>which <00:23:51.030>means <00:23:51.205>if <00:23:51.380>component <00:23:51.555>A <00:23:51.730>speaks <00:23:51.905>to <00:23:52.080>component <00:23:52.255>B

379
00:23:54.765 --> 00:23:57.965
<00:23:54.765>and <00:23:54.965>C <00:23:55.165>in <00:23:55.365>the <00:23:55.565>pipeline <00:23:55.765>of <00:23:55.965>component <00:23:56.165>a,

380
00:23:57.965 --> 00:24:00.205
<00:23:57.965>component <00:23:58.245>A <00:23:58.524>is <00:23:58.804>on <00:23:59.084>tests <00:23:59.365>stage.

381
00:24:00.545 --> 00:24:04.245
<00:24:00.545>But <00:24:00.745>I <00:24:00.945>do <00:24:01.145>my <00:24:01.345>tests <00:24:01.545>against <00:24:01.745>be <00:24:01.945>productive

382
00:24:04.465 --> 00:24:05.805
<00:24:04.465>and <00:24:05.068>c <00:24:05.671>productive.

383
00:24:06.235 --> 00:24:09.485
<00:24:06.235>This <00:24:06.584>already <00:24:06.935>reduces <00:24:07.284>errors <00:24:07.635>beforehand.

384
00:24:10.955 --> 00:24:14.745
<00:24:10.955>What <00:24:11.110>you <00:24:11.266>need <00:24:11.421>to <00:24:11.577>do <00:24:11.732>then <00:24:11.888>is, <00:24:12.043>uh, <00:24:12.199>you <00:24:12.355>need

385
00:24:14.745 --> 00:24:16.385
<00:24:14.745>to <00:24:15.445>extensively <00:24:16.145>monitor

386
00:24:17.285 --> 00:24:19.945
<00:24:17.285>and <00:24:17.485>have <00:24:17.685>alerts <00:24:17.885>on <00:24:18.085>a <00:24:18.285>lot <00:24:18.485>of <00:24:18.685>metrics.

387
00:24:20.685 --> 00:24:24.185
<00:24:20.685>To <00:24:20.918>do <00:24:21.151>this <00:24:21.385>approach <00:24:21.618>successfully, <00:24:21.851>you <00:24:22.085>need

388
00:24:24.185 --> 00:24:26.065
<00:24:24.185>to <00:24:24.651>be <00:24:25.118>strictly <00:24:25.585>continuous.

389
00:24:26.485 --> 00:24:28.865
<00:24:26.485>You <00:24:26.764>need <00:24:27.044>small <00:24:27.324>changes, <00:24:27.604>you <00:24:27.885>need

390
00:24:28.865 --> 00:24:31.625
<00:24:28.865>to <00:24:29.098>roll <00:24:29.331>forward <00:24:29.565>instead <00:24:29.798>of <00:24:30.031>back <00:24:30.265>end.

391
00:24:31.625 --> 00:24:35.625
<00:24:31.625>You <00:24:31.765>need <00:24:31.905>to <00:24:32.045>deploy <00:24:32.185>very <00:24:32.325>fast. <00:24:32.465>Uh, <00:24:32.605>we <00:24:32.745>made <00:24:32.885>very <00:24:33.025>good.

392
00:24:35.805 --> 00:24:38.345
<00:24:35.805>Um, <00:24:35.980>so <00:24:36.155>for <00:24:36.330>us <00:24:36.505>it <00:24:36.680>was <00:24:36.855>the <00:24:37.030>right <00:24:37.205>decision.

393
00:24:40.485 --> 00:24:45.345
<00:24:40.485>Um, <00:24:40.612>the <00:24:40.739>problem <00:24:40.866>that <00:24:40.994>the <00:24:41.121>code <00:24:41.248>is <00:24:41.375>hard <00:24:41.503>to <00:24:41.630>maintain, <00:24:41.757>not <00:24:41.885>only,

394
00:24:45.725 --> 00:24:49.825
<00:24:45.725>but <00:24:46.004>often <00:24:46.284>with <00:24:46.564>extremely <00:24:46.844>heterogeneous <00:24:47.125>code,

395
00:24:50.285 --> 00:24:52.425
<00:24:50.285>you <00:24:50.460>will <00:24:50.635>have <00:24:50.810>code <00:24:50.985>that <00:24:51.160>is <00:24:51.335>hard <00:24:51.510>to <00:24:51.685>handle.

396
00:24:53.525 --> 00:24:55.905
<00:24:53.525>So, <00:24:54.225>um, <00:24:54.925>uh,

397
00:24:56.015 --> 00:25:00.065
<00:24:56.015>imagine <00:24:56.215>the <00:24:56.415>same <00:24:56.615>tech <00:24:56.815>approach <00:24:57.015>versus <00:24:57.215>a <00:24:57.415>mix

398
00:25:00.205 --> 00:25:01.985
<00:25:00.205>of <00:25:00.905>different <00:25:01.605>technologies.

399
00:25:02.325 --> 00:25:04.745
<00:25:02.325>Let <00:25:02.525>me <00:25:02.725>give <00:25:02.925>you <00:25:03.125>the <00:25:03.325>example <00:25:03.525>of <00:25:03.725>authentication.

400
00:25:05.295 --> 00:25:09.025
<00:25:05.295>Imagine <00:25:05.528>that <00:25:05.761>all <00:25:05.995>your <00:25:06.228>components <00:25:06.461>use <00:25:06.695>one

401
00:25:10.245 --> 00:25:12.105
<00:25:10.245>method <00:25:10.945>of <00:25:11.645>ours.

402
00:25:12.655 --> 00:25:15.505
<00:25:12.655>This <00:25:12.830>might <00:25:13.004>be, <00:25:13.180>uh, <00:25:13.355>Jason, <00:25:13.530>that <00:25:13.705>token <00:25:13.879>for <00:25:14.055>example.

403
00:25:15.765 --> 00:25:18.625
<00:25:15.765>And <00:25:16.115>now <00:25:16.465>imagine <00:25:16.815>a <00:25:17.165>landscape

404
00:25:18.875 --> 00:25:23.385
<00:25:18.875>where <00:25:19.050>you <00:25:19.225>have <00:25:19.400>SS <00:25:19.575>inserts, <00:25:19.750>API, <00:25:19.925>key <00:25:20.100>basic <00:25:20.275>hours,

405
00:25:24.045 --> 00:25:26.985
<00:25:24.045>um, <00:25:24.325>network, <00:25:24.605>ip, <00:25:24.885>I <00:25:25.165>don't <00:25:25.445>know.

406
00:25:27.125 --> 00:25:29.305
<00:25:27.125>So <00:25:27.358>what <00:25:27.591>will <00:25:27.825>be <00:25:28.058>easier <00:25:28.291>to <00:25:28.525>maintain?

407
00:25:30.085 --> 00:25:34.545
<00:25:30.085>Um, <00:25:30.212>you <00:25:30.339>need <00:25:30.466>to <00:25:30.594>understand <00:25:30.721>that <00:25:30.848>this <00:25:30.975>is <00:25:31.103>always <00:25:31.230>a <00:25:31.357>trade <00:25:31.485>off

408
00:25:35.115 --> 00:25:37.465
<00:25:35.115>innovation <00:25:35.815>and <00:25:36.515>consistency.

409
00:25:38.045 --> 00:25:41.665
<00:25:38.045>So <00:25:38.185>as <00:25:38.325>a <00:25:38.465>rule <00:25:38.605>of <00:25:38.745>some, <00:25:38.885>I'd <00:25:39.025>say <00:25:39.165>change <00:25:39.305>one <00:25:39.445>major

410
00:25:42.475 --> 00:25:46.665
<00:25:42.475>technology <00:25:42.630>when <00:25:42.786>you're <00:25:42.941>doing <00:25:43.097>a <00:25:43.252>new <00:25:43.408>project <00:25:43.563>but <00:25:43.719>not <00:25:43.875>more.

411
00:25:47.325 --> 00:25:50.025
<00:25:47.325>Uh, <00:25:47.558>try <00:25:47.791>to <00:25:48.025>stick <00:25:48.258>to <00:25:48.491>some <00:25:48.725>consistency.

412
00:25:52.175 --> 00:25:55.505
<00:25:52.175>Yeah, <00:25:53.575>refactoring.

413
00:25:55.925 --> 00:25:58.065
<00:25:55.925>If <00:25:56.205>the <00:25:56.485>refactoring <00:25:56.764>takes <00:25:57.044>too <00:25:57.325>long

414
00:25:58.415 --> 00:26:01.025
<00:25:58.415>with <00:25:58.695>all <00:25:58.975>the <00:25:59.254>paradigms <00:25:59.534>we <00:25:59.815>developed

415
00:26:01.165 --> 00:26:05.385
<00:26:01.165>and <00:26:01.340>we <00:26:01.514>embraced, <00:26:01.690>we <00:26:01.865>were <00:26:02.040>able <00:26:02.215>to <00:26:02.389>say, <00:26:02.565>um,

416
00:26:06.685 --> 00:26:09.785
<00:26:06.685>we <00:26:07.034>rebuild <00:26:07.385>instead <00:26:07.735>of <00:26:08.085>refactoring.

417
00:26:09.925 --> 00:26:12.785
<00:26:09.925>So <00:26:10.205>refactoring <00:26:10.485>is <00:26:10.764>a <00:26:11.044>important <00:26:11.325>part

418
00:26:12.785 --> 00:26:16.385
<00:26:12.785>of <00:26:12.960>the <00:26:13.135>developing <00:26:13.310>process, <00:26:13.485>but <00:26:13.660>not <00:26:13.835>the <00:26:14.010>only <00:26:14.185>one.

419
00:26:19.175 --> 00:26:24.095
<00:26:19.175>Whatever <00:26:19.350>you <00:26:19.524>do, <00:26:19.700>make <00:26:19.875>a <00:26:20.050>same <00:26:20.225>choice. <00:26:20.399>Thank <00:26:20.575>you.

420
00:26:24.795 --> 00:26:29.335
<00:26:24.795>Um, <00:26:24.895>if <00:26:24.995>you <00:26:25.095>want <00:26:25.195>to <00:26:25.295>reach <00:26:25.395>out, <00:26:25.495>you <00:26:25.595>can <00:26:25.695>do <00:26:25.795>so <00:26:25.895>per <00:26:25.995>link <00:26:26.095>it <00:26:26.195>in

421
00:26:29.915 --> 00:26:31.855
<00:26:29.915>at <00:26:30.264>the <00:26:30.615>Excel <00:26:30.965>Springer <00:26:31.315>booth.

422
00:26:32.015 --> 00:26:34.015
<00:26:32.015>I <00:26:32.248>will <00:26:32.481>be <00:26:32.715>available <00:26:32.948>today <00:26:33.181>and <00:26:33.415>tomorrow.

423
00:26:34.315 --> 00:26:37.535
<00:26:34.315>And <00:26:34.470>now <00:26:34.626>there's <00:26:34.781>room <00:26:34.937>for <00:26:35.092>questions. <00:26:35.248>Thank <00:26:35.403>you <00:26:35.559>for <00:26:35.715>listening.