WEBVTT

1
00:00:04.150 --> 00:00:07.910
<00:00:04.150>Hello, <00:00:04.325>everyone. <00:00:04.500>You're <00:00:04.675>warmly <00:00:04.850>welcome <00:00:05.025>at <00:00:05.200>this <00:00:05.375>presentation. <00:00:05.550>Uh,

2
00:00:08.070 --> 00:00:11.310
<00:00:08.070>I <00:00:08.197>would <00:00:08.324>like <00:00:08.451>again <00:00:08.579>to <00:00:08.706>ask <00:00:08.833>you, <00:00:08.960>uh, <00:00:09.088>to <00:00:09.215>join <00:00:09.342>the <00:00:09.470>board.

3
00:00:11.690 --> 00:00:15.710
<00:00:11.690>If <00:00:11.817>you're <00:00:11.944>using <00:00:12.071>your <00:00:12.199>mobile <00:00:12.326>browser <00:00:12.453>on <00:00:12.580>your <00:00:12.708>mobile <00:00:12.835>phone, <00:00:12.962>please, <00:00:13.090>uh,

4
00:00:15.770 --> 00:00:20.150
<00:00:15.770>try <00:00:15.863>to <00:00:15.956>turn <00:00:16.050>on <00:00:16.143>the <00:00:16.236>desktop <00:00:16.329>mode <00:00:16.423>so <00:00:16.516>you <00:00:16.610>could <00:00:16.703>have <00:00:16.796>more <00:00:16.890>features <00:00:16.983>enabled <00:00:17.076>on <00:00:17.169>the

5
00:00:20.150 --> 00:00:24.790
<00:00:20.150>mural <00:00:20.383>board. <00:00:20.616>Okay. <00:00:20.849>Um, <00:00:21.083>let's <00:00:21.316>start. <00:00:21.549>So,

6
00:00:25.170 --> 00:00:29.790
<00:00:25.170>uh, <00:00:25.277>my <00:00:25.385>name <00:00:25.493>is <00:00:25.600>George <00:00:25.708>and <00:00:25.816>I'm <00:00:25.923>a <00:00:26.031>senior <00:00:26.139>backend <00:00:26.246>engineer <00:00:26.354>at <00:00:26.462>Miro. <00:00:26.570>Um,

7
00:00:29.970 --> 00:00:33.510
<00:00:29.970>and <00:00:30.077>today <00:00:30.185>I <00:00:30.293>would <00:00:30.400>like <00:00:30.508>to <00:00:30.616>share <00:00:30.723>with <00:00:30.831>you <00:00:30.939>some <00:00:31.046>interesting <00:00:31.154>experiences <00:00:31.262>that <00:00:31.369>we

8
00:00:33.530 --> 00:00:38.110
<00:00:33.530>had <00:00:33.646>when <00:00:33.763>we, <00:00:33.880>uh, <00:00:33.996>swap <00:00:34.113>was <00:00:34.230>were <00:00:34.346>swapping <00:00:34.463>our, <00:00:34.580>uh, <00:00:34.696>data <00:00:34.813>storage <00:00:34.930>level,

9
00:00:38.770 --> 00:00:42.510
<00:00:38.770>and <00:00:38.897>also <00:00:39.024>I <00:00:39.151>would <00:00:39.279>like <00:00:39.406>to <00:00:39.533>share <00:00:39.660>some <00:00:39.788>experiences <00:00:39.915>in <00:00:40.042>adapting, <00:00:40.170>uh,

10
00:00:42.510 --> 00:00:47.230
<00:00:42.510>dynamic <00:00:42.684>DB <00:00:42.860>in <00:00:43.035>our <00:00:43.210>team. <00:00:43.385>And <00:00:43.559>shortly <00:00:43.735>about <00:00:43.910>Miro.

11
00:00:47.570 --> 00:00:52.230
<00:00:47.570>So, <00:00:47.745>Miro <00:00:47.920>is <00:00:48.095>a <00:00:48.270>online, <00:00:48.445>uh, <00:00:48.620>online, <00:00:48.795>uh, <00:00:48.970>uh,

12
00:00:52.260 --> 00:00:56.230
<00:00:52.260>workspace <00:00:52.493>for <00:00:52.726>innovation. <00:00:52.960>And <00:00:53.193>we <00:00:53.426>enabling <00:00:53.660>teams,

13
00:00:56.380 --> 00:01:01.030
<00:00:56.380>distributed <00:00:56.496>teams <00:00:56.613>of <00:00:56.730>any <00:00:56.846>size <00:00:56.963>to <00:00:57.080>design, <00:00:57.196>dream <00:00:57.313>and <00:00:57.430>build <00:00:57.546>the <00:00:57.663>future <00:00:57.780>together.

14
00:01:01.330 --> 00:01:05.710
<00:01:01.330>So <00:01:01.430>we <00:01:01.530>not <00:01:01.629>only <00:01:01.730>shape <00:01:01.830>the <00:01:01.930>future, <00:01:02.030>but <00:01:02.129>we <00:01:02.230>build <00:01:02.330>together <00:01:02.430>the <00:01:02.530>future. <00:01:02.629>And, <00:01:02.730>uh,

15
00:01:05.710 --> 00:01:10.110
<00:01:05.710>right <00:01:05.837>now <00:01:05.964>Miro, <00:01:06.091>uh, <00:01:06.219>has <00:01:06.346>more <00:01:06.473>than <00:01:06.600>50 <00:01:06.728>million <00:01:06.855>active <00:01:06.982>users <00:01:07.110>worldwide,

16
00:01:10.530 --> 00:01:11.830
<00:01:10.530>and <00:01:10.920>we <00:01:11.310>also, <00:01:11.700>uh,

17
00:01:11.900 --> 00:01:15.750
<00:01:11.900>have <00:01:12.075>1800 <00:01:12.250>employees <00:01:12.425>in <00:01:12.600>12 <00:01:12.775>hubs <00:01:12.950>around <00:01:13.125>the <00:01:13.300>world.

18
00:01:17.500 --> 00:01:22.160
<00:01:17.500>And <00:01:17.593>I <00:01:17.686>would <00:01:17.780>like <00:01:17.873>to <00:01:17.966>shortly <00:01:18.060>tell <00:01:18.153>you <00:01:18.246>about <00:01:18.340>my <00:01:18.433>team. <00:01:18.526>My <00:01:18.620>team, <00:01:18.713>uh, <00:01:18.806>is, <00:01:18.900>uh,

19
00:01:22.160 --> 00:01:23.680
<00:01:22.160>called <00:01:22.616>user <00:01:23.072>registry <00:01:23.528>team,

20
00:01:24.060 --> 00:01:27.200
<00:01:24.060>and <00:01:24.187>we <00:01:24.314>are <00:01:24.441>basically <00:01:24.569>the <00:01:24.696>guardians <00:01:24.823>of <00:01:24.950>all <00:01:25.078>user <00:01:25.205>data <00:01:25.332>at <00:01:25.460>Miro.

21
00:01:27.700 --> 00:01:29.960
<00:01:27.700>And <00:01:27.980>we <00:01:28.260>are <00:01:28.540>responsible <00:01:28.820>for, <00:01:29.100>um,

22
00:01:30.670 --> 00:01:35.640
<00:01:30.670>providing <00:01:30.797>an <00:01:30.924>a <00:01:31.051>p <00:01:31.179>i <00:01:31.306>to <00:01:31.433>streamline <00:01:31.560>user <00:01:31.688>management <00:01:31.815>and <00:01:31.942>also <00:01:32.070>we

23
00:01:35.640 --> 00:01:40.040
<00:01:35.640>tackle <00:01:35.795>all <00:01:35.951>the <00:01:36.106>performance <00:01:36.262>issues, <00:01:36.417>uh, <00:01:36.573>that, <00:01:36.728>uh, <00:01:36.884>uh, <00:01:37.040>uh,

24
00:01:40.410 --> 00:01:44.920
<00:01:40.410>arise <00:01:40.585>during <00:01:40.759>the <00:01:40.935>usages <00:01:41.110>of <00:01:41.285>our <00:01:41.460>services <00:01:41.634>and, <00:01:41.810>um,

25
00:01:45.670 --> 00:01:48.480
<00:01:45.670>what <00:01:45.810>we <00:01:45.950>are, <00:01:46.090>what <00:01:46.230>we <00:01:46.370>were <00:01:46.510>facing. <00:01:46.650>Uh, <00:01:46.790>and <00:01:46.930>what <00:01:47.070>I,

26
00:01:48.720 --> 00:01:50.000
<00:01:48.720>I <00:01:48.912>would <00:01:49.104>like <00:01:49.295>to <00:01:49.488>tell <00:01:49.680>you <00:01:49.872>about.

27
00:01:50.500 --> 00:01:55.200
<00:01:50.500>So <00:01:50.655>our <00:01:50.811>task <00:01:50.966>was <00:01:51.122>to <00:01:51.277>migrate <00:01:51.433>100 <00:01:51.588>over <00:01:51.744>140 <00:01:51.900>million

28
00:01:55.710 --> 00:02:00.400
<00:01:55.710>user <00:01:55.850>accounts <00:01:55.990>from <00:01:56.130>Radius, <00:01:56.270>which <00:01:56.410>is <00:01:56.550>the <00:01:56.690>current <00:01:56.830>data <00:01:56.970>storage, <00:01:57.110>uh,

29
00:02:00.400 --> 00:02:05.280
<00:02:00.400>which <00:02:00.516>was <00:02:00.633>the <00:02:00.750>current <00:02:00.866>data <00:02:00.983>storage <00:02:01.100>to <00:02:01.216>another <00:02:01.333>separate <00:02:01.450>database. <00:02:01.566>And <00:02:01.683>this <00:02:01.800>was,

30
00:02:05.460 --> 00:02:07.080
<00:02:05.460>uh, <00:02:05.809>not <00:02:06.160>an <00:02:06.509>easy <00:02:06.860>task,

31
00:02:07.330 --> 00:02:12.120
<00:02:07.330>quite <00:02:07.457>a <00:02:07.584>challenging <00:02:07.711>one <00:02:07.839>because <00:02:07.966>we <00:02:08.093>have <00:02:08.220>the <00:02:08.348>load <00:02:08.475>daily <00:02:08.602>over <00:02:08.729>100,000

32
00:02:12.320 --> 00:02:16.720
<00:02:12.320>r <00:02:12.436>p <00:02:12.553>ss, <00:02:12.670>and, <00:02:12.786>um, <00:02:12.903>yeah, <00:02:13.019>we <00:02:13.136>have <00:02:13.253>to <00:02:13.370>do <00:02:13.486>it <00:02:13.603>of <00:02:13.720>course,

33
00:02:17.000 --> 00:02:21.600
<00:02:17.000>seamlessly <00:02:17.107>for <00:02:17.215>our <00:02:17.323>users <00:02:17.430>without <00:02:17.538>any <00:02:17.646>downtime. <00:02:17.753>But <00:02:17.861>why <00:02:17.969>do <00:02:18.076>we <00:02:18.184>want <00:02:18.292>to <00:02:18.400>migrate?

34
00:02:21.620 --> 00:02:23.200
<00:02:21.620>Why <00:02:21.900>we're <00:02:22.180>not <00:02:22.460>satisfied <00:02:22.740>with <00:02:23.020>Redis?

35
00:02:23.540 --> 00:02:25.880
<00:02:23.540>So <00:02:23.695>back <00:02:23.851>in <00:02:24.006>the <00:02:24.162>days <00:02:24.317>where <00:02:24.473>Miro <00:02:24.628>was <00:02:24.784>just <00:02:24.940>founded,

36
00:02:26.220 --> 00:02:31.120
<00:02:26.220>it <00:02:26.327>was <00:02:26.435>based <00:02:26.543>on <00:02:26.650>the <00:02:26.758>online <00:02:26.866>game <00:02:26.973>engine, <00:02:27.081>and <00:02:27.189>probably <00:02:27.296>for <00:02:27.404>online <00:02:27.512>game <00:02:27.620>engine,

37
00:02:31.120 --> 00:02:32.560
<00:02:31.120>it <00:02:31.444>was <00:02:31.768>a <00:02:32.092>nice, <00:02:32.416>uh,

38
00:02:33.200 --> 00:02:37.000
<00:02:33.200>solution <00:02:33.307>to <00:02:33.415>use <00:02:33.523>Redis <00:02:33.630>as <00:02:33.738>the <00:02:33.846>data <00:02:33.953>storage <00:02:34.061>because <00:02:34.169>of <00:02:34.276>its <00:02:34.384>speed <00:02:34.492>and <00:02:34.600>versatility.

39
00:02:37.700 --> 00:02:38.640
<00:02:37.700>But <00:02:38.123>over <00:02:38.546>time,

40
00:02:38.980 --> 00:02:43.280
<00:02:38.980>it <00:02:39.079>happened <00:02:39.179>not <00:02:39.280>to <00:02:39.380>be <00:02:39.480>the <00:02:39.579>best <00:02:39.679>solution <00:02:39.780>for <00:02:39.880>as <00:02:39.980>a <00:02:40.079>persistent <00:02:40.179>data <00:02:40.280>storage, <00:02:40.380>uh,

41
00:02:43.280 --> 00:02:47.760
<00:02:43.280>because <00:02:43.455>the <00:02:43.630>primary <00:02:43.805>primarily <00:02:43.980>usage <00:02:44.155>use <00:02:44.330>case <00:02:44.505>for <00:02:44.680>Redis

42
00:02:48.180 --> 00:02:52.560
<00:02:48.180>is, <00:02:48.307>uh, <00:02:48.434>is <00:02:48.561>a <00:02:48.689>cache <00:02:48.816>solutions <00:02:48.943>or <00:02:49.070>transparent <00:02:49.198>da, <00:02:49.325>uh, <00:02:49.452>data <00:02:49.580>store.

43
00:02:55.010 --> 00:02:59.070
<00:02:55.010>And <00:02:55.165>another <00:02:55.321>reason <00:02:55.476>was, <00:02:55.632>uh, <00:02:55.787>the <00:02:55.943>monolith. <00:02:56.098>So <00:02:56.254>at <00:02:56.410>Miro,

44
00:02:59.120 --> 00:03:02.760
<00:02:59.120>we <00:02:59.247>have <00:02:59.374>dozens <00:02:59.501>of <00:02:59.629>microservices, <00:02:59.756>but <00:02:59.883>we <00:03:00.010>still <00:03:00.138>have <00:03:00.265>a <00:03:00.392>monolith <00:03:00.520>part.

45
00:03:03.460 --> 00:03:08.200
<00:03:03.460>And <00:03:03.560>here <00:03:03.660>I'd <00:03:03.760>like <00:03:03.860>to <00:03:03.960>say <00:03:04.060>that <00:03:04.160>monolith <00:03:04.260>is <00:03:04.360>not <00:03:04.460>all <00:03:04.560>bad. <00:03:04.660>Um, <00:03:04.760>but, <00:03:04.860>uh,

46
00:03:08.470 --> 00:03:12.800
<00:03:08.470>because <00:03:08.597>it <00:03:08.724>has <00:03:08.851>many <00:03:08.979>advantages <00:03:09.106>like <00:03:09.233>one <00:03:09.360>code <00:03:09.488>base, <00:03:09.615>which <00:03:09.742>is, <00:03:09.870>uh,

47
00:03:12.800 --> 00:03:17.760
<00:03:12.800>much <00:03:12.916>easier <00:03:13.033>to, <00:03:13.150>uh, <00:03:13.266>test <00:03:13.383>with <00:03:13.500>end-to-end <00:03:13.616>tests. <00:03:13.733>And <00:03:13.850>also <00:03:13.966>you <00:03:14.083>can, <00:03:14.200>uh,

48
00:03:17.870 --> 00:03:20.000
<00:03:17.870>save <00:03:18.220>time <00:03:18.570>on <00:03:18.920>network <00:03:19.270>overheads,

49
00:03:20.250 --> 00:03:24.280
<00:03:20.250>which <00:03:20.405>you <00:03:20.561>will <00:03:20.716>have <00:03:20.872>if <00:03:21.027>you <00:03:21.183>run <00:03:21.338>on <00:03:21.494>microservices. <00:03:21.650>Um,

50
00:03:24.620 --> 00:03:29.520
<00:03:24.620>the <00:03:24.720>problem <00:03:24.820>with, <00:03:24.920>uh, <00:03:25.020>uh, <00:03:25.120>with <00:03:25.220>the <00:03:25.320>monolith <00:03:25.420>is <00:03:25.520>it <00:03:25.620>is <00:03:25.720>like <00:03:25.820>a <00:03:25.920>giant <00:03:26.020>toolbox,

51
00:03:30.050 --> 00:03:34.440
<00:03:30.050>which <00:03:30.166>has <00:03:30.283>all <00:03:30.400>the <00:03:30.516>tools <00:03:30.633>that <00:03:30.750>you <00:03:30.866>need <00:03:30.983>from <00:03:31.100>little <00:03:31.216>screwdrivers <00:03:31.333>to <00:03:31.450>the

52
00:03:34.590 --> 00:03:39.040
<00:03:34.590>hammers. <00:03:34.697>But <00:03:34.805>the <00:03:34.913>problem <00:03:35.020>is <00:03:35.128>that <00:03:35.236>when <00:03:35.343>you <00:03:35.451>open <00:03:35.559>the <00:03:35.666>door <00:03:35.774>of <00:03:35.882>this <00:03:35.990>toolbox,

53
00:03:39.040 --> 00:03:42.480
<00:03:39.040>something <00:03:39.179>heavy <00:03:39.320>can <00:03:39.459>fall <00:03:39.600>on <00:03:39.739>your <00:03:39.880>foot. <00:03:40.019>And <00:03:40.160>in <00:03:40.299>our <00:03:40.440>case,

54
00:03:42.540 --> 00:03:44.840
<00:03:42.540>the <00:03:42.820>problem <00:03:43.100>mostly <00:03:43.380>was <00:03:43.660>that, <00:03:43.940>uh,

55
00:03:44.930 --> 00:03:49.680
<00:03:44.930>right <00:03:45.085>now <00:03:45.241>we <00:03:45.396>have <00:03:45.552>over <00:03:45.707>700 <00:03:45.863>developers <00:03:46.018>at <00:03:46.174>Miro <00:03:46.330>split

56
00:03:49.680 --> 00:03:50.513
<00:03:49.680>into <00:03:50.054>many <00:03:50.429>teams,

57
00:03:50.780 --> 00:03:55.760
<00:03:50.780>and <00:03:50.907>it <00:03:51.034>is <00:03:51.161>quite <00:03:51.289>difficult <00:03:51.416>to <00:03:51.543>define <00:03:51.670>the <00:03:51.798>responsibility <00:03:51.925>borders <00:03:52.052>inside <00:03:52.180>the

58
00:03:55.760 --> 00:03:57.760
<00:03:55.760>monolith. <00:03:56.226>And <00:03:56.693>also, <00:03:57.160>uh,

59
00:03:58.220 --> 00:04:02.520
<00:03:58.220>the <00:03:58.347>deployment <00:03:58.474>process <00:03:58.601>can <00:03:58.729>be <00:03:58.856>troublesome <00:03:58.983>with <00:03:59.110>monolith <00:03:59.238>because <00:03:59.365>many <00:03:59.492>teams <00:03:59.620>would

60
00:04:02.520 --> 00:04:07.280
<00:04:02.520>like <00:04:02.647>to <00:04:02.774>introduce <00:04:02.901>their <00:04:03.029>changes <00:04:03.156>simultaneously. <00:04:03.283>Um, <00:04:03.410>and <00:04:03.538>on <00:04:03.665>the <00:04:03.792>other <00:04:03.920>hand,

61
00:04:07.500 --> 00:04:10.360
<00:04:07.500>uh, <00:04:07.850>microservice <00:04:08.200>architecture, <00:04:08.550>uh, <00:04:08.900>uh,

62
00:04:10.860 --> 00:04:13.920
<00:04:10.860>allows <00:04:11.015>you <00:04:11.171>to <00:04:11.326>easily <00:04:11.482>scale <00:04:11.637>different <00:04:11.793>parts <00:04:11.948>of <00:04:12.104>your <00:04:12.260>system.

63
00:04:14.660 --> 00:04:17.520
<00:04:14.660>And <00:04:14.893>also <00:04:15.126>it <00:04:15.359>allows <00:04:15.593>you, <00:04:15.826>uh, <00:04:16.060>um,

64
00:04:18.020 --> 00:04:22.760
<00:04:18.019>you <00:04:18.136>can <00:04:18.253>benefit <00:04:18.370>from <00:04:18.486>easy, <00:04:18.603>easier <00:04:18.719>maintenance <00:04:18.836>because <00:04:18.953>of <00:04:19.070>the <00:04:19.186>smaller <00:04:19.303>code <00:04:19.419>base.

65
00:04:24.060 --> 00:04:26.520
<00:04:24.060>And <00:04:24.260>also <00:04:24.460>you <00:04:24.660>can <00:04:24.860>benefit <00:04:25.060>from <00:04:25.260>flexible <00:04:25.460>deployments,

66
00:04:26.520 --> 00:04:30.440
<00:04:26.520>which <00:04:26.636>can <00:04:26.753>take <00:04:26.870>place <00:04:26.986>right <00:04:27.103>after <00:04:27.219>the <00:04:27.336>changes <00:04:27.453>are <00:04:27.570>introduced. <00:04:27.686>And <00:04:27.803>of <00:04:27.919>course,

67
00:04:30.900 --> 00:04:33.840
<00:04:30.900>the <00:04:31.133>responsibility <00:04:31.366>borders <00:04:31.599>are <00:04:31.833>much <00:04:32.066>more <00:04:32.299>cleaner.

68
00:04:35.650 --> 00:04:39.070
<00:04:35.650>So <00:04:35.750>the <00:04:35.849>first <00:04:35.950>thing <00:04:36.049>that <00:04:36.150>we <00:04:36.250>had <00:04:36.349>to <00:04:36.450>make <00:04:36.549>was <00:04:36.650>to <00:04:36.750>choose <00:04:36.849>the <00:04:36.950>right, <00:04:37.049>uh,

69
00:04:39.350 --> 00:04:41.350
<00:04:39.350>database <00:04:39.630>management <00:04:39.910>system <00:04:40.190>for <00:04:40.470>our <00:04:40.750>solution.

70
00:04:41.850 --> 00:04:46.350
<00:04:41.850>And <00:04:41.977>here <00:04:42.104>we <00:04:42.231>mainly <00:04:42.359>considered <00:04:42.486>two <00:04:42.613>options. <00:04:42.740>The <00:04:42.868>first <00:04:42.995>one <00:04:43.122>was <00:04:43.250>PostgreSQL,

71
00:04:46.650 --> 00:04:51.150
<00:04:46.650>uh, <00:04:46.777>which <00:04:46.904>was <00:04:47.031>already <00:04:47.159>widely <00:04:47.286>used <00:04:47.413>at <00:04:47.540>Miro <00:04:47.668>and <00:04:47.795>inside <00:04:47.922>our <00:04:48.049>domain.

72
00:04:51.730 --> 00:04:53.830
<00:04:51.730>And <00:04:51.963>it <00:04:52.196>provides <00:04:52.430>a <00:04:52.663>flexible <00:04:52.896>query <00:04:53.130>language,

73
00:04:54.090 --> 00:04:57.150
<00:04:54.090>and <00:04:54.265>also <00:04:54.440>it <00:04:54.615>provides <00:04:54.790>constraints <00:04:54.965>out <00:04:55.140>of <00:04:55.315>the <00:04:55.490>box,

74
00:04:57.150 --> 00:05:00.550
<00:04:57.150>which <00:04:57.325>allow <00:04:57.500>you <00:04:57.674>to <00:04:57.849>maintain <00:04:58.025>data <00:04:58.200>integrity, <00:04:58.375>uh, <00:04:58.549>easily.

75
00:05:01.450 --> 00:05:06.110
<00:05:01.450>And <00:05:01.557>the <00:05:01.665>problem <00:05:01.773>with, <00:05:01.880>uh, <00:05:01.988>Postgres <00:05:02.096>was <00:05:02.203>that <00:05:02.311>it <00:05:02.419>was <00:05:02.526>much <00:05:02.634>lower <00:05:02.742>than <00:05:02.849>Redis.

76
00:05:07.340 --> 00:05:11.710
<00:05:07.340>Another <00:05:07.467>option <00:05:07.594>that <00:05:07.721>we <00:05:07.849>considered <00:05:07.976>was <00:05:08.103>dyb, <00:05:08.230>which <00:05:08.358>is <00:05:08.485>fully <00:05:08.612>managed, <00:05:08.739>uh,

77
00:05:12.030 --> 00:05:15.030
<00:05:12.030>database <00:05:12.205>management <00:05:12.380>system. <00:05:12.554>And <00:05:12.729>in <00:05:12.905>case <00:05:13.080>of <00:05:13.255>fully <00:05:13.429>management,

78
00:05:15.150 --> 00:05:19.710
<00:05:15.150>I <00:05:15.257>mean <00:05:15.365>that <00:05:15.473>we <00:05:15.580>don't <00:05:15.688>have <00:05:15.796>to <00:05:15.903>worry <00:05:16.011>about <00:05:16.119>scaling <00:05:16.226>or <00:05:16.334>sharding <00:05:16.442>our <00:05:16.549>database.

79
00:05:20.450 --> 00:05:24.670
<00:05:20.450>And, <00:05:20.577>uh, <00:05:20.704>this <00:05:20.831>works <00:05:20.959>better <00:05:21.086>in <00:05:21.213>case <00:05:21.340>of, <00:05:21.468>uh, <00:05:21.595>fast <00:05:21.722>growing, <00:05:21.849>uh,

80
00:05:24.980 --> 00:05:28.390
<00:05:24.980>dataset. <00:05:25.330>And <00:05:25.680>also <00:05:26.030>it, <00:05:26.380>uh,

81
00:05:28.650 --> 00:05:30.430
<00:05:28.650>fit <00:05:29.000>better <00:05:29.349>for <00:05:29.700>our, <00:05:30.049>uh,

82
00:05:30.430 --> 00:05:34.710
<00:05:30.430>query <00:05:30.570>patterns <00:05:30.710>because <00:05:30.850>our <00:05:30.990>query <00:05:31.130>patterns <00:05:31.270>was <00:05:31.410>usually <00:05:31.550>a <00:05:31.690>query, <00:05:31.830>uh,

83
00:05:34.950 --> 00:05:36.430
<00:05:34.950>a <00:05:35.283>record <00:05:35.616>by <00:05:35.949>its <00:05:36.282>key.

84
00:05:37.450 --> 00:05:42.030
<00:05:37.450>But <00:05:37.550>the <00:05:37.650>problem <00:05:37.750>is <00:05:37.849>that <00:05:37.950>dyb <00:05:38.050>is <00:05:38.150>also <00:05:38.250>slower <00:05:38.349>than <00:05:38.450>Redis. <00:05:38.550>And <00:05:38.650>more <00:05:38.750>than <00:05:38.849>that,

85
00:05:42.030 --> 00:05:46.390
<00:05:42.030>it <00:05:42.137>is <00:05:42.245>more <00:05:42.353>expensive <00:05:42.460>than <00:05:42.568>Postgres <00:05:42.676>because <00:05:42.783>of <00:05:42.891>the <00:05:42.999>load <00:05:43.106>profile <00:05:43.214>that <00:05:43.322>we <00:05:43.429>have.

86
00:05:48.790 --> 00:05:50.970
<00:05:48.790>Um, <00:05:48.990>but <00:05:49.190>there's <00:05:49.390>a <00:05:49.590>trick <00:05:49.790>with <00:05:49.990>dynamic <00:05:50.190>db.

87
00:05:51.150 --> 00:05:55.690
<00:05:51.150>So <00:05:51.289>our <00:05:51.429>application <00:05:51.570>or <00:05:51.710>our <00:05:51.849>service <00:05:51.989>is <00:05:52.130>much <00:05:52.270>more <00:05:52.409>read <00:05:52.549>heavy.

88
00:05:56.190 --> 00:05:59.440
<00:05:56.190>And <00:05:56.330>in <00:05:56.469>case <00:05:56.610>of <00:05:56.750>read <00:05:56.890>heavy <00:05:57.030>operation, <00:05:57.170>what <00:05:57.310>can <00:05:57.450>we <00:05:57.590>use?

89
00:06:00.580 --> 00:06:03.680
<00:06:00.580>We <00:06:00.719>can <00:06:00.859>use <00:06:01.000>benefit <00:06:01.140>of <00:06:01.280>cash, <00:06:01.419>correct. <00:06:01.560>I <00:06:01.700>heard <00:06:01.840>someone <00:06:01.979>told,

90
00:06:03.710 --> 00:06:08.320
<00:06:03.710>told <00:06:03.826>the <00:06:03.943>right <00:06:04.060>answer. <00:06:04.176>Um, <00:06:04.293>and <00:06:04.409>in <00:06:04.526>our <00:06:04.643>case, <00:06:04.760>we <00:06:04.876>could <00:06:04.993>use <00:06:05.109>Dex.

91
00:06:08.540 --> 00:06:13.240
<00:06:08.540>And, <00:06:08.667>um, <00:06:08.794>uh, <00:06:08.921>here, <00:06:09.049>I <00:06:09.176>would <00:06:09.303>like <00:06:09.430>to <00:06:09.558>ask <00:06:09.685>you <00:06:09.812>to <00:06:09.940>try,

92
00:06:13.480 --> 00:06:18.120
<00:06:13.480>I <00:06:13.567>don't <00:06:13.655>know <00:06:13.742>if <00:06:13.830>it'll <00:06:13.917>work. <00:06:14.005>Uh, <00:06:14.092>do, <00:06:14.180>do <00:06:14.267>you <00:06:14.355>have, <00:06:14.442>uh, <00:06:14.530>do <00:06:14.617>you <00:06:14.705>have, <00:06:14.792>um, <00:06:14.880>uh,

93
00:06:18.440 --> 00:06:21.360
<00:06:18.440>reactions <00:06:18.567>available <00:06:18.694>on <00:06:18.821>your <00:06:18.949>phone, <00:06:19.076>uh, <00:06:19.203>at <00:06:19.330>the <00:06:19.458>mural <00:06:19.585>board? <00:06:19.712>Can <00:06:19.840>you,

94
00:06:21.740 --> 00:06:26.720
<00:06:21.740>can <00:06:21.915>you <00:06:22.090>drop <00:06:22.265>some <00:06:22.440>reactions <00:06:22.615>there? <00:06:22.790>Oh, <00:06:22.965>amazing. <00:06:23.140>Amazing.

95
00:06:27.750 --> 00:06:32.000
<00:06:27.750>Okay. <00:06:27.850>So <00:06:27.950>now <00:06:28.050>we <00:06:28.150>can <00:06:28.250>try <00:06:28.350>to <00:06:28.450>vote. <00:06:28.550>Uh, <00:06:28.650>what <00:06:28.750>do <00:06:28.850>you <00:06:28.950>think <00:06:29.050>the <00:06:29.150>dxi,

96
00:06:32.220 --> 00:06:36.680
<00:06:32.220>is <00:06:32.360>it <00:06:32.500>a <00:06:32.640>distributed <00:06:32.780>algorithm <00:06:32.920>exploration? <00:06:33.060>Is <00:06:33.200>it <00:06:33.340>data <00:06:33.480>analysis <00:06:33.620>expressions?

97
00:06:37.180 --> 00:06:41.720
<00:06:37.180>Is <00:06:37.335>it <00:06:37.491>a <00:06:37.646>dynamic <00:06:37.802>DB <00:06:37.957>accelerator <00:06:38.113>or <00:06:38.268>database <00:06:38.424>apocalypse <00:06:38.580>experience?

98
00:06:42.060 --> 00:06:46.080
<00:06:42.060>So <00:06:42.260>please, <00:06:42.460>uh, <00:06:42.660>choose <00:06:42.860>the, <00:06:43.060>um, <00:06:43.260>corresponding <00:06:43.460>reaction.

99
00:06:46.910 --> 00:06:50.840
<00:06:46.909>Okay. <00:06:47.017>Okay. <00:06:47.125>I <00:06:47.233>see. <00:06:47.340>I <00:06:47.448>see <00:06:47.556>many <00:06:47.663>people <00:06:47.771>liking <00:06:47.879>the <00:06:47.986>last, <00:06:48.094>the <00:06:48.202>last <00:06:48.309>option,

100
00:06:50.840 --> 00:06:54.120
<00:06:50.840>which <00:06:51.073>I <00:06:51.306>like <00:06:51.540>also <00:06:51.773>better, <00:06:52.006>but, <00:06:52.240>uh,

101
00:06:54.520 --> 00:06:56.960
<00:06:54.520>actually <00:06:54.799>DAX <00:06:55.080>is <00:06:55.359>a <00:06:55.640>DYB <00:06:55.919>accelerator,

102
00:06:57.330 --> 00:07:01.680
<00:06:57.330>which <00:06:57.457>is <00:06:57.584>a <00:06:57.711>transparent <00:06:57.839>in-memory <00:06:57.966>cache <00:06:58.093>solution <00:06:58.220>for <00:06:58.348>DYOD <00:06:58.475>db. <00:06:58.602>And <00:06:58.729>it,

103
00:07:01.680 --> 00:07:03.520
<00:07:01.680>it <00:07:02.030>could <00:07:02.380>be <00:07:02.730>easily <00:07:03.080>horizontal,

104
00:07:03.520 --> 00:07:07.680
<00:07:03.520>easily <00:07:03.675>scaled <00:07:03.831>horizontally <00:07:03.986>by <00:07:04.142>adding <00:07:04.297>new <00:07:04.453>nose <00:07:04.608>to <00:07:04.764>DAX <00:07:04.919>cluster.

105
00:07:08.260 --> 00:07:13.160
<00:07:08.260>And <00:07:08.367>also <00:07:08.475>it <00:07:08.583>gives <00:07:08.690>a <00:07:08.798>performance <00:07:08.906>boost <00:07:09.013>to <00:07:09.121>your <00:07:09.229>dyod <00:07:09.336>DB <00:07:09.444>table <00:07:09.552>up <00:07:09.659>to

106
00:07:13.180 --> 00:07:17.840
<00:07:13.180>10 <00:07:13.287>times. <00:07:13.395>So <00:07:13.503>you <00:07:13.610>go <00:07:13.718>from <00:07:13.826>latency <00:07:13.933>of <00:07:14.041>MI <00:07:14.149>milliseconds <00:07:14.256>to <00:07:14.364>tenths <00:07:14.472>of <00:07:14.580>microseconds,

107
00:07:17.840 --> 00:07:22.520
<00:07:17.840>which <00:07:17.956>is <00:07:18.073>very <00:07:18.190>nice. <00:07:18.306>And <00:07:18.423>also <00:07:18.539>it <00:07:18.656>is <00:07:18.773>com <00:07:18.890>uh, <00:07:19.006>interchangeable <00:07:19.123>with, <00:07:19.239>uh,

108
00:07:22.840 --> 00:07:26.840
<00:07:22.840>DY <00:07:22.940>DB <00:07:23.039>A <00:07:23.140>P <00:07:23.239>i, <00:07:23.340>so <00:07:23.440>you <00:07:23.539>can <00:07:23.640>reuse <00:07:23.739>your <00:07:23.840>code <00:07:23.940>and <00:07:24.039>choose <00:07:24.140>wherever <00:07:24.239>you,

109
00:07:27.400 --> 00:07:32.320
<00:07:27.400>wherever <00:07:27.527>fits <00:07:27.654>you <00:07:27.781>better, <00:07:27.909>DAX <00:07:28.036>or <00:07:28.163>directly <00:07:28.290>go <00:07:28.418>to <00:07:28.545>DYOD <00:07:28.672>db. <00:07:28.799>And,

110
00:07:32.340 --> 00:07:35.440
<00:07:32.340>uh, <00:07:32.515>why <00:07:32.690>it <00:07:32.865>is <00:07:33.040>good <00:07:33.215>for <00:07:33.390>us, <00:07:33.565>our, <00:07:33.740>um,

111
00:07:35.870 --> 00:07:39.730
<00:07:35.870>data <00:07:36.070>is <00:07:36.270>rarely <00:07:36.470>changed. <00:07:36.670>So <00:07:36.870>in <00:07:37.070>our <00:07:37.270>case,

112
00:07:39.870 --> 00:07:44.250
<00:07:39.870>we <00:07:39.977>could <00:07:40.085>even <00:07:40.193>fit <00:07:40.300>the <00:07:40.408>whole <00:07:40.516>dataset <00:07:40.623>inside <00:07:40.731>the <00:07:40.839>memory <00:07:40.946>of, <00:07:41.054>of <00:07:41.162>DAX <00:07:41.270>node.

113
00:07:44.430 --> 00:07:49.090
<00:07:44.430>And <00:07:44.546>in <00:07:44.663>this <00:07:44.780>case, <00:07:44.896>we <00:07:45.013>would <00:07:45.130>have <00:07:45.246>to <00:07:45.363>barely <00:07:45.480>use <00:07:45.596>dyod <00:07:45.713>DB <00:07:45.830>directly,

114
00:07:49.430 --> 00:07:52.250
<00:07:49.430>and <00:07:49.585>we <00:07:49.741>would <00:07:49.896>have <00:07:50.052>to <00:07:50.207>pay <00:07:50.363>only <00:07:50.518>for <00:07:50.674>Dex <00:07:50.830>cluster.

115
00:07:54.720 --> 00:07:59.380
<00:07:54.720>So <00:07:54.820>we <00:07:54.920>wanted <00:07:55.020>to <00:07:55.120>make <00:07:55.220>sure <00:07:55.320>that <00:07:55.420>our <00:07:55.520>solution <00:07:55.620>would <00:07:55.720>work <00:07:55.820>perfectly <00:07:55.920>under <00:07:56.020>the <00:07:56.120>load

116
00:07:59.380 --> 00:08:04.020
<00:07:59.380>that <00:07:59.473>we <00:07:59.566>have. <00:07:59.659>So <00:07:59.753>we <00:07:59.846>added <00:07:59.940>all <00:08:00.033>the <00:08:00.126>needed <00:08:00.219>client <00:08:00.313>side <00:08:00.406>metrics <00:08:00.500>in <00:08:00.593>order <00:08:00.686>to, <00:08:00.780>uh,

117
00:08:04.700 --> 00:08:08.940
<00:08:04.700>reproduce <00:08:04.900>the <00:08:05.099>production <00:08:05.300>like <00:08:05.500>load. <00:08:05.700>And <00:08:05.900>we, <00:08:06.099>uh,

118
00:08:09.180 --> 00:08:13.140
<00:08:09.180>reproduce <00:08:09.335>it <00:08:09.491>in <00:08:09.646>two <00:08:09.802>law <00:08:09.957>tests <00:08:10.113>for <00:08:10.268>both, <00:08:10.424>uh, <00:08:10.580>databases.

119
00:08:14.160 --> 00:08:18.500
<00:08:14.160>And <00:08:14.267>in <00:08:14.375>case <00:08:14.483>of <00:08:14.590>Postgres, <00:08:14.698>we <00:08:14.806>use <00:08:14.913>this, <00:08:15.021>uh, <00:08:15.129>relatively <00:08:15.236>simple <00:08:15.344>solution <00:08:15.452>for <00:08:15.560>the,

120
00:08:18.600 --> 00:08:21.980
<00:08:18.600>uh, <00:08:18.740>law <00:08:18.880>test, <00:08:19.020>which <00:08:19.160>we <00:08:19.300>took <00:08:19.440>benefit <00:08:19.580>of <00:08:19.720>PG <00:08:19.860>bench <00:08:20.000>tool,

121
00:08:22.070 --> 00:08:24.860
<00:08:22.070>which <00:08:22.197>allows <00:08:22.324>you <00:08:22.451>not <00:08:22.579>only <00:08:22.706>to <00:08:22.833>generate <00:08:22.960>the <00:08:23.088>law <00:08:23.215>that <00:08:23.342>you <00:08:23.469>need,

122
00:08:25.400 --> 00:08:29.940
<00:08:25.400>but <00:08:25.516>also <00:08:25.633>it <00:08:25.750>allows <00:08:25.866>you <00:08:25.983>to <00:08:26.099>collect <00:08:26.216>all <00:08:26.333>the <00:08:26.450>client <00:08:26.566>set <00:08:26.683>metrics. <00:08:26.799>Um,

123
00:08:30.440 --> 00:08:34.540
<00:08:30.440>but <00:08:30.540>with <00:08:30.640>the <00:08:30.740>dynamic <00:08:30.840>db, <00:08:30.940>we <00:08:31.040>had <00:08:31.140>to <00:08:31.240>use <00:08:31.340>a <00:08:31.440>little <00:08:31.540>bit <00:08:31.640>more <00:08:31.740>complicated <00:08:31.840>solution,

124
00:08:34.830 --> 00:08:39.140
<00:08:34.830>which <00:08:34.946>was, <00:08:35.063>uh, <00:08:35.180>easy <00:08:35.296>two <00:08:35.413>instances, <00:08:35.530>uh, <00:08:35.646>hosted <00:08:35.763>on <00:08:35.880>a <00:08:35.996>w <00:08:36.113>s, <00:08:36.230>uh,

125
00:08:39.140 --> 00:08:41.700
<00:08:39.140>that <00:08:39.373>were <00:08:39.606>running <00:08:39.840>K <00:08:40.073>six, <00:08:40.306>uh, <00:08:40.539>tool,

126
00:08:41.750 --> 00:08:45.700
<00:08:41.750>which <00:08:41.877>were <00:08:42.004>generating <00:08:42.131>the <00:08:42.259>traffic <00:08:42.386>and <00:08:42.513>it <00:08:42.640>hit <00:08:42.768>the <00:08:42.895>application <00:08:43.022>load <00:08:43.150>balancer.

127
00:08:45.700 --> 00:08:49.300
<00:08:45.700>And <00:08:45.840>the <00:08:45.980>load <00:08:46.120>balancer <00:08:46.260>were <00:08:46.400>distributing <00:08:46.540>the <00:08:46.680>load <00:08:46.820>among <00:08:46.960>other, <00:08:47.100>uh,

128
00:08:49.300 --> 00:08:50.300
<00:08:49.300>group <00:08:49.479>of <00:08:49.660>E <00:08:49.839>C <00:08:50.020>two <00:08:50.199>instances,

129
00:08:50.300 --> 00:08:53.620
<00:08:50.300>which <00:08:50.500>were <00:08:50.699>running <00:08:50.900>dummy <00:08:51.099>spring <00:08:51.300>boot <00:08:51.500>proxy <00:08:51.699>application.

130
00:08:54.000 --> 00:08:58.110
<00:08:54.000>And <00:08:54.107>this <00:08:54.215>spring <00:08:54.323>boot <00:08:54.430>proxy <00:08:54.538>application <00:08:54.646>was <00:08:54.753>needed <00:08:54.861>in <00:08:54.969>order <00:08:55.076>to <00:08:55.184>collect <00:08:55.292>the <00:08:55.400>client

131
00:08:58.130 --> 00:09:02.030
<00:08:58.130>set <00:08:58.330>metrics. <00:08:58.530>And, <00:08:58.730>uh, <00:08:58.930>this, <00:08:59.130>uh, <00:08:59.330>this, <00:08:59.530>uh,

132
00:09:02.120 --> 00:09:05.390
<00:09:02.120>those <00:09:02.320>instances <00:09:02.520>were <00:09:02.720>hitting <00:09:02.920>DY <00:09:03.120>DB <00:09:03.320>through <00:09:03.520>Dex.

133
00:09:07.050 --> 00:09:10.670
<00:09:07.050>So, <00:09:07.205>uh, <00:09:07.361>as <00:09:07.516>a <00:09:07.672>result <00:09:07.827>of <00:09:07.983>this <00:09:08.138>two <00:09:08.294>tests, <00:09:08.449>uh,

134
00:09:10.690 --> 00:09:14.910
<00:09:10.690>we <00:09:10.797>could <00:09:10.905>say <00:09:11.013>that <00:09:11.120>both <00:09:11.228>solutions <00:09:11.336>could <00:09:11.443>handle <00:09:11.551>the <00:09:11.659>load <00:09:11.766>and <00:09:11.874>also <00:09:11.982>both <00:09:12.090>solutions

135
00:09:15.020 --> 00:09:19.230
<00:09:15.020>were <00:09:15.160>comparable <00:09:15.300>in <00:09:15.439>costs, <00:09:15.579>and <00:09:15.720>both <00:09:15.860>solutions <00:09:16.000>could <00:09:16.140>be <00:09:16.280>scaled <00:09:16.420>horizontally.

136
00:09:19.290 --> 00:09:22.790
<00:09:19.290>In <00:09:19.430>case <00:09:19.569>of <00:09:19.709>Postgres <00:09:19.849>scale. <00:09:19.990>Uh, <00:09:20.130>we <00:09:20.270>talk <00:09:20.410>about <00:09:20.550>read <00:09:20.689>replicas,

137
00:09:23.410 --> 00:09:28.270
<00:09:23.410>and <00:09:23.503>in <00:09:23.596>case <00:09:23.689>of <00:09:23.783>dynamic <00:09:23.876>B, <00:09:23.969>we <00:09:24.063>can <00:09:24.156>add <00:09:24.250>more <00:09:24.343>node <00:09:24.436>D <00:09:24.530>cluster. <00:09:24.623>And, <00:09:24.716>uh, <00:09:24.810>uh,

138
00:09:28.620 --> 00:09:32.470
<00:09:28.620>talking <00:09:28.853>about <00:09:29.086>differences, <00:09:29.320>Postgres <00:09:29.553>was <00:09:29.786>much, <00:09:30.020>uh,

139
00:09:32.650 --> 00:09:37.230
<00:09:32.650>slower <00:09:32.824>than <00:09:33.000>DAX <00:09:33.175>and <00:09:33.350>DynamoDB. <00:09:33.525>And <00:09:33.699>also, <00:09:33.875>which, <00:09:34.050>uh,

140
00:09:37.290 --> 00:09:40.190
<00:09:37.290>the <00:09:37.430>thing <00:09:37.569>that <00:09:37.709>came <00:09:37.849>out <00:09:37.990>not <00:09:38.130>from <00:09:38.270>a <00:09:38.410>lot <00:09:38.550>test <00:09:38.689>directly,

141
00:09:40.250 --> 00:09:44.670
<00:09:40.250>but <00:09:40.366>in <00:09:40.483>case <00:09:40.600>of <00:09:40.716>fast-growing <00:09:40.833>dataset, <00:09:40.950>you <00:09:41.066>would <00:09:41.183>have <00:09:41.300>to <00:09:41.416>think <00:09:41.533>about <00:09:41.650>sharding,

142
00:09:45.050 --> 00:09:48.150
<00:09:45.050>uh, <00:09:45.224>or, <00:09:45.400>or <00:09:45.574>solution <00:09:45.750>for <00:09:45.925>your <00:09:46.099>Postgres <00:09:46.275>because, <00:09:46.449>uh,

143
00:09:48.490 --> 00:09:52.510
<00:09:48.490>replic <00:09:48.645>replication <00:09:48.801>will <00:09:48.956>not, <00:09:49.112>uh, <00:09:49.267>solve <00:09:49.423>the <00:09:49.578>issue <00:09:49.734>of, <00:09:49.890>uh,

144
00:09:52.860 --> 00:09:57.230
<00:09:52.860>extremely <00:09:52.976>large <00:09:53.093>tables. <00:09:53.210>And <00:09:53.326>with <00:09:53.443>the <00:09:53.560>dynamic <00:09:53.676>db, <00:09:53.793>of <00:09:53.910>course, <00:09:54.026>it, <00:09:54.143>it <00:09:54.260>came,

145
00:09:57.370 --> 00:10:01.390
<00:09:57.370>it <00:09:57.525>comes <00:09:57.681>out <00:09:57.836>of <00:09:57.992>the <00:09:58.147>box, <00:09:58.303>okay. <00:09:58.458>Uh, <00:09:58.614>but, <00:09:58.770>uh,

146
00:10:01.390 --> 00:10:03.350
<00:10:01.390>dynamic <00:10:01.670>DB <00:10:01.949>and <00:10:02.230>ds, <00:10:02.510>uh, <00:10:02.790>uh,

147
00:10:03.540 --> 00:10:08.390
<00:10:03.540>like <00:10:03.647>probably <00:10:03.755>there <00:10:03.863>is <00:10:03.970>no <00:10:04.078>perfect <00:10:04.186>solution <00:10:04.293>in <00:10:04.401>for <00:10:04.509>any <00:10:04.616>problem. <00:10:04.724>And, <00:10:04.832>uh, <00:10:04.939>Dax,

148
00:10:08.650 --> 00:10:12.310
<00:10:08.650>uh, <00:10:08.777>with <00:10:08.904>Dyod <00:10:09.031>DB <00:10:09.159>was <00:10:09.286>also <00:10:09.413>not <00:10:09.540>a <00:10:09.668>magic <00:10:09.795>pill <00:10:09.922>for <00:10:10.050>us.

149
00:10:12.690 --> 00:10:17.270
<00:10:12.690>We <00:10:12.797>had <00:10:12.905>to <00:10:13.013>cope <00:10:13.120>with <00:10:13.228>some, <00:10:13.336>some <00:10:13.443>limitations. <00:10:13.551>And <00:10:13.659>those <00:10:13.766>limitations <00:10:13.874>were <00:10:13.982>that, <00:10:14.090>uh,

150
00:10:17.450 --> 00:10:21.990
<00:10:17.450>uh, <00:10:17.577>DYOD <00:10:17.704>DB <00:10:17.831>mainly <00:10:17.959>is <00:10:18.086>designed <00:10:18.213>for <00:10:18.340>access <00:10:18.468>pattern <00:10:18.595>by <00:10:18.722>primary <00:10:18.850>key.

151
00:10:22.010 --> 00:10:26.150
<00:10:22.010>And <00:10:22.110>by <00:10:22.210>primary <00:10:22.310>key, <00:10:22.410>I <00:10:22.510>mean <00:10:22.610>partitioning <00:10:22.710>key <00:10:22.810>or <00:10:22.910>hash <00:10:23.010>key, <00:10:23.110>it <00:10:23.210>has <00:10:23.310>different, <00:10:23.410>uh,

152
00:10:26.250 --> 00:10:30.150
<00:10:26.250>na <00:10:26.390>names <00:10:26.530>in <00:10:26.670>the <00:10:26.810>documentation <00:10:26.950>of <00:10:27.090>the <00:10:27.230>a <00:10:27.370>w <00:10:27.510>s. <00:10:27.650>Um,

153
00:10:30.850 --> 00:10:34.550
<00:10:30.850>and <00:10:30.977>in <00:10:31.104>case <00:10:31.231>you <00:10:31.359>wanted <00:10:31.486>to <00:10:31.613>query <00:10:31.740>your <00:10:31.868>data <00:10:31.995>by <00:10:32.122>another <00:10:32.250>field,

154
00:10:34.650 --> 00:10:36.990
<00:10:34.650>you <00:10:34.850>would <00:10:35.050>have <00:10:35.250>to <00:10:35.449>introduce <00:10:35.650>global <00:10:35.850>secondary <00:10:36.050>index.

155
00:10:38.090 --> 00:10:42.630
<00:10:38.090>And <00:10:38.197>Dax <00:10:38.305>supports <00:10:38.413>two <00:10:38.520>types <00:10:38.628>of <00:10:38.736>caches. <00:10:38.843>And <00:10:38.951>the <00:10:39.059>first <00:10:39.166>one <00:10:39.274>is <00:10:39.382>item <00:10:39.490>cache,

156
00:10:42.630 --> 00:10:47.190
<00:10:42.630>which <00:10:42.757>is <00:10:42.884>used <00:10:43.011>for <00:10:43.139>basic <00:10:43.266>operations, <00:10:43.393>like <00:10:43.520>get <00:10:43.648>item, <00:10:43.775>uh, <00:10:43.902>update <00:10:44.030>item,

157
00:10:47.210 --> 00:10:48.950
<00:10:47.210>delete <00:10:47.910>item, <00:10:48.610>uh,

158
00:10:48.950 --> 00:10:53.230
<00:10:48.950>which <00:10:49.066>are <00:10:49.183>basically <00:10:49.300>operations <00:10:49.416>accessing <00:10:49.533>the <00:10:49.650>data <00:10:49.766>by <00:10:49.883>the <00:10:50.000>by <00:10:50.116>by <00:10:50.233>primary <00:10:50.350>key.

159
00:10:54.010 --> 00:10:58.190
<00:10:54.010>And <00:10:54.126>there <00:10:54.243>is <00:10:54.360>a <00:10:54.476>query <00:10:54.593>cache, <00:10:54.710>which <00:10:54.826>is <00:10:54.943>used <00:10:55.060>for <00:10:55.176>queries <00:10:55.293>and, <00:10:55.410>uh,

160
00:10:58.650 --> 00:10:59.710
<00:10:58.650>by <00:10:59.127>queries, <00:10:59.604>uh,

161
00:10:59.890 --> 00:11:04.070
<00:10:59.890>in <00:11:00.006>queries <00:11:00.123>are <00:11:00.240>also <00:11:00.356>included <00:11:00.473>the <00:11:00.590>requests <00:11:00.706>by <00:11:00.823>global <00:11:00.939>secondary <00:11:01.056>indexes. <00:11:01.173>So <00:11:01.290>the,

162
00:11:04.170 --> 00:11:05.910
<00:11:04.170>the <00:11:04.449>problem <00:11:04.729>with <00:11:05.010>these <00:11:05.290>two, <00:11:05.569>uh,

163
00:11:06.050 --> 00:11:10.350
<00:11:06.050>two <00:11:06.177>type <00:11:06.304>of <00:11:06.431>caches <00:11:06.559>is <00:11:06.686>that <00:11:06.813>when <00:11:06.940>you <00:11:07.068>access <00:11:07.195>the <00:11:07.322>item <00:11:07.449>by,

164
00:11:10.690 --> 00:11:15.190
<00:11:10.690>by <00:11:10.806>key, <00:11:10.923>uh, <00:11:11.040>query <00:11:11.156>cache <00:11:11.273>will <00:11:11.390>not <00:11:11.506>be <00:11:11.623>updated <00:11:11.740>and, <00:11:11.856>uh, <00:11:11.973>vice <00:11:12.090>versa.

165
00:11:16.170 --> 00:11:20.390
<00:11:16.170>And <00:11:16.277>the <00:11:16.385>second <00:11:16.493>thing <00:11:16.600>is <00:11:16.708>that <00:11:16.816>item <00:11:16.923>cache <00:11:17.031>can, <00:11:17.139>has <00:11:17.246>have <00:11:17.354>infinite <00:11:17.462>time, <00:11:17.569>uh,

166
00:11:20.390 --> 00:11:22.990
<00:11:20.390>time <00:11:20.623>to <00:11:20.856>leave, <00:11:21.090>which <00:11:21.323>was, <00:11:21.556>which, <00:11:21.790>uh,

167
00:11:23.170 --> 00:11:27.670
<00:11:23.170>fitted <00:11:23.270>perfectly <00:11:23.370>for <00:11:23.469>our <00:11:23.569>use <00:11:23.670>case <00:11:23.770>because <00:11:23.870>we <00:11:23.969>wanted <00:11:24.069>to <00:11:24.170>keep <00:11:24.270>the <00:11:24.370>whole <00:11:24.469>data <00:11:24.569>set

168
00:11:27.670 --> 00:11:32.550
<00:11:27.670>inside <00:11:27.777>that <00:11:27.885>Dex <00:11:27.993>notes. <00:11:28.100>But <00:11:28.208>in <00:11:28.316>case <00:11:28.423>of <00:11:28.531>query <00:11:28.639>cache, <00:11:28.746>uh, <00:11:28.854>unfortunately <00:11:28.962>you <00:11:29.069>would,

169
00:11:32.570 --> 00:11:35.910
<00:11:32.570>you <00:11:32.725>could, <00:11:32.881>you <00:11:33.036>should <00:11:33.192>have <00:11:33.347>limited <00:11:33.503>time <00:11:33.658>to <00:11:33.814>leave. <00:11:33.970>Um,

170
00:11:36.570 --> 00:11:40.230
<00:11:36.570>and <00:11:36.677>also <00:11:36.785>the <00:11:36.893>vertical <00:11:37.000>scaling, <00:11:37.108>uh, <00:11:37.216>also <00:11:37.323>could <00:11:37.431>be <00:11:37.539>a <00:11:37.646>problem <00:11:37.754>with <00:11:37.862>Dex <00:11:37.970>cluster.

171
00:11:40.370 --> 00:11:43.670
<00:11:40.370>So <00:11:40.570>if <00:11:40.770>you <00:11:40.970>provision <00:11:41.170>your <00:11:41.370>Dex <00:11:41.570>cluster <00:11:41.770>incorrectly,

172
00:11:43.930 --> 00:11:48.670
<00:11:43.930>you <00:11:44.017>choose <00:11:44.104>the <00:11:44.192>too <00:11:44.280>small, <00:11:44.367>uh, <00:11:44.454>too <00:11:44.542>small <00:11:44.630>of <00:11:44.717>a <00:11:44.805>node <00:11:44.892>size, <00:11:44.979>and <00:11:45.067>you <00:11:45.155>want <00:11:45.242>it <00:11:45.329>to,

173
00:11:48.850 --> 00:11:50.830
<00:11:48.850>you <00:11:49.083>want <00:11:49.316>to <00:11:49.550>scale <00:11:49.783>it <00:11:50.016>vertically, <00:11:50.250>um,

174
00:11:51.050 --> 00:11:55.600
<00:11:51.050>you <00:11:51.143>would <00:11:51.236>have <00:11:51.329>to <00:11:51.423>create <00:11:51.516>a <00:11:51.609>new <00:11:51.703>Dex <00:11:51.796>cluster <00:11:51.890>and <00:11:51.983>hydrate <00:11:52.076>it <00:11:52.170>with <00:11:52.263>data <00:11:52.356>and, <00:11:52.449>uh,

175
00:11:55.950 --> 00:12:00.080
<00:11:55.950>make <00:11:56.125>a <00:11:56.300>switchover <00:11:56.475>and <00:11:56.650>all <00:11:56.825>other, <00:11:57.000>uh, <00:11:57.175>unpleasant <00:11:57.350>stuff.

176
00:12:00.980 --> 00:12:05.520
<00:12:00.980>Um, <00:12:01.073>and, <00:12:01.166>uh, <00:12:01.260>uh, <00:12:01.353>next <00:12:01.446>I <00:12:01.540>would <00:12:01.633>like <00:12:01.726>to <00:12:01.820>tell <00:12:01.913>you <00:12:02.006>about <00:12:02.100>the <00:12:02.193>migration <00:12:02.286>process. <00:12:02.380>Uh,

177
00:12:05.520 --> 00:12:10.360
<00:12:05.520>the <00:12:05.607>steps <00:12:05.694>that <00:12:05.782>we <00:12:05.870>took <00:12:05.957>to, <00:12:06.045>in <00:12:06.132>order <00:12:06.220>to, <00:12:06.307>uh, <00:12:06.395>swap <00:12:06.482>the <00:12:06.569>database. <00:12:06.657>So, <00:12:06.745>first <00:12:06.832>of <00:12:06.920>all,

178
00:12:11.060 --> 00:12:14.600
<00:12:11.060>uh, <00:12:11.199>we <00:12:11.339>enabled <00:12:11.479>dual <00:12:11.619>right <00:12:11.760>mode, <00:12:11.900>and <00:12:12.040>in <00:12:12.180>dual <00:12:12.319>right <00:12:12.459>mode,

179
00:12:14.620 --> 00:12:18.840
<00:12:14.620>we <00:12:14.736>write <00:12:14.853>both <00:12:14.970>to <00:12:15.086>Redis <00:12:15.203>and <00:12:15.320>to <00:12:15.436>Dynamic <00:12:15.553>db. <00:12:15.670>And <00:12:15.786>in <00:12:15.903>this <00:12:16.020>case,

180
00:12:18.980 --> 00:12:20.360
<00:12:18.980>we <00:12:19.394>did <00:12:19.808>it <00:12:20.222>sequentially.

181
00:12:20.980 --> 00:12:25.040
<00:12:20.980>So <00:12:21.096>basically <00:12:21.213>it <00:12:21.330>doubled <00:12:21.446>down <00:12:21.563>the <00:12:21.680>latency <00:12:21.796>of <00:12:21.913>right <00:12:22.030>operations. <00:12:22.146>But <00:12:22.263>as, <00:12:22.380>uh,

182
00:12:25.060 --> 00:12:27.920
<00:12:25.060>as <00:12:25.199>I <00:12:25.339>told <00:12:25.479>you <00:12:25.619>earlier, <00:12:25.760>we <00:12:25.900>don't <00:12:26.040>have <00:12:26.180>ma <00:12:26.319>many, <00:12:26.459>right.

183
00:12:27.920 --> 00:12:32.160
<00:12:27.920>Operations <00:12:28.094>users <00:12:28.270>don't, <00:12:28.444>uh, <00:12:28.620>change <00:12:28.795>their <00:12:28.969>name <00:12:29.145>so <00:12:29.319>often.

184
00:12:33.180 --> 00:12:38.040
<00:12:33.180>Uh, <00:12:33.319>and, <00:12:33.459>uh, <00:12:33.599>that's <00:12:33.739>why <00:12:33.880>we <00:12:34.020>could <00:12:34.160>cope <00:12:34.300>with <00:12:34.439>that. <00:12:34.579>And,

185
00:12:38.100 --> 00:12:41.080
<00:12:38.100>uh, <00:12:38.240>but <00:12:38.380>the, <00:12:38.520>uh, <00:12:38.660>the <00:12:38.800>benefit <00:12:38.940>of <00:12:39.080>this <00:12:39.220>is <00:12:39.360>that, <00:12:39.500>uh,

186
00:12:41.280 --> 00:12:43.640
<00:12:41.280>a <00:12:41.480>sequential <00:12:41.680>approach <00:12:41.880>is <00:12:42.079>much <00:12:42.280>less <00:12:42.480>error <00:12:42.680>prone.

187
00:12:44.540 --> 00:12:48.880
<00:12:44.540>And <00:12:44.656>also <00:12:44.773>we <00:12:44.890>performed <00:12:45.006>inserts <00:12:45.123>instead <00:12:45.240>of <00:12:45.356>updates. <00:12:45.473>So <00:12:45.589>there <00:12:45.706>was <00:12:45.823>an, <00:12:45.939>uh,

188
00:12:49.780 --> 00:12:54.440
<00:12:49.780>uh, <00:12:49.920>uh, <00:12:50.060>partial <00:12:50.199>update <00:12:50.339>of <00:12:50.480>item <00:12:50.620>item <00:12:50.760>in <00:12:50.900>the <00:12:51.040>database. <00:12:51.180>Uh,

189
00:12:54.660 --> 00:12:59.360
<00:12:54.660>we <00:12:54.800>were <00:12:54.939>performing <00:12:55.079>the <00:12:55.219>absurd <00:12:55.360>of <00:12:55.500>the <00:12:55.640>whole <00:12:55.780>record, <00:12:55.920>and <00:12:56.060>this,

190
00:12:59.500 --> 00:13:03.240
<00:12:59.500>all <00:12:59.600>this <00:12:59.700>feature <00:12:59.800>and <00:12:59.900>all <00:13:00.000>the <00:13:00.100>rest <00:13:00.200>of <00:13:00.300>the <00:13:00.400>steps <00:13:00.500>were <00:13:00.600>controlled <00:13:00.700>by <00:13:00.800>feature <00:13:00.900>fluxx

191
00:13:03.450 --> 00:13:07.720
<00:13:03.450>flags <00:13:03.566>that <00:13:03.683>could <00:13:03.800>be <00:13:03.916>turned <00:13:04.033>off <00:13:04.150>and <00:13:04.266>rolled <00:13:04.383>back <00:13:04.500>within <00:13:04.616>five <00:13:04.733>seconds. <00:13:04.850>So,

192
00:13:08.260 --> 00:13:11.640
<00:13:08.260>uh, <00:13:08.460>if <00:13:08.660>there <00:13:08.860>would <00:13:09.060>any <00:13:09.260>problems, <00:13:09.460>uh, <00:13:09.660>happen,

193
00:13:12.300 --> 00:13:15.520
<00:13:12.300>we <00:13:12.474>could <00:13:12.650>turn <00:13:12.824>it <00:13:13.000>off <00:13:13.175>immediately, <00:13:13.349>al <00:13:13.525>almost <00:13:13.699>immediately.

194
00:13:16.700 --> 00:13:19.840
<00:13:16.700>And <00:13:16.840>the <00:13:16.980>next <00:13:17.120>step <00:13:17.260>that <00:13:17.400>we <00:13:17.540>took <00:13:17.680>was, <00:13:17.820>uh, <00:13:17.960>data <00:13:18.100>migration.

195
00:13:20.340 --> 00:13:23.000
<00:13:20.340>So <00:13:20.480>this <00:13:20.620>was <00:13:20.760>done <00:13:20.900>by <00:13:21.040>background <00:13:21.180>job, <00:13:21.320>and <00:13:21.460>in <00:13:21.600>this <00:13:21.740>case,

196
00:13:23.000 --> 00:13:28.000
<00:13:23.000>we <00:13:23.116>were <00:13:23.233>performing <00:13:23.350>inserts <00:13:23.466>instead <00:13:23.583>of <00:13:23.700>serts <00:13:23.816>on <00:13:23.933>the <00:13:24.050>diagrams, <00:13:24.166>you <00:13:24.283>see <00:13:24.400>that,

197
00:13:28.060 --> 00:13:31.280
<00:13:28.060>uh, <00:13:28.260>we <00:13:28.459>basically <00:13:28.660>analyzed <00:13:28.859>all <00:13:29.060>kinds <00:13:29.260>of, <00:13:29.459>uh,

198
00:13:31.320 --> 00:13:36.120
<00:13:31.320>combinations <00:13:31.460>of <00:13:31.600>phrase <00:13:31.740>conditions <00:13:31.880>between <00:13:32.020>data, <00:13:32.160>uh, <00:13:32.300>dual <00:13:32.440>right <00:13:32.580>and <00:13:32.720>migration.

199
00:13:36.620 --> 00:13:41.520
<00:13:36.620>And <00:13:36.713>if <00:13:36.806>we <00:13:36.900>would <00:13:36.993>use, <00:13:37.086>for <00:13:37.180>example, <00:13:37.273>inserts <00:13:37.366>on <00:13:37.460>D <00:13:37.553>data, <00:13:37.646>uh, <00:13:37.740>dual <00:13:37.833>right, <00:13:37.926>and, <00:13:38.020>uh,

200
00:13:41.620 --> 00:13:44.280
<00:13:41.620>uh, <00:13:41.900>inserts <00:13:42.180>or <00:13:42.460>inserts <00:13:42.740>on <00:13:43.020>migration,

201
00:13:44.280 --> 00:13:49.000
<00:13:44.280>we <00:13:44.387>would <00:13:44.495>end <00:13:44.603>up <00:13:44.710>in <00:13:44.818>the <00:13:44.926>inconsistent <00:13:45.033>data <00:13:45.141>if <00:13:45.249>in <00:13:45.356>these <00:13:45.464>cases. <00:13:45.572>And <00:13:45.680>here,

202
00:13:49.040 --> 00:13:52.440
<00:13:49.040>I <00:13:49.133>would <00:13:49.226>like <00:13:49.319>to, <00:13:49.413>to <00:13:49.506>ask <00:13:49.599>you <00:13:49.693>the <00:13:49.786>question, <00:13:49.880>and <00:13:49.973>I <00:13:50.066>dunno <00:13:50.160>if <00:13:50.253>we <00:13:50.346>would, <00:13:50.439>uh,

203
00:13:52.460 --> 00:13:53.560
<00:13:52.460>be <00:13:52.658>able <00:13:52.856>to <00:13:53.054>answer <00:13:53.252>it <00:13:53.449>now,

204
00:13:53.580 --> 00:13:57.920
<00:13:53.580>but <00:13:53.680>you <00:13:53.780>can <00:13:53.880>come <00:13:53.980>to <00:13:54.080>me <00:13:54.180>later <00:13:54.280>after <00:13:54.380>this <00:13:54.480>session <00:13:54.580>and <00:13:54.680>answer <00:13:54.780>this <00:13:54.880>question. <00:13:54.980>So,

205
00:13:58.100 --> 00:14:00.840
<00:13:58.100>in <00:13:58.255>which <00:13:58.411>case, <00:13:58.566>we <00:13:58.722>would <00:13:58.877>still <00:13:59.033>end <00:13:59.188>up <00:13:59.344>in <00:13:59.500>inconsistency.

206
00:14:00.940 --> 00:14:05.560
<00:14:00.940>So <00:14:01.067>there <00:14:01.194>is <00:14:01.321>a <00:14:01.449>still <00:14:01.576>a <00:14:01.703>possibility <00:14:01.830>in <00:14:01.958>this <00:14:02.085>solution, <00:14:02.212>uh, <00:14:02.340>that,

207
00:14:05.860 --> 00:14:09.400
<00:14:05.860>uh, <00:14:06.093>could <00:14:06.326>lead <00:14:06.560>to <00:14:06.793>inconsistency <00:14:07.026>in, <00:14:07.260>uh,

208
00:14:09.460 --> 00:14:13.440
<00:14:09.460>in <00:14:09.553>the <00:14:09.646>dynamic <00:14:09.740>DB <00:14:09.833>database. <00:14:09.926>So <00:14:10.020>if <00:14:10.113>you <00:14:10.206>know <00:14:10.300>the <00:14:10.393>answer, <00:14:10.486>please <00:14:10.580>come <00:14:10.673>to <00:14:10.766>me. <00:14:10.860>We,

209
00:14:13.620 --> 00:14:17.560
<00:14:13.620>we <00:14:13.747>would <00:14:13.874>give <00:14:14.001>you <00:14:14.129>some <00:14:14.256>swag <00:14:14.383>for, <00:14:14.510>for <00:14:14.638>the <00:14:14.765>right <00:14:14.892>answer. <00:14:15.020>Um,

210
00:14:18.790 --> 00:14:20.000
<00:14:18.790>okay. <00:14:19.334>And, <00:14:19.879>um,

211
00:14:20.270 --> 00:14:25.200
<00:14:20.270>next <00:14:20.425>step <00:14:20.581>was <00:14:20.736>shadow <00:14:20.892>calls <00:14:21.047>and, <00:14:21.203>uh, <00:14:21.358>shadow <00:14:21.514>calls. <00:14:21.670>Uh,

212
00:14:25.500 --> 00:14:27.280
<00:14:25.500>it, <00:14:25.850>uh, <00:14:26.200>on <00:14:26.550>shadow, <00:14:26.900>uh,

213
00:14:27.300 --> 00:14:30.680
<00:14:27.300>shadow <00:14:27.533>calls <00:14:27.766>were <00:14:28.000>performed <00:14:28.233>as <00:14:28.466>synchronously <00:14:28.699>for,

214
00:14:31.220 --> 00:14:35.400
<00:14:31.220>so <00:14:31.320>basically <00:14:31.420>it <00:14:31.520>is <00:14:31.620>about <00:14:31.720>reading. <00:14:31.820>So <00:14:31.920>now <00:14:32.020>we <00:14:32.120>are <00:14:32.220>talking <00:14:32.320>about <00:14:32.420>reading <00:14:32.520>data <00:14:32.620>from,

215
00:14:35.470 --> 00:14:37.360
<00:14:35.470>from, <00:14:35.670>uh, <00:14:35.870>data <00:14:36.070>storage. <00:14:36.270>And <00:14:36.470>in <00:14:36.670>this <00:14:36.870>case,

216
00:14:37.360 --> 00:14:41.760
<00:14:37.360>we <00:14:37.487>were <00:14:37.614>performing <00:14:37.741>the <00:14:37.869>reads <00:14:37.996>both <00:14:38.123>to <00:14:38.250>Radius <00:14:38.378>and <00:14:38.505>to <00:14:38.632>Dyod <00:14:38.760>db,

217
00:14:41.760 --> 00:14:45.560
<00:14:41.760>but <00:14:41.876>the <00:14:41.993>source <00:14:42.110>of <00:14:42.226>truth <00:14:42.343>was <00:14:42.460>still <00:14:42.576>Radius. <00:14:42.693>But <00:14:42.810>dyod <00:14:42.926>db, <00:14:43.043>uh, <00:14:43.160>uh,

218
00:14:45.980 --> 00:14:49.760
<00:14:45.980>we <00:14:46.120>performed <00:14:46.260>only <00:14:46.400>a <00:14:46.540>synchronous <00:14:46.680>call, <00:14:46.820>and, <00:14:46.960>uh, <00:14:47.100>we <00:14:47.240>just, <00:14:47.380>uh,

219
00:14:50.150 --> 00:14:53.360
<00:14:50.150>were <00:14:50.305>logging <00:14:50.461>any <00:14:50.616>exceptions <00:14:50.772>that <00:14:50.927>could <00:14:51.083>happen <00:14:51.238>and <00:14:51.394>growing <00:14:51.550>them.

220
00:14:53.860 --> 00:14:58.200
<00:14:53.860>And <00:14:53.960>also <00:14:54.060>we <00:14:54.160>were <00:14:54.260>performing <00:14:54.360>consistency <00:14:54.460>check <00:14:54.560>in <00:14:54.660>order <00:14:54.760>to <00:14:54.860>check <00:14:54.960>if <00:14:55.060>the <00:14:55.160>data <00:14:55.260>in

221
00:14:58.200 --> 00:15:01.880
<00:14:58.200>Dynamic <00:14:58.327>DB <00:14:58.454>and <00:14:58.581>in <00:14:58.709>Postgres <00:14:58.836>are <00:14:58.963>the <00:14:59.090>same, <00:14:59.218>oh, <00:14:59.345>sorry, <00:14:59.472>in <00:14:59.600>Postgres,

222
00:15:02.380 --> 00:15:04.560
<00:15:02.380>in <00:15:02.613>Redis <00:15:02.846>are <00:15:03.080>the <00:15:03.313>same. <00:15:03.546>And <00:15:03.780>also,

223
00:15:04.560 --> 00:15:09.040
<00:15:04.560>we <00:15:04.667>collected <00:15:04.775>the <00:15:04.883>latency <00:15:04.990>metrics <00:15:05.098>so <00:15:05.206>that <00:15:05.313>we <00:15:05.421>can <00:15:05.529>prove <00:15:05.636>that <00:15:05.744>actually <00:15:05.852>the, <00:15:05.959>uh,

224
00:15:09.460 --> 00:15:14.460
<00:15:09.460>uh, <00:15:09.576>the <00:15:09.693>performance <00:15:09.810>of <00:15:09.926>Dux <00:15:10.043>and <00:15:10.160>Dyb <00:15:10.276>is <00:15:10.393>what <00:15:10.510>we <00:15:10.626>expect. <00:15:10.743>And <00:15:10.860>also,

225
00:15:14.610 --> 00:15:19.540
<00:15:14.610>this <00:15:14.717>change <00:15:14.825>was <00:15:14.933>enabled <00:15:15.040>gradually. <00:15:15.148>So <00:15:15.256>we <00:15:15.363>didn't <00:15:15.471>turn <00:15:15.579>off, <00:15:15.686>turn <00:15:15.794>on <00:15:15.902>the, <00:15:16.010>uh,

226
00:15:19.700 --> 00:15:23.820
<00:15:19.700>a <00:15:19.807>synchronous <00:15:19.915>call <00:15:20.023>to, <00:15:20.130>uh, <00:15:20.238>DYOD <00:15:20.346>DB <00:15:20.453>for <00:15:20.561>all <00:15:20.669>requests <00:15:20.776>at <00:15:20.884>the <00:15:20.992>same <00:15:21.100>time.

227
00:15:23.880 --> 00:15:28.140
<00:15:23.880>We <00:15:24.007>just <00:15:24.134>enabled <00:15:24.261>it <00:15:24.389>gradually <00:15:24.516>in <00:15:24.643>order <00:15:24.770>to <00:15:24.898>prove <00:15:25.025>that <00:15:25.152>our, <00:15:25.280>uh,

228
00:15:28.410 --> 00:15:31.220
<00:15:28.410>that <00:15:28.610>our, <00:15:28.810>uh, <00:15:29.010>infrastructure <00:15:29.209>can <00:15:29.410>handle <00:15:29.610>the <00:15:29.810>lot.

229
00:15:33.200 --> 00:15:37.940
<00:15:33.200>And <00:15:33.293>it <00:15:33.386>was <00:15:33.480>time <00:15:33.573>to <00:15:33.666>actually <00:15:33.760>turn <00:15:33.853>it <00:15:33.946>on <00:15:34.040>for <00:15:34.133>our <00:15:34.226>clients. <00:15:34.320>Uh, <00:15:34.413>but <00:15:34.506>first <00:15:34.600>we,

230
00:15:38.120 --> 00:15:42.820
<00:15:38.120>we <00:15:38.227>tried <00:15:38.335>to, <00:15:38.443>to, <00:15:38.550>we <00:15:38.658>tested <00:15:38.766>it <00:15:38.873>on <00:15:38.981>ourselves. <00:15:39.089>And <00:15:39.196>this, <00:15:39.304>uh, <00:15:39.412>white, <00:15:39.520>uh,

231
00:15:43.120 --> 00:15:47.860
<00:15:43.120>lab <00:15:43.227>mouse, <00:15:43.335>which <00:15:43.443>is <00:15:43.550>generated <00:15:43.658>by <00:15:43.766>MI <00:15:43.873>Miro <00:15:43.981>AI <00:15:44.089>feature, <00:15:44.196>by <00:15:44.304>the <00:15:44.412>way, <00:15:44.520>um,

232
00:15:48.580 --> 00:15:53.100
<00:15:48.580>represents <00:15:48.696>us <00:15:48.813>MI <00:15:48.930>employees, <00:15:49.046>uh, <00:15:49.163>who <00:15:49.280>should <00:15:49.396>eat <00:15:49.513>their <00:15:49.630>own <00:15:49.746>dog <00:15:49.863>food <00:15:49.980>first.

233
00:15:53.490 --> 00:15:54.620
<00:15:53.490>This <00:15:53.829>is <00:15:54.168>our <00:15:54.507>principle,

234
00:15:55.720 --> 00:16:00.180
<00:15:55.720>and <00:15:55.820>this <00:15:55.920>step <00:15:56.020>was <00:15:56.120>needed <00:15:56.220>in <00:15:56.320>order <00:15:56.420>to <00:15:56.520>make <00:15:56.620>sure <00:15:56.720>that <00:15:56.820>eventual <00:15:56.920>consistency <00:15:57.020>that <00:15:57.120>in

235
00:16:00.200 --> 00:16:04.020
<00:16:00.200>was <00:16:00.375>introduced <00:16:00.550>by <00:16:00.725>DAX <00:16:00.900>does <00:16:01.075>not <00:16:01.250>affect <00:16:01.425>our <00:16:01.600>ui.

236
00:16:06.550 --> 00:16:10.210
<00:16:06.550>And <00:16:06.689>then <00:16:06.829>we <00:16:06.969>turned <00:16:07.109>it <00:16:07.250>on <00:16:07.390>for <00:16:07.530>all <00:16:07.670>external <00:16:07.810>users. <00:16:07.949>Uh,

237
00:16:10.210 --> 00:16:12.890
<00:16:10.210>but <00:16:10.385>we <00:16:10.560>did <00:16:10.735>it <00:16:10.910>also <00:16:11.085>gradually <00:16:11.260>for <00:16:11.435>one <00:16:11.610>minute,

238
00:16:13.230 --> 00:16:17.490
<00:16:13.230>and <00:16:13.370>then <00:16:13.510>checking <00:16:13.650>the <00:16:13.790>logs, <00:16:13.930>checking <00:16:14.070>everything <00:16:14.210>that <00:16:14.350>everything <00:16:14.490>is <00:16:14.630>fine.

239
00:16:17.760 --> 00:16:21.850
<00:16:17.760>Then <00:16:17.900>for <00:16:18.040>one <00:16:18.180>hour <00:16:18.319>collecting <00:16:18.460>feedback <00:16:18.600>from <00:16:18.740>our <00:16:18.880>clients. <00:16:19.020>Nothing, <00:16:19.160>uh,

240
00:16:22.050 --> 00:16:26.650
<00:16:22.050>happened <00:16:22.177>fortunately, <00:16:22.304>uh, <00:16:22.431>and <00:16:22.559>we <00:16:22.686>were <00:16:22.813>able <00:16:22.940>to <00:16:23.068>turn <00:16:23.195>it <00:16:23.322>on <00:16:23.449>permanently.

241
00:16:28.210 --> 00:16:29.830
<00:16:28.210>And <00:16:28.490>next <00:16:28.770>I <00:16:29.050>would, <00:16:29.330>at <00:16:29.610>last,

242
00:16:29.910 --> 00:16:33.910
<00:16:29.910>I <00:16:30.003>would <00:16:30.096>like <00:16:30.189>to <00:16:30.283>share <00:16:30.376>with <00:16:30.469>you <00:16:30.563>some <00:16:30.656>findings <00:16:30.750>that <00:16:30.843>we <00:16:30.936>had <00:16:31.030>during <00:16:31.123>adoption <00:16:31.216>of, <00:16:31.310>uh,

243
00:16:34.310 --> 00:16:38.390
<00:16:34.310>dyod <00:16:34.437>DB <00:16:34.564>and <00:16:34.691>dax. <00:16:34.819>So, <00:16:34.946>uh, <00:16:35.073>when <00:16:35.200>we <00:16:35.328>enabled, <00:16:35.455>uh, <00:16:35.582>shadow <00:16:35.709>call,

244
00:16:39.090 --> 00:16:44.070
<00:16:39.090>we <00:16:39.230>noticed <00:16:39.370>that <00:16:39.510>sometimes <00:16:39.650>our <00:16:39.790>DAX <00:16:39.930>cluster <00:16:40.070>throws <00:16:40.210>throttle <00:16:40.350>request <00:16:40.490>errors,

245
00:16:45.170 --> 00:16:49.790
<00:16:45.170>and, <00:16:45.286>uh, <00:16:45.403>we've <00:16:45.520>noticed <00:16:45.636>that <00:16:45.753>it <00:16:45.870>is <00:16:45.986>connected <00:16:46.103>to <00:16:46.219>request <00:16:46.336>count, <00:16:46.453>uh, <00:16:46.569>growth.

246
00:16:50.410 --> 00:16:55.230
<00:16:50.410>So <00:16:50.537>our <00:16:50.664>service <00:16:50.791>sometimes <00:16:50.919>experience <00:16:51.046>a <00:16:51.173>very <00:16:51.300>short <00:16:51.428>and, <00:16:51.555>uh, <00:16:51.682>high <00:16:51.810>load,

247
00:16:55.530 --> 00:16:58.910
<00:16:55.530>um, <00:16:55.685>uh, <00:16:55.841>like <00:16:55.996>for <00:16:56.152>the <00:16:56.307>short <00:16:56.463>time, <00:16:56.618>it <00:16:56.774>just, <00:16:56.930>uh,

248
00:16:59.170 --> 00:17:03.230
<00:16:59.170>amount <00:16:59.310>of <00:16:59.449>requests <00:16:59.589>goes <00:16:59.729>up <00:16:59.870>really <00:17:00.010>quickly. <00:17:00.150>And <00:17:00.290>in <00:17:00.430>this <00:17:00.569>case,

249
00:17:03.340 --> 00:17:07.830
<00:17:03.340>what <00:17:03.456>happened <00:17:03.573>is <00:17:03.690>that, <00:17:03.806>uh, <00:17:03.923>we <00:17:04.040>also <00:17:04.156>noticed <00:17:04.273>that <00:17:04.390>in, <00:17:04.506>uh, <00:17:04.623>Dax <00:17:04.740>Luster,

250
00:17:07.830 --> 00:17:10.990
<00:17:07.829>there <00:17:07.970>was <00:17:08.109>a, <00:17:08.250>there <00:17:08.389>was <00:17:08.530>a <00:17:08.669>metric <00:17:08.810>called <00:17:08.949>connection <00:17:09.089>collide <00:17:09.230>connections,

251
00:17:10.990 --> 00:17:15.830
<00:17:10.990>which <00:17:11.117>was <00:17:11.244>also <00:17:11.371>raising <00:17:11.499>really <00:17:11.626>quickly. <00:17:11.753>And, <00:17:11.880>uh, <00:17:12.008>what <00:17:12.135>happened <00:17:12.262>is <00:17:12.390>that,

252
00:17:16.250 --> 00:17:19.230
<00:17:16.250>uh, <00:17:16.390>these <00:17:16.530>connections <00:17:16.670>when <00:17:16.810>they <00:17:16.950>are <00:17:17.089>created, <00:17:17.230>if <00:17:17.369>they're <00:17:17.510>connect, <00:17:17.650>uh,

253
00:17:19.230 --> 00:17:22.630
<00:17:19.230>created <00:17:19.346>very <00:17:19.463>fast. <00:17:19.579>Dax <00:17:19.696>Luster <00:17:19.813>actually <00:17:19.930>consumes <00:17:20.046>a <00:17:20.163>lot <00:17:20.280>of <00:17:20.396>C <00:17:20.513>P <00:17:20.630>U.

254
00:17:23.410 --> 00:17:25.190
<00:17:23.410>But <00:17:23.690>the <00:17:23.970>problem <00:17:24.250>that <00:17:24.530>there <00:17:24.810>is,

255
00:17:25.190 --> 00:17:29.310
<00:17:25.190>there <00:17:25.317>was <00:17:25.444>no <00:17:25.571>visibility <00:17:25.699>in <00:17:25.826>CloudWatch <00:17:25.953>because <00:17:26.080>this <00:17:26.208>happened <00:17:26.335>very <00:17:26.462>short, <00:17:26.590>very,

256
00:17:29.310 --> 00:17:34.310
<00:17:29.310>very, <00:17:29.426>very <00:17:29.543>quickly. <00:17:29.659>Uh, <00:17:29.776>uh, <00:17:29.893>the, <00:17:30.010>the <00:17:30.126>spike <00:17:30.243>was <00:17:30.360>around <00:17:30.476>300 <00:17:30.593>milliseconds <00:17:30.710>long.

257
00:17:34.770 --> 00:17:38.470
<00:17:34.770>But, <00:17:34.877>uh, <00:17:34.985>the, <00:17:35.093>uh, <00:17:35.200>best <00:17:35.308>resolution <00:17:35.416>of <00:17:35.523>Cloud <00:17:35.631>watch <00:17:35.739>is <00:17:35.846>one <00:17:35.954>second. <00:17:36.062>So <00:17:36.170>you,

258
00:17:38.530 --> 00:17:42.790
<00:17:38.530>you <00:17:38.629>cannot <00:17:38.730>see <00:17:38.830>this, <00:17:38.930>uh, <00:17:39.030>the <00:17:39.129>extensive <00:17:39.230>usage <00:17:39.330>of <00:17:39.430>C <00:17:39.530>P <00:17:39.629>U <00:17:39.730>in, <00:17:39.830>in, <00:17:39.930>uh,

259
00:17:42.790 --> 00:17:46.270
<00:17:42.790>in <00:17:42.965>the <00:17:43.139>CloudWatch <00:17:43.315>in <00:17:43.490>this <00:17:43.665>case. <00:17:43.840>And, <00:17:44.014>uh, <00:17:44.190>um,

260
00:17:47.620 --> 00:17:50.200
<00:17:47.620>so, <00:17:47.969>uh, <00:17:48.320>um, <00:17:48.669>yeah. <00:17:49.020>So,

261
00:17:50.340 --> 00:17:54.400
<00:17:50.340>but <00:17:50.447>DAX <00:17:50.555>class <00:17:50.663>reacts <00:17:50.770>on <00:17:50.878>any <00:17:50.986>spikes <00:17:51.093>of <00:17:51.201>C <00:17:51.309>P <00:17:51.416>U <00:17:51.524>that <00:17:51.632>are, <00:17:51.740>uh,

262
00:17:54.400 --> 00:17:57.040
<00:17:54.400>longer <00:17:54.575>than <00:17:54.750>300 <00:17:54.925>milliseconds, <00:17:55.100>just <00:17:55.275>for <00:17:55.450>you <00:17:55.625>to <00:17:55.800>know.

263
00:17:58.430 --> 00:18:02.410
<00:17:58.430>And <00:17:58.530>because <00:17:58.630>of <00:17:58.730>the <00:17:58.830>pre <00:17:58.930>previous <00:17:59.030>problem, <00:17:59.130>we <00:17:59.230>had <00:17:59.330>to <00:17:59.430>add <00:17:59.530>another <00:17:59.630>dax, <00:17:59.730>uh, <00:17:59.830>note.

264
00:18:03.030 --> 00:18:06.970
<00:18:03.030>And <00:18:03.129>what <00:18:03.230>happened <00:18:03.330>when <00:18:03.430>we <00:18:03.530>added <00:18:03.629>the <00:18:03.730>DAX <00:18:03.830>node <00:18:03.930>to <00:18:04.030>our <00:18:04.129>surprise <00:18:04.230>that <00:18:04.330>the <00:18:04.430>mis

265
00:18:06.970 --> 00:18:11.170
<00:18:06.970>misrate <00:18:07.097>on <00:18:07.224>the, <00:18:07.351>on <00:18:07.479>all <00:18:07.606>ducks <00:18:07.733>nodes, <00:18:07.860>except <00:18:07.988>the <00:18:08.115>master <00:18:08.242>node, <00:18:08.370>uh,

266
00:18:11.170 --> 00:18:14.530
<00:18:11.170>raised <00:18:11.370>significantly. <00:18:11.570>Um, <00:18:11.770>and <00:18:11.970>what <00:18:12.170>was <00:18:12.370>the <00:18:12.570>problem?

267
00:18:15.190 --> 00:18:18.490
<00:18:15.190>The <00:18:15.365>problem <00:18:15.540>was <00:18:15.715>that <00:18:15.890>our <00:18:16.065>replication <00:18:16.240>lag <00:18:16.415>ra, <00:18:16.590>uh,

268
00:18:18.840 --> 00:18:22.930
<00:18:18.840>grow <00:18:19.014>grew <00:18:19.189>from <00:18:19.365>2030 <00:18:19.540>milliseconds <00:18:19.715>to <00:18:19.889>100, <00:18:20.064>200 <00:18:20.240>milliseconds.

269
00:18:23.110 --> 00:18:27.130
<00:18:23.110>So <00:18:23.310>almost <00:18:23.510>five <00:18:23.709>times <00:18:23.909>or <00:18:24.110>10 <00:18:24.310>times. <00:18:24.510>Um,

270
00:18:27.640 --> 00:18:30.690
<00:18:27.640>because, <00:18:27.795>just <00:18:27.951>because <00:18:28.106>of <00:18:28.262>adding <00:18:28.417>one <00:18:28.573>node. <00:18:28.728>So <00:18:28.884>we, <00:18:29.040>uh,

271
00:18:30.690 --> 00:18:34.770
<00:18:30.690>reached <00:18:30.772>out <00:18:30.854>to <00:18:30.937>a <00:18:31.019>w <00:18:31.101>s <00:18:31.184>support <00:18:31.266>and <00:18:31.348>they <00:18:31.431>said <00:18:31.513>like, <00:18:31.595>oh, <00:18:31.678>yeah, <00:18:31.760>it <00:18:31.842>is <00:18:31.925>a <00:18:32.007>known <00:18:32.090>issue.

272
00:18:34.990 --> 00:18:38.890
<00:18:34.990>We <00:18:35.117>observe <00:18:35.244>it <00:18:35.371>with <00:18:35.499>all <00:18:35.626>Dex <00:18:35.753>clusters, <00:18:35.880>uh, <00:18:36.008>of, <00:18:36.135>with <00:18:36.262>this <00:18:36.390>setup.

273
00:18:39.110 --> 00:18:42.890
<00:18:39.110>So <00:18:39.192>if <00:18:39.274>you, <00:18:39.357>if <00:18:39.439>you <00:18:39.521>are <00:18:39.604>running <00:18:39.686>on <00:18:39.768>three <00:18:39.851>Dex <00:18:39.933>Noes <00:18:40.015>and <00:18:40.098>you <00:18:40.180>want <00:18:40.262>to <00:18:40.345>add <00:18:40.427>the <00:18:40.510>fourth,

274
00:18:42.910 --> 00:18:44.890
<00:18:42.910>no <00:18:43.260>one, <00:18:43.610>please <00:18:43.960>think <00:18:44.310>twice.

275
00:18:45.890 --> 00:18:49.410
<00:18:45.890>I <00:18:45.967>don't <00:18:46.045>know <00:18:46.123>why <00:18:46.201>I <00:18:46.278>explained <00:18:46.356>bugs <00:18:46.434>of <00:18:46.512>a <00:18:46.590>w <00:18:46.667>s <00:18:46.745>and <00:18:46.823>they <00:18:46.901>don't <00:18:46.978>even <00:18:47.056>pay <00:18:47.134>me <00:18:47.212>for <00:18:47.290>that.

276
00:18:49.600 --> 00:18:52.170
<00:18:49.600>Okay. <00:18:50.066>But <00:18:50.533>anyways, <00:18:51.000>um,

277
00:18:52.910 --> 00:18:55.330
<00:18:52.910>and <00:18:53.065>I <00:18:53.221>would <00:18:53.376>like <00:18:53.532>to <00:18:53.687>share <00:18:53.843>a <00:18:53.998>bit <00:18:54.154>about <00:18:54.310>results.

278
00:18:55.390 --> 00:18:59.050
<00:18:55.390>So <00:18:55.490>we <00:18:55.590>were <00:18:55.690>able <00:18:55.790>to <00:18:55.890>reduce <00:18:55.990>the <00:18:56.090>latency <00:18:56.190>for <00:18:56.290>some <00:18:56.390>endpoints <00:18:56.490>up <00:18:56.590>to <00:18:56.690>four <00:18:56.790>times,

279
00:18:59.670 --> 00:19:02.450
<00:18:59.670>and <00:18:59.845>we <00:19:00.020>moved <00:19:00.195>to <00:19:00.370>fully <00:19:00.545>managed <00:19:00.720>database <00:19:00.895>management <00:19:01.070>solution,

280
00:19:02.750 --> 00:19:07.570
<00:19:02.750>and <00:19:02.850>we <00:19:02.950>were <00:19:03.050>able <00:19:03.150>to <00:19:03.250>unblock <00:19:03.350>the <00:19:03.450>work <00:19:03.550>on <00:19:03.650>our <00:19:03.750>own <00:19:03.850>microservice <00:19:03.950>and <00:19:04.050>move <00:19:04.150>out

281
00:19:07.600 --> 00:19:12.490
<00:19:07.600>from, <00:19:07.740>from <00:19:07.879>the <00:19:08.020>monolith. <00:19:08.159>Thank <00:19:08.300>you <00:19:08.439>very <00:19:08.580>much <00:19:08.719>for <00:19:08.860>your <00:19:09.000>attention.

282
00:19:15.320 --> 00:19:16.340
<00:19:15.320>So <00:19:15.549>we <00:19:15.779>have <00:19:16.008>one <00:19:16.237>question.

283
00:19:17.250 --> 00:19:18.083
Cool.

284
00:19:18.200 --> 00:19:20.860
<00:19:18.200>But <00:19:18.375>I <00:19:18.550>don't, <00:19:18.725>okay. <00:19:18.900>What <00:19:19.075>is <00:19:19.250>the <00:19:19.425>reason <00:19:19.600>mm-hmm.

285
00:19:20.960 --> 00:19:24.740
<00:19:20.960>Reason <00:19:21.135>to <00:19:21.310>migrate <00:19:21.485>to <00:19:21.660>Dyna <00:19:21.835>Dynamo <00:19:22.010>DP <00:19:22.185>from <00:19:22.360>Redis?

286
00:19:25.280 --> 00:19:28.820
<00:19:25.280>If <00:19:25.420>you <00:19:25.560>could <00:19:25.700>do <00:19:25.840>a <00:19:25.980>much <00:19:26.120>Ether <00:19:26.260>migration <00:19:26.399>to <00:19:26.540>Redis <00:19:26.680>cluster

287
00:19:30.250 --> 00:19:33.020
<00:19:30.250>cluster <00:19:30.450>mode <00:19:30.650>on <00:19:30.850>a <00:19:31.050>w <00:19:31.250>s <00:19:31.450>Elastic <00:19:31.650>Cache,

288
00:19:33.360 --> 00:19:36.580
<00:19:33.360>you're <00:19:33.560>getting <00:19:33.760>a <00:19:33.959>vendor <00:19:34.159>log <00:19:34.360>with <00:19:34.560>Dynamo <00:19:34.760>automatically,

289
00:19:36.800 --> 00:19:41.220
<00:19:36.800>and <00:19:36.916>most <00:19:37.033>probably <00:19:37.149>it's <00:19:37.266>much <00:19:37.383>lower <00:19:37.500>than <00:19:37.616>in <00:19:37.733>memory <00:19:37.850>C <00:19:37.966>uh, <00:19:38.083>Redis. <00:19:38.200>Mm-hmm.

290
00:19:42.240 --> 00:19:47.180
<00:19:42.240>And <00:19:42.367>handling <00:19:42.494>throttling <00:19:42.621>cost <00:19:42.749>by <00:19:42.876>quarter <00:19:43.003>limitations <00:19:43.130>in <00:19:43.258>Dynamo <00:19:43.385>is <00:19:43.512>quite <00:19:43.640>tricky

291
00:19:47.320 --> 00:19:48.220
<00:19:47.320>on <00:19:47.590>scale <00:19:47.860>as <00:19:48.130>well.

292
00:19:49.090 --> 00:19:51.420
<00:19:49.090>Okay. <00:19:49.323>Yeah, <00:19:49.556>a <00:19:49.790>good <00:19:50.023>question. <00:19:50.256>Yeah. <00:19:50.490>Um,

293
00:19:51.960 --> 00:19:55.620
<00:19:51.960>why <00:19:52.067>we <00:19:52.175>didn't <00:19:52.283>want <00:19:52.390>to <00:19:52.498>use <00:19:52.606>the <00:19:52.713>separate <00:19:52.821>cluster <00:19:52.929>for <00:19:53.036>Redis? <00:19:53.144>First <00:19:53.252>of <00:19:53.360>all,

294
00:19:55.620 --> 00:20:00.580
<00:19:55.620>because <00:19:55.727>Redis <00:19:55.835>is <00:19:55.943>designed <00:19:56.050>as <00:19:56.158>a <00:19:56.266>c <00:19:56.373>solution <00:19:56.481>and, <00:19:56.589>uh, <00:19:56.696>or <00:19:56.804>transient <00:19:56.912>memories, <00:19:57.020>uh,

295
00:20:00.680 --> 00:20:04.300
<00:20:00.680>uh, <00:20:00.835>DA <00:20:00.991>data <00:20:01.146>store <00:20:01.302>as <00:20:01.457>I <00:20:01.613>told <00:20:01.768>before. <00:20:01.924>So <00:20:02.080>you,

296
00:20:04.300 --> 00:20:07.620
<00:20:04.300>of <00:20:04.399>course <00:20:04.500>you <00:20:04.600>can <00:20:04.700>tune <00:20:04.800>it <00:20:04.899>as <00:20:05.000>a <00:20:05.100>permanent <00:20:05.200>data <00:20:05.300>storage, <00:20:05.399>it <00:20:05.500>can <00:20:05.600>do <00:20:05.700>backups,

297
00:20:07.640 --> 00:20:12.380
<00:20:07.640>it <00:20:07.756>can <00:20:07.873>store <00:20:07.990>data <00:20:08.106>permanently, <00:20:08.223>but <00:20:08.340>it's <00:20:08.456>just <00:20:08.573>like, <00:20:08.690>looks <00:20:08.806>more <00:20:08.923>like <00:20:09.040>hacking.

298
00:20:12.840 --> 00:20:16.620
<00:20:12.840>Why <00:20:12.933>if <00:20:13.026>we <00:20:13.120>move <00:20:13.213>to <00:20:13.306>a <00:20:13.399>completely <00:20:13.493>new <00:20:13.586>data <00:20:13.679>store, <00:20:13.773>why <00:20:13.866>not <00:20:13.959>to <00:20:14.053>choose <00:20:14.146>something <00:20:14.240>more,

299
00:20:17.200 --> 00:20:20.540
<00:20:17.200>uh, <00:20:17.433>appropriate <00:20:17.666>for <00:20:17.900>that. <00:20:18.133>Right. <00:20:18.366>And, <00:20:18.600>uh,

300
00:20:20.870 --> 00:20:23.100
<00:20:20.870>about <00:20:21.219>the <00:20:21.570>vendor <00:20:21.919>vendor, <00:20:22.270>um,

301
00:20:24.770 --> 00:20:25.603
<00:20:24.770>Lock, <00:20:25.519>lock,

302
00:20:25.760 --> 00:20:29.020
<00:20:25.760>Uh, <00:20:25.887>that <00:20:26.014>you've <00:20:26.141>mentioned, <00:20:26.269>of <00:20:26.396>course <00:20:26.523>there's <00:20:26.650>a <00:20:26.778>vendor <00:20:26.905>lock, <00:20:27.032>but, <00:20:27.160>uh,

303
00:20:29.660 --> 00:20:33.460
<00:20:29.660>actually <00:20:29.776>the <00:20:29.893>code <00:20:30.010>is <00:20:30.126>isolated <00:20:30.243>very <00:20:30.360>nicely. <00:20:30.476>So <00:20:30.593>if <00:20:30.710>you <00:20:30.826>only <00:20:30.943>choose, <00:20:31.060>uh,

304
00:20:33.460 --> 00:20:38.380
<00:20:33.460>change <00:20:33.600>the <00:20:33.740>client <00:20:33.880>client <00:20:34.020>code, <00:20:34.160>which <00:20:34.300>directly <00:20:34.440>connects <00:20:34.580>to <00:20:34.720>Dynamic <00:20:34.860>db,

305
00:20:38.800 --> 00:20:42.620
<00:20:38.800>uh, <00:20:38.940>you <00:20:39.080>can <00:20:39.220>easily <00:20:39.360>switch <00:20:39.500>to <00:20:39.639>any <00:20:39.780>other <00:20:39.919>database. <00:20:40.060>So <00:20:40.200>it's,

306
00:20:42.640 --> 00:20:46.660
<00:20:42.640>it <00:20:42.756>is <00:20:42.873>not <00:20:42.990>of <00:20:43.106>a <00:20:43.223>big <00:20:43.340>problem. <00:20:43.456>And <00:20:43.573>in <00:20:43.690>case <00:20:43.806>of, <00:20:43.923>uh, <00:20:44.040>migrating,

307
00:20:46.720 --> 00:20:48.160
<00:20:46.720>you <00:20:46.979>still <00:20:47.238>would <00:20:47.497>have <00:20:47.756>to <00:20:48.016>say,

308
00:20:48.260 --> 00:20:52.720
<00:20:48.260>do <00:20:48.387>the <00:20:48.514>same <00:20:48.641>effort <00:20:48.769>from <00:20:48.896>Radius <00:20:49.023>to <00:20:49.150>another <00:20:49.278>Radius <00:20:49.405>cluster <00:20:49.532>simply <00:20:49.660>because,

309
00:20:53.340 --> 00:20:57.920
<00:20:53.340>um, <00:20:53.480>at <00:20:53.620>Redis <00:20:53.760>cluster <00:20:53.899>in <00:20:54.040>monolith <00:20:54.179>and <00:20:54.320>in <00:20:54.459>in <00:20:54.600>MI <00:20:54.740>monolith,

310
00:20:58.060 --> 00:21:02.000
<00:20:58.060>we <00:20:58.176>use <00:20:58.293>like <00:20:58.409>a <00:20:58.526>specific <00:20:58.643>data <00:20:58.760>storage <00:20:58.876>format. <00:20:58.993>So <00:20:59.110>it's <00:20:59.226>not <00:20:59.343>just, <00:20:59.460>uh,

311
00:21:02.310 --> 00:21:06.960
<00:21:02.310>copy <00:21:02.403>paste <00:21:02.496>the <00:21:02.590>data, <00:21:02.683>we <00:21:02.776>would <00:21:02.870>still <00:21:02.963>have <00:21:03.056>to <00:21:03.149>migrate <00:21:03.243>the <00:21:03.336>data. <00:21:03.429>So <00:21:03.523>in <00:21:03.616>this <00:21:03.710>case,

312
00:21:07.060 --> 00:21:09.840
<00:21:07.060>the <00:21:07.293>effort <00:21:07.526>would <00:21:07.760>be <00:21:07.993>the <00:21:08.226>same. <00:21:08.460>Yeah.

313
00:21:10.230 --> 00:21:14.080
<00:21:10.230>Yeah. <00:21:10.370>Thanks. <00:21:10.510>Is <00:21:10.650>there <00:21:10.790>any <00:21:10.930>question <00:21:11.070>in <00:21:11.210>the <00:21:11.350>audience? <00:21:11.490>Do <00:21:11.630>you

314
00:21:14.080 --> 00:21:17.280
<00:21:14.080>Have, <00:21:14.196>maybe <00:21:14.313>someone <00:21:14.429>can <00:21:14.546>answer <00:21:14.663>the <00:21:14.780>question <00:21:14.896>put <00:21:15.013>on <00:21:15.129>new <00:21:15.246>one <00:21:15.363>that <00:21:15.480>I,

315
00:21:17.350 --> 00:21:18.200
<00:21:17.350>that <00:21:17.732>I've <00:21:18.115>asked?

316
00:21:19.350 --> 00:21:21.680
<00:21:19.350>There's <00:21:19.629>a <00:21:19.909>new <00:21:20.189>question. <00:21:20.469>Let's <00:21:20.750>see.

317
00:21:28.490 --> 00:21:29.780
<00:21:28.490>Yeah, <00:21:28.877>there <00:21:29.264>more <00:21:29.651>questions.

318
00:21:32.690 --> 00:21:36.910
<00:21:32.690>Um, <00:21:32.830>no, <00:21:32.970>not <00:21:33.110>really. <00:21:33.250>Not <00:21:33.390>really. <00:21:33.530>I <00:21:33.670>mean, <00:21:33.810>probably, <00:21:33.950>I <00:21:34.090>mean,

319
00:21:36.910 --> 00:21:39.990
<00:21:36.910>maybe <00:21:37.037>there <00:21:37.164>could <00:21:37.291>be <00:21:37.419>more <00:21:37.546>possibilities <00:21:37.673>of <00:21:37.800>inconsistencies <00:21:37.928>that <00:21:38.055>we <00:21:38.182>don't <00:21:38.310>know,

320
00:21:40.010 --> 00:21:43.390
<00:21:40.010>but <00:21:40.097>this <00:21:40.185>is <00:21:40.272>not <00:21:40.360>what <00:21:40.447>I <00:21:40.535>mean. <00:21:40.622>But <00:21:40.710>you <00:21:40.797>can <00:21:40.885>come <00:21:40.972>later <00:21:41.060>and <00:21:41.147>try <00:21:41.235>to <00:21:41.322>explain <00:21:41.410>yourself.

321
00:21:43.390 --> 00:21:44.710
<00:21:43.390>Yeah. <00:21:43.687>Okay. <00:21:43.984>Thank <00:21:44.281>you. <00:21:44.578>Yeah.

322
00:21:45.370 --> 00:21:49.910
<00:21:45.370>So <00:21:45.649>would <00:21:45.929>you <00:21:46.209>consider <00:21:46.489>sick <00:21:46.770>bit?

323
00:21:51.910 --> 00:21:55.350
<00:21:51.910>Honestly, <00:21:52.065>no. <00:21:52.221>Okay. <00:21:52.376>But, <00:21:52.532>uh, <00:21:52.687>thanks <00:21:52.843>for, <00:21:52.998>for <00:21:53.154>this <00:21:53.310>notice.

324
00:21:55.670 --> 00:21:59.310
<00:21:55.670>I <00:21:55.825>would <00:21:55.981>check <00:21:56.136>out <00:21:56.292>what <00:21:56.447>is <00:21:56.603>that? <00:21:56.758>Um, <00:21:56.914>thank <00:21:57.070>you.

325
00:22:00.770 --> 00:22:04.190
<00:22:00.770>If <00:22:00.897>you <00:22:01.024>have <00:22:01.151>done <00:22:01.279>the <00:22:01.406>migration <00:22:01.533>now, <00:22:01.660>would <00:22:01.788>you <00:22:01.915>consider <00:22:02.042>memory <00:22:02.170>db?

326
00:22:05.960 --> 00:22:08.120
<00:22:05.960>Probably <00:22:06.160>would, <00:22:06.360>we <00:22:06.560>would <00:22:06.760>consider <00:22:06.960>more <00:22:07.160>options. <00:22:07.360>Uh,

327
00:22:08.540 --> 00:22:10.120
<00:22:08.540>the <00:22:08.773>reason <00:22:09.006>why <00:22:09.240>we <00:22:09.473>choose <00:22:09.706>Dynamic <00:22:09.940>db,

328
00:22:10.120 --> 00:22:13.800
<00:22:10.120>because <00:22:10.227>we <00:22:10.335>also <00:22:10.443>had <00:22:10.550>a <00:22:10.658>little <00:22:10.766>experience <00:22:10.873>in <00:22:10.981>our <00:22:11.089>team <00:22:11.196>with <00:22:11.304>Dynamic <00:22:11.412>db. <00:22:11.520>Okay.

329
00:22:14.040 --> 00:22:18.440
<00:22:14.040>A <00:22:14.147>little <00:22:14.255>bit <00:22:14.363>more <00:22:14.470>experience <00:22:14.578>with <00:22:14.686>other <00:22:14.793>databases, <00:22:14.901>and <00:22:15.009>also <00:22:15.116>like <00:22:15.224>to <00:22:15.332>adopt <00:22:15.440>other,

330
00:22:18.780 --> 00:22:21.800
<00:22:18.780>uh, <00:22:18.955>dynamic <00:22:19.129>DB <00:22:19.305>manage, <00:22:19.480>uh, <00:22:19.655>uh, <00:22:19.830>database <00:22:20.004>management <00:22:20.180>solutions.

331
00:22:21.800 --> 00:22:26.280
<00:22:21.800>We <00:22:21.955>would <00:22:22.111>have <00:22:22.266>to <00:22:22.422>communicate <00:22:22.577>more <00:22:22.733>with <00:22:22.888>our <00:22:23.044>management, <00:22:23.200>probably.

332
00:22:27.190 --> 00:22:29.800
<00:22:27.190>Yeah. <00:22:27.390>Perfect. <00:22:27.590>Thanks <00:22:27.790>a <00:22:27.990>lot <00:22:28.190>for <00:22:28.390>your <00:22:28.590>time.

333
00:22:29.800 --> 00:22:30.800
<00:22:29.800>Yeah, <00:22:30.024>thank <00:22:30.250>you <00:22:30.475>very <00:22:30.700>much.