WEBVTT

1
00:00:04.895 --> 00:00:06.105
<00:00:04.895>Yeah, <00:00:05.167>my <00:00:05.439>name <00:00:05.711>is <00:00:05.984>Vadim.

2
00:00:06.105 --> 00:00:09.105
<00:00:06.105>Serverless <00:00:06.280>is <00:00:06.455>one <00:00:06.630>of <00:00:06.805>my <00:00:06.980>passions, <00:00:07.155>Java <00:00:07.330>as <00:00:07.505>well.

3
00:00:09.205 --> 00:00:11.825
<00:00:09.205>So <00:00:09.405>just <00:00:09.605>now <00:00:09.805>combine <00:00:10.005>all <00:00:10.205>those <00:00:10.405>two <00:00:10.605>topics.

4
00:00:12.565 --> 00:00:15.385
<00:00:12.565>So <00:00:12.740>let's <00:00:12.915>start <00:00:13.090>just, <00:00:13.264>yeah, <00:00:13.440>probably <00:00:13.614>Java <00:00:13.790>is <00:00:13.965>one

5
00:00:15.385 --> 00:00:17.265
<00:00:15.385>of <00:00:15.665>the <00:00:15.945>most <00:00:16.225>popular <00:00:16.505>programming <00:00:16.785>languages.

6
00:00:17.265 --> 00:00:18.985
<00:00:17.265>And <00:00:17.465>if <00:00:17.665>you <00:00:17.865>will <00:00:18.065>look <00:00:18.265>into <00:00:18.465>the <00:00:18.665>statistics,

7
00:00:19.285 --> 00:00:22.505
<00:00:19.285>and <00:00:19.440>there <00:00:19.596>are <00:00:19.751>so <00:00:19.907>many <00:00:20.062>of <00:00:20.218>them, <00:00:20.373>depending <00:00:20.529>on <00:00:20.685>the,

8
00:00:22.505 --> 00:00:25.785
<00:00:22.505>like <00:00:22.738>GitHub <00:00:22.971>repository, <00:00:23.205>number <00:00:23.438>of <00:00:23.671>jobs, <00:00:23.904>uh,

9
00:00:26.665 --> 00:00:27.745
<00:00:26.665>whatever <00:00:27.151>Java <00:00:27.637>belongs

10
00:00:27.745 --> 00:00:29.345
<00:00:27.745>to <00:00:28.025>the <00:00:28.305>top <00:00:28.585>three <00:00:28.865>programming <00:00:29.145>languages,

11
00:00:29.525 --> 00:00:31.065
<00:00:29.525>and <00:00:29.871>depending <00:00:30.218>on <00:00:30.564>the <00:00:30.911>statistics,

12
00:00:31.685 --> 00:00:35.425
<00:00:31.685>and <00:00:31.825>if <00:00:31.965>you <00:00:32.104>look <00:00:32.244>into <00:00:32.384>the <00:00:32.525>life <00:00:32.665>of <00:00:32.805>AWS <00:00:32.945>serverless <00:00:33.085>developer,

13
00:00:35.735 --> 00:00:37.185
<00:00:35.735>then <00:00:35.996>it's, <00:00:36.257>I <00:00:36.518>think <00:00:36.779>it's <00:00:37.040>fine.

14
00:00:37.525 --> 00:00:40.745
<00:00:37.525>Um, <00:00:37.680>AWS <00:00:37.836>on <00:00:37.991>a, <00:00:38.147>on <00:00:38.302>lambda <00:00:38.458>supports <00:00:38.613>long <00:00:38.769>term <00:00:38.925>version.

15
00:00:40.925 --> 00:00:42.865
<00:00:40.925>So <00:00:41.391>they <00:00:41.858>support <00:00:42.324>21

16
00:00:43.365 --> 00:00:46.185
<00:00:43.365>and <00:00:43.565>they <00:00:43.765>probably <00:00:43.965>will <00:00:44.165>support <00:00:44.365>25 <00:00:44.565>shortly <00:00:44.765>after.

17
00:00:46.355 --> 00:00:47.985
<00:00:46.355>It'll <00:00:46.635>be <00:00:46.915>released <00:00:47.194>in <00:00:47.474>in <00:00:47.754>September.

18
00:00:49.245 --> 00:00:51.945
<00:00:49.245>So <00:00:49.525>Java <00:00:49.805>is <00:00:50.084>mature <00:00:50.364>programming <00:00:50.644>language,

19
00:00:51.945 --> 00:00:53.905
<00:00:51.945>but <00:00:52.145>if <00:00:52.345>we <00:00:52.545>look <00:00:52.745>in <00:00:52.945>the <00:00:53.145>serverless <00:00:53.345>adoption,

20
00:00:53.905 --> 00:00:57.705
<00:00:53.905>and <00:00:54.105>even <00:00:54.305>if <00:00:54.505>those <00:00:54.705>service <00:00:54.905>are <00:00:55.105>quite, <00:00:55.305>yeah,

21
00:00:58.395 --> 00:01:00.065
<00:00:58.395>quite <00:00:58.745>old, <00:00:59.095>at <00:00:59.445>least <00:00:59.795>four

22
00:01:00.085 --> 00:01:02.505
<00:01:00.085>and <00:01:00.260>two <00:01:00.435>years, <00:01:00.610>we <00:01:00.785>see <00:01:00.960>that <00:01:01.135>the <00:01:01.310>Lambda <00:01:01.485>functions,

23
00:01:02.535 --> 00:01:03.665
<00:01:02.535>this <00:01:02.873>is <00:01:03.213>the <00:01:03.552>statistic,

24
00:01:04.005 --> 00:01:06.865
<00:01:04.004>the <00:01:04.205>programming <00:01:04.405>language <00:01:04.604>is <00:01:04.804>used <00:01:05.004>in <00:01:05.205>lambda <00:01:05.405>functions.

25
00:01:07.165 --> 00:01:08.905
<00:01:07.165>You <00:01:07.365>see <00:01:07.565>the <00:01:07.765>Java <00:01:07.965>is <00:01:08.165>still <00:01:08.365>number <00:01:08.565>three,

26
00:01:08.925 --> 00:01:10.225
<00:01:08.925>but <00:01:09.158>it's <00:01:09.393>just <00:01:09.627>a <00:01:09.860>huge <00:01:10.095>drop.

27
00:01:10.525 --> 00:01:12.625
<00:01:10.525>It <00:01:10.725>may <00:01:10.925>be <00:01:11.125>increased <00:01:11.325>from <00:01:11.525>five <00:01:11.725>to <00:01:11.925>10%,

28
00:01:12.645 --> 00:01:15.465
<00:01:12.645>but <00:01:12.845>it's <00:01:13.045>just, <00:01:13.244>uh, <00:01:13.445>you <00:01:13.645>see <00:01:13.845>the <00:01:14.045>Python

29
00:01:15.605 --> 00:01:17.785
<00:01:15.605>and <00:01:16.071>especially <00:01:16.538>JavaScript <00:01:17.005>vises,

30
00:01:17.855 --> 00:01:20.545
<00:01:17.855>they <00:01:18.135>are <00:01:18.415>quite <00:01:18.695>much <00:01:18.975>more <00:01:19.255>popular.

31
00:01:20.885 --> 00:01:22.585
<00:01:20.885>So, <00:01:21.165>so <00:01:21.445>what's, <00:01:21.725>what's <00:01:22.005>the <00:01:22.285>problem?

32
00:01:22.685 --> 00:01:24.625
<00:01:22.685>We <00:01:22.885>have <00:01:23.085>the <00:01:23.285>Java <00:01:23.485>as <00:01:23.685>a <00:01:23.885>programming <00:01:24.085>language.

33
00:01:24.625 --> 00:01:26.025
<00:01:24.625>We <00:01:24.877>have <00:01:25.129>the <00:01:25.381>community. <00:01:25.633>We <00:01:25.885>have

34
00:01:26.045 --> 00:01:28.625
<00:01:26.045>so <00:01:26.245>many <00:01:26.445>open <00:01:26.645>source <00:01:26.845>projects <00:01:27.045>that <00:01:27.245>we <00:01:27.445>use.

35
00:01:29.125 --> 00:01:30.745
<00:01:29.125>Uh, <00:01:29.325>so <00:01:29.525>what <00:01:29.725>are <00:01:29.925>the <00:01:30.125>reasons <00:01:30.325>for <00:01:30.525>that?

36
00:01:31.765 --> 00:01:33.585
<00:01:31.765>So <00:01:31.965>the <00:01:32.165>first <00:01:32.365>one, <00:01:32.565>this, <00:01:32.765>this <00:01:32.965>are <00:01:33.165>called,

37
00:01:33.585 --> 00:01:34.985
<00:01:33.585>so-called <00:01:34.215>Coldstar <00:01:34.845>times.

38
00:01:35.185 --> 00:01:37.265
<00:01:35.185>I <00:01:35.385>will <00:01:35.585>be <00:01:35.785>elaborate <00:01:35.985>on, <00:01:36.185>uh, <00:01:36.385>about <00:01:36.585>them.

39
00:01:37.605 --> 00:01:40.385
<00:01:37.604>And <00:01:37.779>the <00:01:37.954>second <00:01:38.130>one <00:01:38.304>is <00:01:38.479>that, <00:01:38.654>uh, <00:01:38.829>memory <00:01:39.005>footprint,

40
00:01:40.435 --> 00:01:45.225
<00:01:40.435>which <00:01:40.551>is <00:01:40.668>one <00:01:40.785>of <00:01:40.901>the <00:01:41.018>dimensions <00:01:41.135>of, <00:01:41.251>of <00:01:41.368>the, <00:01:41.485>of <00:01:41.601>the <00:01:41.718>bill, <00:01:41.835>uh,

41
00:01:45.245 --> 00:01:47.025
<00:01:45.245>how <00:01:45.595>AWS <00:01:45.945>Lambda <00:01:46.295>is <00:01:46.645>built.

42
00:01:47.765 --> 00:01:50.105
<00:01:47.765>But <00:01:47.998>let's <00:01:48.231>start <00:01:48.465>with <00:01:48.698>something <00:01:48.931>very <00:01:49.165>simple.

43
00:01:50.325 --> 00:01:52.625
<00:01:50.325>Uh, <00:01:50.605>this <00:01:50.885>is <00:01:51.165>the <00:01:51.445>demo <00:01:51.725>application.

44
00:01:53.185 --> 00:01:56.065
<00:01:53.185>I <00:01:53.418>will <00:01:53.651>using <00:01:53.885>API <00:01:54.118>gateway <00:01:54.351>lambda <00:01:54.585>function

45
00:01:56.125 --> 00:01:58.985
<00:01:56.125>for <00:01:56.325>creating <00:01:56.525>products <00:01:56.725>and <00:01:56.925>getting <00:01:57.125>products <00:01:57.325>by <00:01:57.525>id.

46
00:01:59.285 --> 00:02:02.265
<00:01:59.285>And <00:01:59.460>to <00:01:59.634>be <00:01:59.810>just <00:01:59.985>completely <00:02:00.160>serverless, <00:02:00.335>we <00:02:00.509>use <00:02:00.685>DynamoDB

47
00:02:02.835 --> 00:02:05.465
<00:02:02.835>NoSQL <00:02:03.035>database, <00:02:03.235>and <00:02:03.434>I <00:02:03.634>will <00:02:03.835>talk <00:02:04.035>about <00:02:04.235>this.

48
00:02:05.485 --> 00:02:08.185
<00:02:05.485>So <00:02:05.660>let's <00:02:05.835>start <00:02:06.010>with <00:02:06.185>this <00:02:06.360>basics. <00:02:06.535>What <00:02:06.710>is <00:02:06.885>Lambda?

49
00:02:08.185 --> 00:02:09.185
<00:02:08.185>This <00:02:08.365>is <00:02:08.545>kind <00:02:08.725>of <00:02:08.905>the <00:02:09.085>service.

50
00:02:09.205 --> 00:02:12.065
<00:02:09.205>It <00:02:09.360>doesn't <00:02:09.516>have <00:02:09.671>anything <00:02:09.827>to <00:02:09.982>do <00:02:10.138>with <00:02:10.293>Jamba <00:02:10.449>Lambda <00:02:10.605>functions,

51
00:02:12.285 --> 00:02:14.585
<00:02:12.285>but <00:02:12.518>this <00:02:12.751>AWS <00:02:12.984>service <00:02:13.218>to <00:02:13.451>run, <00:02:13.685>um,

52
00:02:15.485 --> 00:02:17.345
<00:02:15.485>the <00:02:15.765>court <00:02:16.045>without <00:02:16.325>provisioning <00:02:16.605>the <00:02:16.885>service.

53
00:02:17.605 --> 00:02:19.705
<00:02:17.605>So <00:02:17.838>you <00:02:18.071>basically <00:02:18.304>select <00:02:18.538>the <00:02:18.771>programming <00:02:19.005>language.

54
00:02:19.705 --> 00:02:22.625
<00:02:19.704>In <00:02:19.860>that <00:02:20.016>case <00:02:20.171>it'll <00:02:20.327>be <00:02:20.482>Java <00:02:20.638>21, <00:02:20.793>deploy <00:02:20.949>your <00:02:21.105>court,

55
00:02:22.645 --> 00:02:25.745
<00:02:22.645>and <00:02:22.845>then <00:02:23.045>all <00:02:23.245>the <00:02:23.445>scaling <00:02:23.645>happens <00:02:23.845>basically, <00:02:24.045>uh,

56
00:02:26.565 --> 00:02:27.745
<00:02:26.565>on <00:02:26.830>behalf <00:02:27.096>of <00:02:27.361>the <00:02:27.627>platform.

57
00:02:27.745 --> 00:02:30.865
<00:02:27.745>So <00:02:27.885>you <00:02:28.025>select, <00:02:28.165>yeah, <00:02:28.305>the <00:02:28.445>language <00:02:28.585>you <00:02:28.725>select <00:02:28.865>also <00:02:29.005>this, <00:02:29.145>um,

58
00:02:30.965 --> 00:02:35.265
<00:02:30.965>the <00:02:31.120>memory, <00:02:31.276>and <00:02:31.431>that's <00:02:31.587>basically <00:02:31.742>it <00:02:31.898>in <00:02:32.053>its <00:02:32.209>then <00:02:32.365>scales

59
00:02:35.405 --> 00:02:36.705
<00:02:35.405>as <00:02:35.639>a <00:02:35.873>function <00:02:36.107>as <00:02:36.340>a <00:02:36.575>service.

60
00:02:37.005 --> 00:02:38.625
<00:02:37.005>But <00:02:37.238>of <00:02:37.471>course, <00:02:37.704>there <00:02:37.938>should <00:02:38.171>be <00:02:38.405>triggers

61
00:02:38.625 --> 00:02:39.865
<00:02:38.625>to <00:02:38.997>call <00:02:39.369>Lambda <00:02:39.741>function.

62
00:02:40.115 --> 00:02:42.505
<00:02:40.115>There <00:02:40.465>are <00:02:40.815>synchronous <00:02:41.165>asynchronous <00:02:41.515>ones.

63
00:02:42.515 --> 00:02:44.185
<00:02:42.515>We're <00:02:42.748>more <00:02:42.981>focused <00:02:43.214>on <00:02:43.448>the <00:02:43.681>left <00:02:43.915>side,

64
00:02:44.185 --> 00:02:46.185
<00:02:44.185>so <00:02:44.385>the <00:02:44.585>synchronous <00:02:44.785>push <00:02:44.985>with <00:02:45.185>the <00:02:45.385>API <00:02:45.585>gateway.

65
00:02:46.925 --> 00:02:51.065
<00:02:46.925>Um, <00:02:47.065>and <00:02:47.205>what <00:02:47.345>is <00:02:47.485>the <00:02:47.625>API <00:02:47.765>gateway <00:02:47.905>is <00:02:48.045>basically <00:02:48.185>public <00:02:48.325>facing

66
00:02:51.775 --> 00:02:56.545
<00:02:51.775>service, <00:02:51.975>like <00:02:52.175>API <00:02:52.375>gateway, <00:02:52.575>uh, <00:02:52.775>for, <00:02:52.975>yeah, <00:02:53.175>just

67
00:02:56.685 --> 00:02:58.185
<00:02:56.685>for <00:02:57.022>serving <00:02:57.360>all <00:02:57.697>that <00:02:58.035>requests.

68
00:02:58.205 --> 00:03:01.525
<00:02:58.204>So <00:02:58.344>normally <00:02:58.484>you <00:02:58.624>will <00:02:58.765>have <00:02:58.904>some <00:02:59.045>kind <00:02:59.184>of <00:02:59.325>tomcat, <00:02:59.464>just <00:02:59.605>think

69
00:03:01.525 --> 00:03:05.245
<00:03:01.525>of <00:03:01.680>the <00:03:01.836>managed <00:03:01.991>version <00:03:02.147>of <00:03:02.302>that, <00:03:02.458>uh, <00:03:02.613>on <00:03:02.769>AWS <00:03:02.925>side.

70
00:03:06.435 --> 00:03:08.765
<00:03:06.435>Yeah, <00:03:06.635>so <00:03:06.835>basically <00:03:07.035>we <00:03:07.235>can <00:03:07.435>just <00:03:07.635>define, <00:03:07.835>in

71
00:03:08.765 --> 00:03:11.525
<00:03:08.765>that <00:03:08.940>case <00:03:09.114>there's <00:03:09.290>a <00:03:09.464>product, <00:03:09.640>API, <00:03:09.815>with <00:03:09.989>a <00:03:10.165>put

72
00:03:11.585 --> 00:03:14.045
<00:03:11.585>and <00:03:11.865>get, <00:03:12.145>uh, <00:03:12.425>product <00:03:12.705>by <00:03:12.985>id.

73
00:03:14.045 --> 00:03:17.685
<00:03:14.045>And <00:03:14.184>you <00:03:14.325>basically <00:03:14.464>send <00:03:14.605>some <00:03:14.744>js, <00:03:14.885>which <00:03:15.024>will <00:03:15.165>be <00:03:15.304>then <00:03:15.445>invoked

74
00:03:17.765 --> 00:03:18.765
<00:03:17.765>by <00:03:18.214>Lambda <00:03:18.665>function.

75
00:03:19.305 --> 00:03:22.445
<00:03:19.305>And <00:03:19.432>in <00:03:19.559>this <00:03:19.686>case, <00:03:19.814>the <00:03:19.941>code <00:03:20.068>looks <00:03:20.195>like <00:03:20.323>we <00:03:20.450>use <00:03:20.577>AWS, <00:03:20.705>um,

76
00:03:22.985 --> 00:03:24.125
<00:03:22.985>uh, <00:03:24.011>SDK.

77
00:03:24.425 --> 00:03:26.125
<00:03:24.425>So <00:03:24.658>the <00:03:24.891>class <00:03:25.125>get <00:03:25.358>product <00:03:25.591>by <00:03:25.825>ideas,

78
00:03:26.125 --> 00:03:28.525
<00:03:26.125>example <00:03:26.475>implements <00:03:26.825>request <00:03:27.175>handler <00:03:27.525>interface

79
00:03:28.835 --> 00:03:30.805
<00:03:28.835>with <00:03:29.115>only <00:03:29.395>one <00:03:29.675>method <00:03:29.955>handle <00:03:30.235>request.

80
00:03:31.025 --> 00:03:35.205
<00:03:31.025>And <00:03:31.165>as <00:03:31.305>we <00:03:31.445>use <00:03:31.585>API <00:03:31.725>gateway, <00:03:31.865>the, <00:03:32.005>the, <00:03:32.145>the, <00:03:32.285>the <00:03:32.425>parameter

81
00:03:35.225 --> 00:03:38.365
<00:03:35.225>of <00:03:35.400>event <00:03:35.575>is <00:03:35.750>of <00:03:35.924>the <00:03:36.100>type <00:03:36.275>API <00:03:36.450>gateway <00:03:36.625>request.

82
00:03:38.985 --> 00:03:40.685
<00:03:38.985>And <00:03:39.335>basically, <00:03:39.685>yeah, <00:03:40.035>we, <00:03:40.385>we

83
00:03:42.565 --> 00:03:44.445
<00:03:42.565>retrieve <00:03:42.798>the <00:03:43.031>ID <00:03:43.265>from <00:03:43.498>the <00:03:43.731>path <00:03:43.965>parameters

84
00:03:44.445 --> 00:03:49.125
<00:03:44.445>and <00:03:44.572>then <00:03:44.699>ask <00:03:44.826>DynamoDB <00:03:44.954>to, <00:03:45.081>to, <00:03:45.208>to <00:03:45.335>do <00:03:45.463>the, <00:03:45.590>the, <00:03:45.717>the <00:03:45.845>job.

85
00:03:49.705 --> 00:03:51.165
<00:03:49.704>So <00:03:50.033>how <00:03:50.362>does <00:03:50.690>it <00:03:51.019>work?

86
00:03:51.285 --> 00:03:54.005
<00:03:51.285>API <00:03:51.518>gateway, <00:03:51.751>always <00:03:51.984>send <00:03:52.218>some, <00:03:52.451>some <00:03:52.685>Jason,

87
00:03:54.425 --> 00:03:56.605
<00:03:54.425>in <00:03:54.625>this <00:03:54.825>case <00:03:55.025>a <00:03:55.225>lot <00:03:55.425>of <00:03:55.625>HGGP <00:03:55.825>information

88
00:03:56.605 --> 00:03:58.165
<00:03:56.605>and <00:03:56.954>all <00:03:57.304>this <00:03:57.655>path <00:03:58.005>parameters.

89
00:03:58.165 --> 00:04:00.205
<00:03:58.165>So <00:03:58.364>everything <00:03:58.565>that <00:03:58.765>we <00:03:58.965>kind <00:03:59.165>of <00:03:59.364>pass <00:03:59.565>there

90
00:04:00.545 --> 00:04:03.405
<00:04:00.545>and <00:04:00.700>this <00:04:00.856>huge <00:04:01.011>JSON <00:04:01.167>will <00:04:01.322>be <00:04:01.478>passed <00:04:01.633>to <00:04:01.789>Lambda <00:04:01.945>function

91
00:04:03.545 --> 00:04:06.085
<00:04:03.545>and <00:04:03.744>then <00:04:03.945>converted <00:04:04.144>to <00:04:04.345>this <00:04:04.545>API <00:04:04.744>proxy <00:04:04.945>event.

92
00:04:07.265 --> 00:04:09.765
<00:04:07.265>So <00:04:07.545>yeah, <00:04:07.825>it'll <00:04:08.105>play <00:04:08.385>a <00:04:08.665>role.

93
00:04:10.165 --> 00:04:13.605
<00:04:10.165>I <00:04:10.364>use <00:04:10.565>DynamoDB <00:04:10.765>just <00:04:10.965>to <00:04:11.165>be <00:04:11.364>completely <00:04:11.565>serverless.

94
00:04:13.835 --> 00:04:17.325
<00:04:13.835>It's <00:04:14.010>no <00:04:14.185>SQL <00:04:14.360>database. <00:04:14.535>You <00:04:14.710>can <00:04:14.885>use <00:04:15.060>relational <00:04:15.235>database.

95
00:04:17.325 --> 00:04:18.685
<00:04:17.325>You <00:04:17.569>need <00:04:17.814>to <00:04:18.059>remeasure <00:04:18.304>the <00:04:18.548>stuff

96
00:04:18.715 --> 00:04:21.925
<00:04:18.714>because <00:04:18.870>there <00:04:19.026>are <00:04:19.181>other <00:04:19.337>challenges <00:04:19.492>with, <00:04:19.648>um, <00:04:19.803>how <00:04:19.959>you <00:04:20.114>manage,

97
00:04:22.025 --> 00:04:23.605
<00:04:22.024>for <00:04:22.375>example, <00:04:22.724>the <00:04:23.075>connection <00:04:23.424>pool.

98
00:04:25.955 --> 00:04:29.005
<00:04:25.955>Okay, <00:04:26.130>yeah. <00:04:26.305>So <00:04:26.479>there <00:04:26.655>are <00:04:26.830>things <00:04:27.005>to <00:04:27.180>get <00:04:27.354>no

99
00:04:29.435 --> 00:04:32.165
<00:04:29.435>with <00:04:29.635>DynamoDB <00:04:29.835>will <00:04:30.035>probably <00:04:30.235>get <00:04:30.435>the <00:04:30.635>best <00:04:30.835>performances,

100
00:04:32.165 --> 00:04:33.445
<00:04:32.165>just <00:04:32.549>the <00:04:32.933>native <00:04:33.317>database.

101
00:04:33.665 --> 00:04:36.085
<00:04:33.665>So <00:04:33.840>first <00:04:34.015>start <00:04:34.190>to <00:04:34.365>elaborate <00:04:34.540>on <00:04:34.715>this <00:04:34.890>call <00:04:35.065>starts

102
00:04:36.145 --> 00:04:37.245
<00:04:36.145>and <00:04:36.474>all <00:04:36.805>these <00:04:37.135>problems.

103
00:04:37.825 --> 00:04:40.725
<00:04:37.825>And <00:04:38.000>I <00:04:38.175>think <00:04:38.349>that's <00:04:38.525>this <00:04:38.700>Lambda <00:04:38.875>is <00:04:39.050>a <00:04:39.224>source,

104
00:04:40.725 --> 00:04:43.565
<00:04:40.725>which <00:04:40.865>is <00:04:41.005>a <00:04:41.145>function <00:04:41.285>as <00:04:41.425>a <00:04:41.565>source, <00:04:41.705>has <00:04:41.845>a <00:04:41.985>different <00:04:42.125>paradigm.

105
00:04:43.915 --> 00:04:46.285
<00:04:43.915>It's <00:04:44.090>kind <00:04:44.265>of <00:04:44.440>the <00:04:44.615>environment <00:04:44.790>which <00:04:44.965>is <00:04:45.140>only <00:04:45.315>capable

106
00:04:46.385 --> 00:04:48.125
<00:04:46.385>of <00:04:46.618>executing <00:04:46.851>one <00:04:47.085>request <00:04:47.318>at <00:04:47.551>the <00:04:47.784>time.

107
00:04:48.265 --> 00:04:50.565
<00:04:48.265>And <00:04:48.440>then <00:04:48.615>the <00:04:48.789>whole <00:04:48.965>environment <00:04:49.140>goes <00:04:49.315>to <00:04:49.490>the <00:04:49.664>pool

108
00:04:50.785 --> 00:04:51.885
<00:04:50.784>of <00:04:51.280>warm <00:04:51.775>environments.

109
00:04:51.955 --> 00:04:56.165
<00:04:51.955>It's <00:04:52.082>not <00:04:52.209>like <00:04:52.336>Tomcat <00:04:52.464>where <00:04:52.591>you <00:04:52.718>simply <00:04:52.845>can <00:04:52.973>scale <00:04:53.100>out <00:04:53.227>as <00:04:53.354>long

110
00:04:56.165 --> 00:04:58.645
<00:04:56.165>as <00:04:56.365>this <00:04:56.565>kind <00:04:56.765>of <00:04:56.965>your <00:04:57.165>server <00:04:57.365>is <00:04:57.565>capable

111
00:04:59.065 --> 00:05:00.245
<00:04:59.065>to <00:04:59.419>handle <00:04:59.773>more <00:05:00.127>requests.

112
00:05:00.245 --> 00:05:02.285
<00:05:00.245>And <00:05:00.525>then <00:05:00.805>you <00:05:01.085>scale <00:05:01.365>horizontally <00:05:01.645>function

113
00:05:02.285 --> 00:05:04.245
<00:05:02.285>as <00:05:02.485>a <00:05:02.685>service <00:05:02.885>is <00:05:03.085>just <00:05:03.285>completely <00:05:03.485>the, <00:05:03.685>the,

114
00:05:04.245 --> 00:05:08.245
<00:05:04.245>the <00:05:04.400>whole <00:05:04.556>environment, <00:05:04.711>um, <00:05:04.867>is <00:05:05.022>used <00:05:05.178>only <00:05:05.333>for <00:05:05.489>one, <00:05:05.645>uh,

115
00:05:08.245 --> 00:05:10.285
<00:05:08.245>invocation <00:05:08.595>then <00:05:08.945>like <00:05:09.295>data <00:05:09.645>source

116
00:05:10.375 --> 00:05:12.005
<00:05:10.375>connection <00:05:10.655>and <00:05:10.935>goes <00:05:11.215>to <00:05:11.495>the <00:05:11.775>pool.

117
00:05:12.305 --> 00:05:13.445
<00:05:12.305>So <00:05:12.561>what <00:05:12.818>does <00:05:13.074>it <00:05:13.331>mean?

118
00:05:13.625 --> 00:05:16.365
<00:05:13.625>So <00:05:13.765>we <00:05:13.905>have <00:05:14.045>then <00:05:14.185>the <00:05:14.325>situations <00:05:14.465>and <00:05:14.605>there <00:05:14.745>is <00:05:14.885>no <00:05:15.025>environment.

119
00:05:16.675 --> 00:05:19.485
<00:05:16.675>When <00:05:16.815>it <00:05:16.955>happens, <00:05:17.095>you <00:05:17.235>deploy <00:05:17.375>the <00:05:17.515>function <00:05:17.655>for <00:05:17.795>the <00:05:17.935>first <00:05:18.075>time

120
00:05:19.545 --> 00:05:20.765
<00:05:19.545>or <00:05:19.819>you <00:05:20.094>change <00:05:20.368>the <00:05:20.643>function,

121
00:05:21.115 --> 00:05:23.125
<00:05:21.115>then <00:05:21.348>the <00:05:21.581>all <00:05:21.815>environments <00:05:22.048>will <00:05:22.281>be <00:05:22.515>destroyed.

122
00:05:23.305 --> 00:05:24.365
<00:05:23.305>So <00:05:23.495>you <00:05:23.686>need <00:05:23.877>a <00:05:24.068>new <00:05:24.259>one.

123
00:05:24.705 --> 00:05:27.125
<00:05:24.705>Or <00:05:24.905>for <00:05:25.104>example, <00:05:25.305>you <00:05:25.505>have <00:05:25.705>five <00:05:25.905>warm <00:05:26.104>environments,

124
00:05:27.185 --> 00:05:29.245
<00:05:27.185>but <00:05:27.465>10 <00:05:27.745>requests <00:05:28.025>come <00:05:28.305>in <00:05:28.585>parallel.

125
00:05:29.285 --> 00:05:32.925
<00:05:29.285>So <00:05:29.401>you <00:05:29.518>can <00:05:29.635>reuse <00:05:29.751>five, <00:05:29.868>but <00:05:29.985>you <00:05:30.101>need <00:05:30.218>five <00:05:30.335>new <00:05:30.451>ones <00:05:30.568>to <00:05:30.685>start.

126
00:05:33.585 --> 00:05:35.445
<00:05:33.585>And <00:05:33.818>if <00:05:34.051>you <00:05:34.284>need <00:05:34.518>the <00:05:34.751>new <00:05:34.984>environment,

127
00:05:35.625 --> 00:05:36.885
<00:05:35.625>we <00:05:35.814>will <00:05:36.003>be <00:05:36.192>talking, <00:05:36.381>what <00:05:36.570>is <00:05:36.759>that?

128
00:05:36.915 --> 00:05:38.605
<00:05:36.915>Then, <00:05:37.195>then <00:05:37.475>call <00:05:37.755>start <00:05:38.035>will <00:05:38.315>happen

129
00:05:38.605 --> 00:05:41.565
<00:05:38.605>because <00:05:38.838>many <00:05:39.071>additional <00:05:39.305>step <00:05:39.538>needs <00:05:39.771>to <00:05:40.005>happen.

130
00:05:41.945 --> 00:05:43.045
<00:05:41.945>And <00:05:42.192>what <00:05:42.440>are <00:05:42.687>those <00:05:42.935>steps?

131
00:05:43.625 --> 00:05:45.845
<00:05:43.625>So <00:05:43.975>these <00:05:44.325>environments <00:05:44.675>are <00:05:45.025>micros

132
00:05:45.845 --> 00:05:48.765
<00:05:45.845>and <00:05:46.045>AWS <00:05:46.245>has <00:05:46.445>its <00:05:46.645>own <00:05:46.845>firecracker, <00:05:47.045>micro <00:05:47.245>vm.

133
00:05:49.305 --> 00:05:52.805
<00:05:49.305>And <00:05:49.480>for <00:05:49.655>this <00:05:49.830>then, <00:05:50.005>then <00:05:50.180>AWS, <00:05:50.355>uh, <00:05:50.530>lambda <00:05:50.705>starts,

134
00:05:53.065 --> 00:05:54.365
<00:05:53.065>we <00:05:53.357>selected <00:05:53.650>Java <00:05:53.942>on <00:05:54.235>time.

135
00:05:54.365 --> 00:05:55.925
<00:05:54.365>So <00:05:54.645>it <00:05:54.925>starts <00:05:55.205>Java <00:05:55.485>on <00:05:55.765>time.

136
00:05:56.145 --> 00:05:57.565
<00:05:56.145>So <00:05:56.464>JVM <00:05:56.784>will <00:05:57.103>be <00:05:57.423>started

137
00:05:57.985 --> 00:06:01.205
<00:05:57.985>and <00:05:58.185>all, <00:05:58.385>uh, <00:05:58.585>then <00:05:58.785>the, <00:05:58.985>they <00:05:59.185>will <00:05:59.385>determine

138
00:06:01.275 --> 00:06:03.725
<00:06:01.275>what <00:06:01.508>Lambda <00:06:01.741>handler <00:06:01.974>to, <00:06:02.208>to, <00:06:02.441>to <00:06:02.674>invoke.

139
00:06:04.025 --> 00:06:07.085
<00:06:04.025>And <00:06:04.164>then <00:06:04.304>the <00:06:04.445>static <00:06:04.585>initializer <00:06:04.724>block <00:06:04.864>kicks <00:06:05.005>in <00:06:05.145>of <00:06:05.284>this, <00:06:05.424>um,

140
00:06:07.335 --> 00:06:09.685
<00:06:07.335>class, <00:06:07.534>uh, <00:06:07.734>get <00:06:07.935>product <00:06:08.135>by <00:06:08.335>ID <00:06:08.534>for <00:06:08.734>example,

141
00:06:10.235 --> 00:06:14.765
<00:06:10.235>classes <00:06:10.390>will <00:06:10.546>be <00:06:10.701>loaded <00:06:10.857>that <00:06:11.012>are <00:06:11.168>kind <00:06:11.323>of, <00:06:11.479>um, <00:06:11.635>yeah,

142
00:06:14.865 --> 00:06:16.485
<00:06:14.865>in <00:06:15.215>the <00:06:15.565>chain <00:06:15.915>of <00:06:16.265>invocations

143
00:06:16.505 --> 00:06:18.485
<00:06:16.505>and <00:06:16.705>all <00:06:16.905>that <00:06:17.105>stuff, <00:06:17.305>if <00:06:17.505>you <00:06:17.705>use <00:06:17.905>sprint

144
00:06:18.505 --> 00:06:20.765
<00:06:18.505>and <00:06:18.680>annotations <00:06:18.855>will <00:06:19.030>be <00:06:19.205>processed <00:06:19.380>and <00:06:19.555>all <00:06:19.730>that <00:06:19.905>stuff.

145
00:06:21.025 --> 00:06:22.725
<00:06:21.025>So <00:06:21.224>this <00:06:21.424>is <00:06:21.625>kind <00:06:21.825>of <00:06:22.025>the <00:06:22.224>cold <00:06:22.424>start

146
00:06:22.985 --> 00:06:25.365
<00:06:22.985>and <00:06:23.185>the <00:06:23.385>execution <00:06:23.585>of <00:06:23.785>the <00:06:23.985>handler <00:06:24.185>method <00:06:24.385>itself.

147
00:06:25.365 --> 00:06:27.605
<00:06:25.365>Where <00:06:25.598>this <00:06:25.831>business <00:06:26.065>logic <00:06:26.298>lies <00:06:26.531>get <00:06:26.765>product

148
00:06:27.745 --> 00:06:29.285
<00:06:27.745>by <00:06:28.022>ID <00:06:28.299>is <00:06:28.576>a <00:06:28.853>warm <00:06:29.131>start.

149
00:06:29.505 --> 00:06:31.845
<00:06:29.505>And <00:06:29.632>you <00:06:29.759>see <00:06:29.886>in <00:06:30.014>the <00:06:30.141>case <00:06:30.268>of <00:06:30.395>the <00:06:30.523>war, <00:06:30.650>uh, <00:06:30.777>cold <00:06:30.905>start,

150
00:06:31.845 --> 00:06:33.725
<00:06:31.845>the <00:06:32.311>additional <00:06:32.778>steps, <00:06:33.245>the,

151
00:06:33.865 --> 00:06:35.365
<00:06:33.865>the <00:06:34.135>environment <00:06:34.405>needs <00:06:34.675>to <00:06:34.945>be <00:06:35.215>started.

152
00:06:35.475 --> 00:06:37.165
<00:06:35.475>Your <00:06:35.755>cold <00:06:36.035>needs <00:06:36.315>to <00:06:36.595>be <00:06:36.875>downloaded,

153
00:06:37.225 --> 00:06:39.245
<00:06:37.225>and <00:06:37.458>static <00:06:37.691>initializer <00:06:37.925>block <00:06:38.158>needs <00:06:38.391>to <00:06:38.625>run.

154
00:06:39.345 --> 00:06:42.885
<00:06:39.345>All <00:06:39.500>these <00:06:39.656>three <00:06:39.811>additional <00:06:39.967>steps <00:06:40.122>are, <00:06:40.278>uh, <00:06:40.433>cold, <00:06:40.589>cold <00:06:40.745>start,

155
00:06:42.985 --> 00:06:46.085
<00:06:42.985>and <00:06:43.140>the <00:06:43.296>additional <00:06:43.451>one, <00:06:43.607>if <00:06:43.762>we <00:06:43.918>have <00:06:44.073>the <00:06:44.229>warm <00:06:44.385>environments

156
00:06:46.085 --> 00:06:47.605
<00:06:46.085>that <00:06:46.358>there <00:06:46.632>is <00:06:46.905>a <00:06:47.179>warm <00:06:47.453>start.

157
00:06:47.825 --> 00:06:51.845
<00:06:47.825>So <00:06:47.952>in <00:06:48.079>worst <00:06:48.206>case, <00:06:48.334>you <00:06:48.461>have <00:06:48.588>cold <00:06:48.715>and <00:06:48.843>warm <00:06:48.970>start <00:06:49.097>that, <00:06:49.224>that.

158
00:06:52.265 --> 00:06:55.365
<00:06:52.265>So <00:06:52.544>let's <00:06:52.825>then <00:06:53.104>measure <00:06:53.385>without <00:06:53.664>any

159
00:06:55.365 --> 00:06:56.845
<00:06:55.365>optimizations, <00:06:55.809>we <00:06:56.253>have <00:06:56.697>lambda.

160
00:06:56.845 --> 00:06:58.885
<00:06:56.845>When <00:06:57.045>we <00:06:57.245>give <00:06:57.445>it <00:06:57.645>one <00:06:57.845>gigabyte <00:06:58.045>of <00:06:58.245>memory,

161
00:06:59.395 --> 00:07:00.445
<00:06:59.395>it's <00:06:59.631>just <00:06:59.867>a <00:07:00.103>good <00:07:00.340>start.

162
00:07:00.445 --> 00:07:02.325
<00:07:00.445>It <00:07:00.724>gives <00:07:01.005>us <00:07:01.284>a <00:07:01.565>good <00:07:01.844>performance.

163
00:07:02.505 --> 00:07:05.565
<00:07:02.505>The <00:07:02.784>default <00:07:03.065>X <00:07:03.344>86 <00:07:03.625>architecture, <00:07:03.905>uh,

164
00:07:06.125 --> 00:07:07.765
<00:07:06.125>DynamoDB <00:07:06.405>is <00:07:06.685>a <00:07:06.965>GTP <00:07:07.245>based <00:07:07.525>service.

165
00:07:07.825 --> 00:07:11.565
<00:07:07.825>So <00:07:07.941>we <00:07:08.058>need <00:07:08.175>a, <00:07:08.291>a, <00:07:08.408>uh, <00:07:08.525>some <00:07:08.641>kind <00:07:08.758>of <00:07:08.875>HHGP <00:07:08.991>client <00:07:09.108>and <00:07:09.224>dynamo.

166
00:07:11.565 --> 00:07:15.365
<00:07:11.565>Um, <00:07:11.681>Apache <00:07:11.798>is <00:07:11.915>the <00:07:12.031>default <00:07:12.148>one. <00:07:12.265>We <00:07:12.381>don't <00:07:12.498>even <00:07:12.615>need <00:07:12.731>to <00:07:12.848>set <00:07:12.965>it.

167
00:07:15.755 --> 00:07:18.645
<00:07:15.755>This <00:07:15.955>package <00:07:16.155>is <00:07:16.355>something <00:07:16.555>like <00:07:16.755>around <00:07:16.955>14 <00:07:17.155>megabytes.

168
00:07:18.825 --> 00:07:20.805
<00:07:18.825>We <00:07:19.104>have <00:07:19.385>certain <00:07:19.664>Java <00:07:19.945>compilation <00:07:20.224>options,

169
00:07:20.805 --> 00:07:23.605
<00:07:20.805>which <00:07:20.945>is <00:07:21.085>also <00:07:21.225>a <00:07:21.365>good <00:07:21.505>start <00:07:21.645>not <00:07:21.785>to <00:07:21.925>use <00:07:22.065>tier <00:07:22.205>compilation.

170
00:07:23.825 --> 00:07:26.485
<00:07:23.825>And <00:07:23.980>I <00:07:24.136>just <00:07:24.291>runs <00:07:24.447>the <00:07:24.602>stress <00:07:24.758>test <00:07:24.913>for <00:07:25.069>one <00:07:25.224>hour.

171
00:07:27.865 --> 00:07:30.885
<00:07:27.865>Uh, <00:07:28.020>and <00:07:28.176>in <00:07:28.331>this <00:07:28.487>one <00:07:28.642>hour <00:07:28.798>was <00:07:28.953>different <00:07:29.109>patterns, <00:07:29.265>just

172
00:07:31.805 --> 00:07:34.405
<00:07:31.805>hundreds <00:07:32.038>of <00:07:32.271>execution, <00:07:32.505>even <00:07:32.738>thousands <00:07:32.971>in <00:07:33.205>parallel.

173
00:07:34.405 --> 00:07:37.245
<00:07:34.405>Then <00:07:34.560>I <00:07:34.716>just <00:07:34.871>stopped <00:07:35.027>so <00:07:35.182>that <00:07:35.338>the <00:07:35.493>environments <00:07:35.649>were <00:07:35.804>gone.

174
00:07:37.395 --> 00:07:39.125
<00:07:37.395>Then <00:07:37.628>I <00:07:37.861>restarted <00:07:38.094>this <00:07:38.328>and <00:07:38.561>so <00:07:38.794>on.

175
00:07:39.305 --> 00:07:41.485
<00:07:39.305>So <00:07:39.505>in <00:07:39.705>this <00:07:39.905>one <00:07:40.105>hour, <00:07:40.305>I <00:07:40.505>had <00:07:40.705>approximately

176
00:07:41.825 --> 00:07:43.445
<00:07:41.825>100,000 <00:07:42.525>warm <00:07:43.224>starts.

177
00:07:43.465 --> 00:07:45.565
<00:07:43.465>You <00:07:43.745>see <00:07:44.025>this <00:07:44.305>warm, <00:07:44.585>uh, <00:07:44.865>picture

178
00:07:46.625 --> 00:07:48.845
<00:07:46.625>and <00:07:46.905>only <00:07:47.185>around <00:07:47.465>100 <00:07:47.745>call <00:07:48.025>starts.

179
00:07:49.025 --> 00:07:52.045
<00:07:49.025>So <00:07:49.164>what <00:07:49.304>does <00:07:49.445>it <00:07:49.585>mean? <00:07:49.724>Um, <00:07:49.864>call <00:07:50.005>starts <00:07:50.145>are <00:07:50.284>quite <00:07:50.424>rare.

180
00:07:52.305 --> 00:07:56.245
<00:07:52.305>In <00:07:52.480>my, <00:07:52.655>with <00:07:52.830>my <00:07:53.005>experiment, <00:07:53.180>it <00:07:53.355>was <00:07:53.530>only <00:07:53.705>0.1%,

181
00:07:56.425 --> 00:07:58.125
<00:07:56.425>but <00:07:56.658>of <00:07:56.891>course, <00:07:57.125>it's <00:07:57.358>very <00:07:57.591>simple <00:07:57.825>service.

182
00:07:58.125 --> 00:08:01.405
<00:07:58.125>Sometimes <00:07:58.300>you <00:07:58.475>have <00:07:58.650>different <00:07:58.825>lambda <00:07:59.000>functions <00:07:59.175>in <00:07:59.350>the <00:07:59.525>chain,

183
00:08:01.625 --> 00:08:04.165
<00:08:01.625>and <00:08:01.800>if <00:08:01.975>one <00:08:02.150>of <00:08:02.325>them <00:08:02.500>has <00:08:02.675>a <00:08:02.850>call <00:08:03.025>start

184
00:08:04.185 --> 00:08:06.525
<00:08:04.185>and <00:08:04.325>you <00:08:04.465>need <00:08:04.605>all <00:08:04.745>of <00:08:04.885>them <00:08:05.025>to, <00:08:05.165>to <00:08:05.305>display <00:08:05.445>the <00:08:05.585>page,

185
00:08:06.645 --> 00:08:08.285
<00:08:06.645>then <00:08:06.924>the <00:08:07.205>math <00:08:07.484>can <00:08:07.765>be <00:08:08.044>different.

186
00:08:08.345 --> 00:08:11.325
<00:08:08.345>It <00:08:08.545>depends <00:08:08.745>also <00:08:08.945>on, <00:08:09.145>on <00:08:09.345>your <00:08:09.545>scaling <00:08:09.745>pattern.

187
00:08:11.545 --> 00:08:16.045
<00:08:11.545>So <00:08:11.661>the <00:08:11.778>two <00:08:11.895>to <00:08:12.011>3% <00:08:12.128>of <00:08:12.245>the <00:08:12.361>call <00:08:12.478>start <00:08:12.595>is <00:08:12.711>quite, <00:08:12.828>um, <00:08:12.945>common.

188
00:08:16.785 --> 00:08:19.205
<00:08:16.785>So <00:08:16.985>now <00:08:17.185>let's <00:08:17.385>show, <00:08:17.585>let's <00:08:17.785>see <00:08:17.985>the <00:08:18.185>measurements.

189
00:08:19.865 --> 00:08:22.285
<00:08:19.865>So <00:08:19.992>you <00:08:20.119>see <00:08:20.246>the, <00:08:20.374>the, <00:08:20.501>the <00:08:20.628>call <00:08:20.755>starts <00:08:20.883>and <00:08:21.010>the <00:08:21.137>warm <00:08:21.265>starts.

190
00:08:22.465 --> 00:08:24.765
<00:08:22.465>You, <00:08:22.664>you <00:08:22.864>have <00:08:23.065>percentiles, <00:08:23.265>for <00:08:23.465>example, <00:08:23.664>P <00:08:23.864>90,

191
00:08:25.065 --> 00:08:29.285
<00:08:25.065>and <00:08:25.220>I <00:08:25.376>always <00:08:25.531>look <00:08:25.687>in <00:08:25.842>P <00:08:25.998>91st <00:08:26.153>means <00:08:26.309>in <00:08:26.465>90%

192
00:08:29.285 --> 00:08:30.765
<00:08:29.285>of <00:08:29.551>the <00:08:29.817>cases <00:08:30.084>you <00:08:30.350>have <00:08:30.616>that

193
00:08:30.985 --> 00:08:34.325
<00:08:30.985>or <00:08:31.218>kind <00:08:31.451>of <00:08:31.685>better <00:08:31.918>result <00:08:32.151>in <00:08:32.385>the,

194
00:08:34.325 --> 00:08:35.765
<00:08:34.325>the <00:08:34.649>results <00:08:34.973>are <00:08:35.297>in <00:08:35.621>milliseconds.

195
00:08:35.905 --> 00:08:38.525
<00:08:35.905>So <00:08:36.060>first <00:08:36.216>of <00:08:36.371>all, <00:08:36.527>let's <00:08:36.682>look <00:08:36.838>into <00:08:36.993>the <00:08:37.149>warm <00:08:37.304>start.

196
00:08:39.895 --> 00:08:41.325
<00:08:39.895>Let's <00:08:40.216>forget <00:08:40.538>this <00:08:40.860>max <00:08:41.182>value,

197
00:08:41.625 --> 00:08:43.605
<00:08:41.625>but <00:08:41.975>at <00:08:42.325>least <00:08:42.674>in <00:08:43.025>milliseconds,

198
00:08:43.835 --> 00:08:45.485
<00:08:43.835>Java <00:08:44.068>is <00:08:44.301>a <00:08:44.535>very <00:08:44.768>quick <00:08:45.001>programming <00:08:45.235>language.

199
00:08:45.485 --> 00:08:48.765
<00:08:45.485>So <00:08:45.601>we <00:08:45.718>have <00:08:45.835>20 <00:08:45.951>milliseconds <00:08:46.068>to <00:08:46.185>talk <00:08:46.301>to <00:08:46.418>Dynamo <00:08:46.535>DB <00:08:46.651>in <00:08:46.768>P <00:08:46.885>90.

200
00:08:48.955 --> 00:08:50.285
<00:08:48.955>It's <00:08:49.254>nothing. <00:08:49.553>It's <00:08:49.852>really <00:08:50.151>quick.

201
00:08:50.665 --> 00:08:52.605
<00:08:50.665>So <00:08:50.865>that's <00:08:51.064>not <00:08:51.265>a <00:08:51.464>problem <00:08:51.665>for <00:08:51.865>the <00:08:52.064>serverless,

202
00:08:52.605 --> 00:08:54.725
<00:08:52.605>but <00:08:52.745>if <00:08:52.885>you <00:08:53.025>look <00:08:53.165>at <00:08:53.305>the <00:08:53.445>call <00:08:53.585>starts <00:08:53.725>in <00:08:53.865>P <00:08:54.005>90,

203
00:08:54.785 --> 00:08:58.805
<00:08:54.785>you <00:08:54.959>have <00:08:55.135>3.2 <00:08:55.310>seconds <00:08:55.485>and <00:08:55.660>it's <00:08:55.834>just <00:08:56.010>quite <00:08:56.185>significant.

204
00:08:58.905 --> 00:09:01.285
<00:08:58.905>If <00:08:59.060>you <00:08:59.216>have <00:08:59.371>this <00:08:59.527>type <00:08:59.682>of <00:08:59.838>things <00:08:59.993>like <00:09:00.149>for <00:09:00.305>two

205
00:09:01.285 --> 00:09:04.405
<00:09:01.285>or <00:09:01.440>3% <00:09:01.596>of <00:09:01.751>the <00:09:01.907>invocations, <00:09:02.062>if <00:09:02.218>you <00:09:02.373>have <00:09:02.529>login <00:09:02.685>page

206
00:09:04.405 --> 00:09:06.565
<00:09:04.405>and <00:09:04.560>so <00:09:04.716>on, <00:09:04.871>you <00:09:05.027>probably <00:09:05.182>know <00:09:05.338>the <00:09:05.493>study <00:09:05.649>from <00:09:05.805>Google

207
00:09:06.795 --> 00:09:07.805
<00:09:06.795>that <00:09:07.098>the <00:09:07.401>people <00:09:07.704>drop.

208
00:09:07.945 --> 00:09:09.965
<00:09:07.945>If <00:09:08.120>the <00:09:08.295>loading <00:09:08.470>time <00:09:08.645>is <00:09:08.820>more <00:09:08.995>than <00:09:09.170>one <00:09:09.345>second,

209
00:09:10.345 --> 00:09:12.165
<00:09:10.345>at <00:09:10.695>least <00:09:11.045>several <00:09:11.395>of <00:09:11.745>them.

210
00:09:12.265 --> 00:09:13.605
<00:09:12.265>And <00:09:12.506>we <00:09:12.747>have <00:09:12.988>here <00:09:13.229>three <00:09:13.471>seconds

211
00:09:13.905 --> 00:09:15.685
<00:09:13.905>and <00:09:14.185>it's <00:09:14.464>only <00:09:14.745>Lambda <00:09:15.025>call <00:09:15.305>start.

212
00:09:15.685 --> 00:09:17.445
<00:09:15.685>There <00:09:16.035>is <00:09:16.385>API <00:09:16.734>gateway <00:09:17.084>latency,

213
00:09:17.745 --> 00:09:20.685
<00:09:17.745>and <00:09:17.885>you <00:09:18.025>need <00:09:18.165>to <00:09:18.305>render <00:09:18.445>response <00:09:18.585>in <00:09:18.725>the <00:09:18.865>front <00:09:19.005>end <00:09:19.145>sometimes.

214
00:09:20.705 --> 00:09:22.805
<00:09:20.705>So <00:09:20.938>it's <00:09:21.171>always <00:09:21.405>just <00:09:21.638>adding <00:09:21.871>things <00:09:22.105>up.

215
00:09:23.865 --> 00:09:25.285
<00:09:23.865>So <00:09:24.120>of <00:09:24.376>course <00:09:24.631>it's <00:09:24.887>not <00:09:25.143>acceptable

216
00:09:25.285 --> 00:09:26.485
<00:09:25.285>and <00:09:25.501>probably <00:09:25.717>one <00:09:25.933>of <00:09:26.149>the <00:09:26.365>reasons

217
00:09:26.545 --> 00:09:27.725
<00:09:26.545>why <00:09:26.757>Java <00:09:26.969>is <00:09:27.182>not <00:09:27.394>that <00:09:27.607>popular.

218
00:09:27.825 --> 00:09:29.045
<00:09:27.825>For <00:09:28.191>example, <00:09:28.557>for <00:09:28.923>JavaScript,

219
00:09:29.045 --> 00:09:32.405
<00:09:29.045>you'll <00:09:29.245>have <00:09:29.444>600 <00:09:29.645>milliseconds <00:09:29.844>roughly <00:09:30.045>for <00:09:30.245>simple <00:09:30.444>things,

220
00:09:32.425 --> 00:09:33.845
<00:09:32.425>and <00:09:32.680>it's <00:09:32.936>just <00:09:33.191>a <00:09:33.447>huge <00:09:33.703>difference.

221
00:09:34.545 --> 00:09:38.685
<00:09:34.545>Um, <00:09:34.672>so <00:09:34.799>now <00:09:34.926>of <00:09:35.054>course, <00:09:35.181>uh, <00:09:35.308>I <00:09:35.435>can <00:09:35.563>finish <00:09:35.690>the <00:09:35.817>token, <00:09:35.944>but,

222
00:09:38.745 --> 00:09:42.325
<00:09:38.745>but <00:09:38.885>it's <00:09:39.025>not, <00:09:39.165>uh, <00:09:39.305>not <00:09:39.445>that <00:09:39.585>we <00:09:39.725>don't <00:09:39.865>have <00:09:40.005>any <00:09:40.145>optimization.

223
00:09:42.385 --> 00:09:43.725
<00:09:42.385>So <00:09:42.586>let's <00:09:42.787>start <00:09:42.988>with <00:09:43.189>them. <00:09:43.390>There <00:09:43.591>are

224
00:09:43.725 --> 00:09:44.885
<00:09:43.725>two <00:09:43.899>of <00:09:44.073>them <00:09:44.247>that <00:09:44.421>I <00:09:44.595>will <00:09:44.769>cover.

225
00:09:44.945 --> 00:09:46.725
<00:09:44.945>The <00:09:45.178>first <00:09:45.411>one <00:09:45.645>is <00:09:45.878>AWS <00:09:46.111>snap <00:09:46.345>start

226
00:09:47.425 --> 00:09:50.115
<00:09:47.425>and <00:09:47.599>the <00:09:47.775>second <00:09:47.949>one <00:09:48.125>will <00:09:48.300>be <00:09:48.474>G <00:09:48.650>native <00:09:48.824>image.

227
00:09:51.175 --> 00:09:53.315
<00:09:51.175>So <00:09:51.349>what <00:09:51.525>is, <00:09:51.699>let's <00:09:51.875>start <00:09:52.050>with <00:09:52.224>a <00:09:52.400>snap <00:09:52.574>start.

228
00:09:53.795 --> 00:09:55.195
<00:09:53.795>I <00:09:54.047>wrote <00:09:54.299>the <00:09:54.551>book <00:09:54.803>about <00:09:55.055>it.

229
00:09:55.195 --> 00:09:57.875
<00:09:55.195>Maybe, <00:09:55.335>uh, <00:09:55.475>you <00:09:55.615>will <00:09:55.755>see <00:09:55.895>this, <00:09:56.035>the <00:09:56.175>slides, <00:09:56.315>there <00:09:56.455>are <00:09:56.595>lots

230
00:09:57.875 --> 00:10:01.515
<00:09:57.875>of <00:09:58.075>things <00:09:58.275>are <00:09:58.475>just <00:09:58.675>28 <00:09:58.875>serious <00:09:59.075>article <00:09:59.275>currently,

231
00:10:01.935 --> 00:10:04.955
<00:10:01.935>but <00:10:02.109>basically <00:10:02.285>what <00:10:02.459>is <00:10:02.635>there <00:10:02.810>that <00:10:02.984>is <00:10:03.160>technology <00:10:03.334>natively

232
00:10:05.235 --> 00:10:07.155
<00:10:05.235>provided <00:10:05.515>by <00:10:05.795>AWS <00:10:06.075>only <00:10:06.355>for <00:10:06.635>Lambda.

233
00:10:07.155 --> 00:10:09.075
<00:10:07.155>It's <00:10:07.505>not <00:10:07.855>pliable <00:10:08.204>for <00:10:08.555>containers

234
00:10:09.175 --> 00:10:11.435
<00:10:09.175>and <00:10:09.454>institutes, <00:10:09.734>it's <00:10:10.015>only <00:10:10.295>for <00:10:10.574>Lambdas

235
00:10:11.575 --> 00:10:14.755
<00:10:11.575>and <00:10:11.730>it <00:10:11.886>just <00:10:12.041>aims <00:10:12.197>at <00:10:12.352>improving <00:10:12.508>cold <00:10:12.663>start <00:10:12.819>times, <00:10:12.975>uh,

236
00:10:14.775 --> 00:10:16.715
<00:10:14.775>for <00:10:15.125>the <00:10:15.475>latency <00:10:15.824>sensitive <00:10:16.175>application.

237
00:10:17.335 --> 00:10:19.675
<00:10:17.335>And <00:10:17.510>what's <00:10:17.685>important, <00:10:17.860>the <00:10:18.035>snap <00:10:18.210>start <00:10:18.385>is <00:10:18.560>fully <00:10:18.735>managed.

238
00:10:19.835 --> 00:10:21.475
<00:10:19.835>I <00:10:20.010>will <00:10:20.185>talk <00:10:20.360>about <00:10:20.535>it. <00:10:20.710>What <00:10:20.885>does <00:10:21.060>it <00:10:21.235>mean?

239
00:10:22.415 --> 00:10:24.675
<00:10:22.415>So <00:10:22.648>currently <00:10:22.881>Snap <00:10:23.115>start, <00:10:23.348>it <00:10:23.581>started <00:10:23.814>only

240
00:10:24.775 --> 00:10:26.675
<00:10:24.775>for <00:10:25.055>Java <00:10:25.334>run <00:10:25.615>times <00:10:25.895>on <00:10:26.175>Lambda.

241
00:10:27.175 --> 00:10:30.035
<00:10:27.175>Um, <00:10:27.330>end <00:10:27.486>of <00:10:27.641>the <00:10:27.797>last <00:10:27.952>year, <00:10:28.108>AWS <00:10:28.263>added <00:10:28.419>the <00:10:28.574>same

242
00:10:30.055 --> 00:10:33.395
<00:10:30.055>for <00:10:30.229>Python <00:10:30.405>and.net <00:10:30.579>for <00:10:30.755>Python, <00:10:30.930>especially <00:10:31.104>for <00:10:31.280>loading, <00:10:31.454>uh,

243
00:10:33.855 --> 00:10:35.635
<00:10:33.855>LMS <00:10:34.088>because <00:10:34.321>it's <00:10:34.555>a <00:10:34.788>quite <00:10:35.021>slow <00:10:35.255>thing.

244
00:10:36.135 --> 00:10:38.915
<00:10:36.135>So <00:10:36.290>it's <00:10:36.446>not <00:10:36.601>available <00:10:36.757>for <00:10:36.912>other <00:10:37.068>stuff <00:10:37.223>like <00:10:37.379>Doha <00:10:37.535>container.

245
00:10:38.915 --> 00:10:40.515
<00:10:38.915>It's <00:10:39.265>also <00:10:39.615>gro <00:10:39.964>native <00:10:40.314>image.

246
00:10:40.815 --> 00:10:42.795
<00:10:40.815>But <00:10:40.970>what <00:10:41.126>does <00:10:41.281>it <00:10:41.437>mean <00:10:41.592>and <00:10:41.748>what <00:10:41.903>does <00:10:42.059>it <00:10:42.215>do?

247
00:10:43.345 --> 00:10:45.835
<00:10:43.345>It's <00:10:43.578>your <00:10:43.811>decision <00:10:44.045>on <00:10:44.278>per <00:10:44.511>lambda <00:10:44.745>function

248
00:10:45.935 --> 00:10:47.915
<00:10:45.935>to <00:10:46.214>activate <00:10:46.494>snap <00:10:46.775>start <00:10:47.055>or <00:10:47.334>not.

249
00:10:48.175 --> 00:10:52.595
<00:10:48.175>If <00:10:48.349>you <00:10:48.525>activate <00:10:48.699>it, <00:10:48.875>then <00:10:49.050>the <00:10:49.224>work, <00:10:49.400>uh, <00:10:49.574>workflow

250
00:10:52.695 --> 00:10:54.715
<00:10:52.695>of <00:10:52.928>uh, <00:10:53.161>snap <00:10:53.395>start <00:10:53.628>divides <00:10:53.861>into <00:10:54.095>steps.

251
00:10:54.715 --> 00:10:57.475
<00:10:54.715>There <00:10:54.890>will <00:10:55.065>be <00:10:55.240>additional <00:10:55.415>steps <00:10:55.590>during <00:10:55.765>the <00:10:55.940>deployment <00:10:56.115>phase.

252
00:10:57.535 --> 00:10:59.595
<00:10:57.535>If <00:10:57.735>you <00:10:57.935>deploy <00:10:58.135>next <00:10:58.334>time <00:10:58.535>you <00:10:58.735>lambda <00:10:58.935>function,

253
00:10:59.625 --> 00:11:02.595
<00:10:59.625>basically <00:10:59.800>you <00:10:59.975>deploy, <00:11:00.150>nothing <00:11:00.325>happens <00:11:00.500>within <00:11:00.675>the <00:11:00.850>snap <00:11:01.025>start.

254
00:11:02.755 --> 00:11:06.035
<00:11:02.755>AWS <00:11:03.105>starts <00:11:03.455>the <00:11:03.805>virtual <00:11:04.155>environment

255
00:11:06.035 --> 00:11:08.075
<00:11:06.035>with <00:11:06.385>Java <00:11:06.735>deploys <00:11:07.084>our <00:11:07.435>code

256
00:11:08.575 --> 00:11:11.195
<00:11:08.575>and <00:11:08.775>invokes <00:11:08.975>only <00:11:09.175>call <00:11:09.375>start <00:11:09.575>step <00:11:09.775>kind <00:11:09.975>of

257
00:11:11.195 --> 00:11:13.835
<00:11:11.195>of <00:11:11.350>this <00:11:11.506>lambda <00:11:11.661>function, <00:11:11.817>so <00:11:11.972>it <00:11:12.128>doesn't <00:11:12.283>invoke <00:11:12.439>the <00:11:12.595>handler,

258
00:11:13.835 --> 00:11:17.395
<00:11:13.835>but <00:11:14.035>initializes <00:11:14.235>all <00:11:14.435>static <00:11:14.635>initializer <00:11:14.835>blocks, <00:11:15.035>so <00:11:15.235>everything

259
00:11:17.465 --> 00:11:20.155
<00:11:17.465>outside <00:11:17.745>and <00:11:18.025>then <00:11:18.305>it <00:11:18.585>makes <00:11:18.865>snapshot

260
00:11:20.455 --> 00:11:22.755
<00:11:20.455>of <00:11:20.655>the <00:11:20.855>running <00:11:21.055>environment <00:11:21.255>of <00:11:21.455>the <00:11:21.655>whole <00:11:21.855>environment,

261
00:11:22.995 --> 00:11:26.755
<00:11:22.995>including <00:11:23.228>operating <00:11:23.461>system <00:11:23.695>and <00:11:23.928>including <00:11:24.161>also <00:11:24.395>GVM

262
00:11:26.755 --> 00:11:28.075
<00:11:26.755>and <00:11:27.151>including <00:11:27.547>function <00:11:27.943>code.

263
00:11:28.335 --> 00:11:30.315
<00:11:28.335>And <00:11:28.615>then <00:11:28.895>it <00:11:29.175>stores <00:11:29.455>this <00:11:29.735>snapshot.

264
00:11:31.195 --> 00:11:33.805
<00:11:31.195>Then <00:11:31.428>in <00:11:31.661>case <00:11:31.895>you <00:11:32.128>activated <00:11:32.361>snap <00:11:32.595>start

265
00:11:33.805 --> 00:11:37.045
<00:11:33.805>during <00:11:33.979>the <00:11:34.155>invocation <00:11:34.329>phase, <00:11:34.505>the <00:11:34.680>snapshot <00:11:34.854>will <00:11:35.030>be <00:11:35.204>restored

266
00:11:37.065 --> 00:11:39.965
<00:11:37.065>and <00:11:37.415>resumed <00:11:37.765>for <00:11:38.115>each <00:11:38.465>invocation.

267
00:11:40.265 --> 00:11:43.365
<00:11:40.265>So <00:11:40.405>what's <00:11:40.545>the <00:11:40.685>promise <00:11:40.824>that <00:11:40.965>this <00:11:41.105>restore <00:11:41.245>zoom <00:11:41.385>is <00:11:41.525>quicker <00:11:41.665>than

268
00:11:43.365 --> 00:11:45.405
<00:11:43.365>the <00:11:43.598>normal <00:11:43.831>cold <00:11:44.065>start <00:11:44.298>of <00:11:44.531>three <00:11:44.765>seconds?

269
00:11:45.635 --> 00:11:48.165
<00:11:45.635>Otherwise, <00:11:45.790>it <00:11:45.946>just <00:11:46.101>doesn't <00:11:46.257>make <00:11:46.412>any <00:11:46.568>sense <00:11:46.723>to <00:11:46.879>have <00:11:47.035>that.

270
00:11:48.305 --> 00:11:49.885
<00:11:48.305>And <00:11:48.584>we'll <00:11:48.864>see <00:11:49.145>how <00:11:49.425>it <00:11:49.704>works.

271
00:11:50.665 --> 00:11:52.765
<00:11:50.665>So <00:11:50.898>basically <00:11:51.131>many <00:11:51.365>people <00:11:51.598>maybe <00:11:51.831>heard <00:11:52.064>something

272
00:11:52.765 --> 00:11:54.005
<00:11:52.765>like <00:11:53.323>Crio <00:11:53.881>Crack.

273
00:11:54.775 --> 00:11:56.925
<00:11:54.775>These <00:11:55.055>are <00:11:55.334>similar <00:11:55.615>technologies, <00:11:55.895>uh, <00:11:56.175>coming,

274
00:11:57.185 --> 00:12:00.325
<00:11:57.185>but <00:11:57.418>LWS <00:11:57.651>uh, <00:11:57.885>LWS <00:11:58.118>doesn't <00:11:58.351>use <00:11:58.584>it.

275
00:12:00.325 --> 00:12:01.525
<00:12:00.325>There <00:12:00.595>are, <00:12:00.865>there <00:12:01.135>are <00:12:01.405>differences.

276
00:12:01.635 --> 00:12:03.605
<00:12:01.635>It's <00:12:01.915>just <00:12:02.194>deserves <00:12:02.475>their <00:12:02.755>own <00:12:03.035>talk.

277
00:12:03.705 --> 00:12:05.125
<00:12:03.705>Uh, <00:12:04.024>fire <00:12:04.344>crack, <00:12:04.663>a <00:12:04.983>snapshot

278
00:12:05.125 --> 00:12:08.205
<00:12:05.125>of <00:12:05.280>the <00:12:05.436>whole <00:12:05.591>micro <00:12:05.747>VM <00:12:05.902>snapshot <00:12:06.058>is <00:12:06.213>just, <00:12:06.369>uh, <00:12:06.525>uh,

279
00:12:08.545 --> 00:12:11.685
<00:12:08.545>the <00:12:08.778>whole <00:12:09.011>running <00:12:09.245>operating <00:12:09.478>system <00:12:09.711>crack <00:12:09.944>creo,

280
00:12:11.765 --> 00:12:14.045
<00:12:11.765>they <00:12:11.965>are <00:12:12.165>snapshotting <00:12:12.365>basically <00:12:12.564>only <00:12:12.765>a <00:12:12.965>single <00:12:13.165>process.

281
00:12:15.265 --> 00:12:16.765
<00:12:15.265>So <00:12:15.490>how <00:12:15.715>does <00:12:15.939>it <00:12:16.165>work? <00:12:16.390>Once <00:12:16.615>again,

282
00:12:16.765 --> 00:12:19.365
<00:12:16.765>you <00:12:16.939>simply <00:12:17.115>say <00:12:17.290>per <00:12:17.465>lambda <00:12:17.640>function, <00:12:17.814>it's <00:12:17.990>basically <00:12:18.165>yes

283
00:12:19.505 --> 00:12:21.565
<00:12:19.505>or <00:12:19.855>no <00:12:20.205>for <00:12:20.555>snap <00:12:20.905>start.

284
00:12:21.825 --> 00:12:23.845
<00:12:21.825>The <00:12:22.025>snap <00:12:22.225>start, <00:12:22.425>yes, <00:12:22.625>in <00:12:22.825>this <00:12:23.025>orange <00:12:23.225>box.

285
00:12:24.465 --> 00:12:25.885
<00:12:24.465>And <00:12:24.678>what <00:12:24.891>does <00:12:25.104>it <00:12:25.317>mean <00:12:25.530>it's <00:12:25.742>managed?

286
00:12:25.985 --> 00:12:27.885
<00:12:25.985>The <00:12:26.185>whole <00:12:26.385>snapshot <00:12:26.585>will <00:12:26.785>be <00:12:26.985>managed <00:12:27.185>for <00:12:27.385>you.

287
00:12:27.885 --> 00:12:31.045
<00:12:27.885>You <00:12:28.025>don't <00:12:28.165>need <00:12:28.305>run <00:12:28.444>instances <00:12:28.585>to <00:12:28.725>make <00:12:28.865>and <00:12:29.005>store <00:12:29.145>the <00:12:29.285>snapshot.

288
00:12:31.335 --> 00:12:33.005
<00:12:31.335>It'll <00:12:31.568>be <00:12:31.801>secured <00:12:32.035>and <00:12:32.268>stored <00:12:32.501>in <00:12:32.735>three

289
00:12:33.005 --> 00:12:34.605
<00:12:33.005>availability <00:12:33.355>zones <00:12:33.705>of <00:12:34.055>the <00:12:34.405>region.

290
00:12:34.985 --> 00:12:36.965
<00:12:34.985>And <00:12:35.185>that <00:12:35.385>is, <00:12:35.585>is <00:12:35.785>meant <00:12:35.985>that <00:12:36.185>it's <00:12:36.385>completely,

291
00:12:37.185 --> 00:12:38.285
<00:12:37.185>um, <00:12:37.515>managed <00:12:37.844>for <00:12:38.175>you.

292
00:12:39.195 --> 00:12:40.245
<00:12:39.195>It's <00:12:39.431>not <00:12:39.667>the <00:12:39.903>whole <00:12:40.140>story.

293
00:12:40.365 --> 00:12:42.125
<00:12:40.365>I <00:12:40.565>will <00:12:40.765>show <00:12:40.965>you <00:12:41.165>the, <00:12:41.365>the <00:12:41.565>measurement <00:12:41.765>with,

294
00:12:42.155 --> 00:12:44.085
<00:12:42.155>with <00:12:42.435>SNAP <00:12:42.714>start <00:12:42.995>only <00:12:43.275>by <00:12:43.555>activating

295
00:12:44.105 --> 00:12:46.125
<00:12:44.105>and <00:12:44.305>by <00:12:44.505>not <00:12:44.705>running <00:12:44.905>any <00:12:45.105>code, <00:12:45.305>but <00:12:45.505>nor

296
00:12:46.185 --> 00:12:48.245
<00:12:46.185>but <00:12:46.535>not <00:12:46.885>writing <00:12:47.234>additional <00:12:47.584>code.

297
00:12:48.545 --> 00:12:49.605
<00:12:48.545>But <00:12:48.783>you <00:12:49.021>can <00:12:49.260>do <00:12:49.499>more.

298
00:12:49.825 --> 00:12:52.365
<00:12:49.825>And <00:12:50.000>this <00:12:50.175>technique <00:12:50.350>with <00:12:50.525>snap <00:12:50.700>start <00:12:50.875>is <00:12:51.050>called <00:12:51.225>priming.

299
00:12:52.465 --> 00:12:53.965
<00:12:52.465>So <00:12:52.802>what <00:12:53.140>does <00:12:53.477>priming <00:12:53.815>mean?

300
00:12:54.585 --> 00:12:57.165
<00:12:54.585>You <00:12:54.760>can <00:12:54.935>preload <00:12:55.110>things <00:12:55.285>that <00:12:55.460>they <00:12:55.635>will <00:12:55.810>become <00:12:55.985>part

301
00:12:57.165 --> 00:12:59.925
<00:12:57.165>of <00:12:57.339>the <00:12:57.515>snapshot <00:12:57.689>and <00:12:57.865>if <00:12:58.040>they <00:12:58.214>will <00:12:58.390>become <00:12:58.564>part

302
00:12:59.925 --> 00:13:01.885
<00:12:59.925>of <00:13:00.158>the <00:13:00.391>snapshots, <00:13:00.625>then <00:13:00.858>they <00:13:01.091>are <00:13:01.324>available

303
00:13:01.885 --> 00:13:03.125
<00:13:01.885>after <00:13:02.257>the <00:13:02.629>restoring <00:13:03.001>phase.

304
00:13:03.585 --> 00:13:04.685
<00:13:03.585>So <00:13:03.832>what <00:13:04.080>are <00:13:04.327>those <00:13:04.574>things?

305
00:13:04.905 --> 00:13:08.005
<00:13:04.905>For <00:13:05.138>example, <00:13:05.371>Java <00:13:05.605>loads <00:13:05.838>the <00:13:06.071>classes <00:13:06.305>lazily,

306
00:13:08.465 --> 00:13:10.205
<00:13:08.465>so <00:13:08.698>when <00:13:08.931>we <00:13:09.165>first <00:13:09.398>time <00:13:09.631>need <00:13:09.865>them,

307
00:13:10.865 --> 00:13:13.485
<00:13:10.865>but <00:13:11.065>if <00:13:11.265>we <00:13:11.465>know <00:13:11.665>during <00:13:11.865>the <00:13:12.065>snapshot <00:13:12.265>phase

308
00:13:13.485 --> 00:13:16.165
<00:13:13.485>that <00:13:13.625>we'll <00:13:13.765>need <00:13:13.905>them <00:13:14.045>later, <00:13:14.185>we <00:13:14.325>can <00:13:14.465>preload <00:13:14.605>them <00:13:14.745>for <00:13:14.885>example.

309
00:13:16.875 --> 00:13:18.885
<00:13:16.875>Also, <00:13:17.155>there <00:13:17.435>are <00:13:17.715>things <00:13:17.995>happening, <00:13:18.275>um,

310
00:13:19.455 --> 00:13:21.045
<00:13:19.455>which <00:13:19.735>requires <00:13:20.015>a <00:13:20.295>bit <00:13:20.575>of <00:13:20.855>knowledge.

311
00:13:21.345 --> 00:13:24.485
<00:13:21.345>For <00:13:21.485>example, <00:13:21.625>by <00:13:21.765>using <00:13:21.905>DynamoDB, <00:13:22.045>as <00:13:22.185>I <00:13:22.325>told <00:13:22.465>you, <00:13:22.605>we <00:13:22.745>in

312
00:13:25.275 --> 00:13:27.205
<00:13:25.275>instantiate <00:13:25.741>A <00:13:26.208>CTP <00:13:26.675>client,

313
00:13:27.585 --> 00:13:30.365
<00:13:27.585>if <00:13:27.760>you <00:13:27.935>instantiate <00:13:28.110>a <00:13:28.285>CTP <00:13:28.460>client <00:13:28.635>like <00:13:28.810>Apache, <00:13:28.985>it's

314
00:13:30.365 --> 00:13:31.685
<00:13:30.365>for <00:13:30.761>long <00:13:31.156>living <00:13:31.553>applications.

315
00:13:32.105 --> 00:13:33.285
<00:13:32.105>If <00:13:32.459>you <00:13:32.813>first <00:13:33.166>kind

316
00:13:33.285 --> 00:13:36.365
<00:13:33.285>of <00:13:33.485>instantiate <00:13:33.685>it <00:13:33.885>costs <00:13:34.084>you <00:13:34.285>several <00:13:34.485>hundred <00:13:34.685>milliseconds.

317
00:13:36.705 --> 00:13:39.445
<00:13:36.705>The <00:13:36.845>a <00:13:36.985>lot <00:13:37.125>of <00:13:37.265>single <00:13:37.405>tiles <00:13:37.545>load <00:13:37.685>it <00:13:37.825>and <00:13:37.965>so <00:13:38.105>on.

318
00:13:39.535 --> 00:13:42.285
<00:13:39.535>There <00:13:39.690>is <00:13:39.846>a <00:13:40.001>chance <00:13:40.157>just <00:13:40.312>to <00:13:40.468>pre <00:13:40.623>instantiate <00:13:40.779>the <00:13:40.935>things

319
00:13:42.425 --> 00:13:44.525
<00:13:42.425>and <00:13:42.599>that <00:13:42.775>they <00:13:42.949>become <00:13:43.125>the <00:13:43.300>part <00:13:43.474>of <00:13:43.650>the <00:13:43.824>snapshot.

320
00:13:44.905 --> 00:13:48.565
<00:13:44.905>The <00:13:45.105>same <00:13:45.305>is <00:13:45.505>DynamoDB <00:13:45.704>is <00:13:45.905>um, <00:13:46.105>NoSQL <00:13:46.305>database.

321
00:13:48.915 --> 00:13:50.605
<00:13:48.915>This <00:13:49.194>means <00:13:49.474>that <00:13:49.755>you <00:13:50.035>store <00:13:50.314>json.

322
00:13:50.875 --> 00:13:54.165
<00:13:50.875>That <00:13:51.002>also <00:13:51.129>means <00:13:51.256>that <00:13:51.384>you <00:13:51.511>need <00:13:51.638>some <00:13:51.765>tool <00:13:51.893>to <00:13:52.020>to <00:13:52.147>to <00:13:52.275>serialize

323
00:13:54.165 --> 00:13:55.325
<00:13:54.165>and <00:13:54.687>unsterilize <00:13:55.209>stuff.

324
00:13:55.665 --> 00:13:58.325
<00:13:55.665>And <00:13:56.015>the <00:13:56.365>SSDK <00:13:56.714>uses <00:13:57.064>json

325
00:13:58.785 --> 00:14:03.125
<00:13:58.785>and <00:13:58.925>if <00:13:59.064>you <00:13:59.204>on <00:13:59.344>your <00:13:59.485>local <00:13:59.625>machine <00:13:59.765>call <00:13:59.905>new <00:14:00.045>object <00:14:00.185>mapper,

326
00:14:03.255 --> 00:14:05.285
<00:14:03.255>which <00:14:03.605>means <00:14:03.955>you <00:14:04.305>instantiate <00:14:04.655>Jackson,

327
00:14:05.745 --> 00:14:08.765
<00:14:05.745>it <00:14:05.920>costs <00:14:06.095>you <00:14:06.270>500 <00:14:06.445>milliseconds, <00:14:06.620>four <00:14:06.795>or <00:14:06.970>500 <00:14:07.145>milliseconds.

328
00:14:08.765 --> 00:14:11.685
<00:14:08.765>If <00:14:08.892>you <00:14:09.019>do <00:14:09.146>it <00:14:09.274>for <00:14:09.401>the <00:14:09.528>second <00:14:09.655>and <00:14:09.783>one <00:14:09.910>millisecond, <00:14:10.037>lots <00:14:10.165>of

329
00:14:12.495 --> 00:14:14.285
<00:14:12.495>singletons <00:14:12.961>will <00:14:13.428>be <00:14:13.895>instantiated

330
00:14:14.385 --> 00:14:16.365
<00:14:14.385>for <00:14:14.618>the <00:14:14.851>first <00:14:15.085>time <00:14:15.318>for <00:14:15.551>the <00:14:15.785>lifecycle.

331
00:14:16.625 --> 00:14:19.245
<00:14:16.625>So <00:14:16.825>there <00:14:17.025>is <00:14:17.225>a <00:14:17.425>chance <00:14:17.625>to <00:14:17.825>instantiate <00:14:18.025>stuff.

332
00:14:19.585 --> 00:14:23.805
<00:14:19.585>So <00:14:19.785>how <00:14:19.985>does <00:14:20.185>it <00:14:20.385>work? <00:14:20.585>Um, <00:14:20.785>this, <00:14:20.985>um,

333
00:14:24.475 --> 00:14:27.165
<00:14:24.475>snap <00:14:24.675>Start <00:14:24.875>allows <00:14:25.075>you <00:14:25.275>to <00:14:25.475>have <00:14:25.675>optional <00:14:25.875>hooks

334
00:14:27.165 --> 00:14:29.445
<00:14:27.165>before <00:14:27.444>you <00:14:27.724>snap <00:14:28.005>do <00:14:28.285>the <00:14:28.564>snapshot

335
00:14:29.665 --> 00:14:31.565
<00:14:29.665>and <00:14:29.944>also <00:14:30.224>optional <00:14:30.505>hooks <00:14:30.785>after <00:14:31.064>restore.

336
00:14:31.925 --> 00:14:33.605
<00:14:31.925>I <00:14:32.158>don't <00:14:32.391>use <00:14:32.625>the <00:14:32.858>things <00:14:33.091>after <00:14:33.324>restore,

337
00:14:33.865 --> 00:14:36.005
<00:14:33.865>but <00:14:34.215>with <00:14:34.565>optional, <00:14:34.915>um, <00:14:35.265>hooks.

338
00:14:36.105 --> 00:14:38.125
<00:14:36.105>Uh, <00:14:36.338>we <00:14:36.571>can <00:14:36.805>do <00:14:37.038>this <00:14:37.271>like <00:14:37.505>this.

339
00:14:38.945 --> 00:14:41.845
<00:14:38.945>So, <00:14:39.225>um, <00:14:39.505>what <00:14:39.785>can <00:14:40.065>we <00:14:40.345>do?

340
00:14:41.845 --> 00:14:43.605
<00:14:41.845>So <00:14:42.045>once <00:14:42.245>again, <00:14:42.445>you <00:14:42.645>see <00:14:42.845>here <00:14:43.045>the <00:14:43.245>code.

341
00:14:43.955 --> 00:14:46.525
<00:14:43.955>This <00:14:44.155>is <00:14:44.355>basically <00:14:44.555>how <00:14:44.755>to <00:14:44.955>connect <00:14:45.155>to <00:14:45.355>DynamoDB

342
00:14:47.505 --> 00:14:49.485
<00:14:47.505>and <00:14:47.855>by <00:14:48.205>instantiating <00:14:48.555>DynamoDB <00:14:48.905>client,

343
00:14:49.645 --> 00:14:52.125
<00:14:49.645>I <00:14:49.925>pre <00:14:50.204>instantiate <00:14:50.485>patient <00:14:50.765>CCP <00:14:51.045>client.

344
00:14:52.385 --> 00:14:54.725
<00:14:52.385>And <00:14:52.618>by <00:14:52.851>calling <00:14:53.085>get <00:14:53.318>item <00:14:53.551>to <00:14:53.785>DynamoDB,

345
00:14:54.725 --> 00:14:57.925
<00:14:54.725>the <00:14:54.900>Jackson <00:14:55.075>client <00:14:55.250>will <00:14:55.425>be, <00:14:55.600>uh, <00:14:55.775>pre <00:14:55.950>pre <00:14:56.125>initialized.

346
00:14:58.225 --> 00:15:01.405
<00:14:58.225>The <00:14:58.352>thing <00:14:58.479>is, <00:14:58.606>I <00:14:58.734>already <00:14:58.861>have <00:14:58.988>in <00:14:59.115>my <00:14:59.243>DAO <00:14:59.370>method <00:14:59.497>get <00:14:59.625>product

347
00:15:01.545 --> 00:15:03.285
<00:15:01.545>by <00:15:01.824>id, <00:15:02.104>which <00:15:02.385>does <00:15:02.665>exactly <00:15:02.944>that.

348
00:15:03.865 --> 00:15:08.125
<00:15:03.865>So <00:15:03.972>what <00:15:04.080>I <00:15:04.188>can <00:15:04.295>do <00:15:04.403>to <00:15:04.511>write <00:15:04.618>this, <00:15:04.726>um, <00:15:04.834>to, <00:15:04.941>to <00:15:05.049>use <00:15:05.157>this <00:15:05.265>priming

349
00:15:09.025 --> 00:15:13.245
<00:15:09.025>and <00:15:09.199>use <00:15:09.375>this <00:15:09.550>additional <00:15:09.725>API, <00:15:09.900>which <00:15:10.074>is <00:15:10.250>correct <00:15:10.425>API

350
00:15:13.245 --> 00:15:15.965
<00:15:13.245>and <00:15:13.595>implement <00:15:13.945>resource <00:15:14.295>interface <00:15:14.645>this

351
00:15:15.965 --> 00:15:20.045
<00:15:15.965>and <00:15:16.105>get <00:15:16.245>product <00:15:16.385>by <00:15:16.525>by <00:15:16.665>ID <00:15:16.805>handler, <00:15:16.945>then <00:15:17.085>in <00:15:17.225>the <00:15:17.365>construct,

352
00:15:20.085 --> 00:15:21.405
<00:15:20.085>I <00:15:20.322>need <00:15:20.560>to <00:15:20.797>copy <00:15:21.035>this <00:15:21.273>thing

353
00:15:21.405 --> 00:15:23.925
<00:15:21.405>that <00:15:21.638>which <00:15:21.871>says <00:15:22.105>I <00:15:22.338>initialize <00:15:22.571>this <00:15:22.805>class

354
00:15:24.025 --> 00:15:25.085
<00:15:24.025>as <00:15:24.343>a <00:15:24.661>correct <00:15:24.979>resource.

355
00:15:25.265 --> 00:15:26.725
<00:15:25.265>And <00:15:25.593>the <00:15:25.922>relevant <00:15:26.250>method <00:15:26.579>is

356
00:15:26.725 --> 00:15:29.205
<00:15:26.725>before <00:15:26.958>checkpoint <00:15:27.191>this <00:15:27.425>method <00:15:27.658>will <00:15:27.891>be <00:15:28.125>executed

357
00:15:29.225 --> 00:15:30.845
<00:15:29.225>before <00:15:29.575>the <00:15:29.925>snapshot <00:15:30.275>is <00:15:30.625>taken.

358
00:15:31.185 --> 00:15:33.925
<00:15:31.185>And <00:15:31.301>what <00:15:31.418>I <00:15:31.535>do <00:15:31.651>there, <00:15:31.768>I <00:15:31.885>simply <00:15:32.001>call <00:15:32.118>the <00:15:32.234>DAO <00:15:32.351>method <00:15:32.468>of <00:15:32.584>the,

359
00:15:33.945 --> 00:15:35.085
<00:15:33.945>of <00:15:34.458>the <00:15:34.971>DynamoDB.

360
00:15:35.985 --> 00:15:38.725
<00:15:35.985>I'm <00:15:36.140>not <00:15:36.296>interested <00:15:36.451>in <00:15:36.607>the <00:15:36.762>results <00:15:36.918>by <00:15:37.073>calling <00:15:37.229>d <00:15:37.385>product.

361
00:15:38.985 --> 00:15:40.125
<00:15:38.985>Dao <00:15:39.241>get <00:15:39.498>product <00:15:39.754>by <00:15:40.011>idea.

362
00:15:40.245 --> 00:15:42.205
<00:15:40.245>I <00:15:40.525>pre <00:15:40.805>initialize <00:15:41.085>a <00:15:41.365>paycheck <00:15:41.645>client

363
00:15:42.705 --> 00:15:45.325
<00:15:42.705>and <00:15:42.938>I <00:15:43.171>pre <00:15:43.405>initialize <00:15:43.638>j <00:15:43.871>Jackson <00:15:44.105>Marshall

364
00:15:45.465 --> 00:15:47.445
<00:15:45.465>and <00:15:45.698>it <00:15:45.931>becomes <00:15:46.165>part <00:15:46.398>of <00:15:46.631>the <00:15:46.865>snapshot.

365
00:15:48.395 --> 00:15:52.645
<00:15:48.395>Yeah, <00:15:48.569>and <00:15:48.745>many <00:15:48.920>AWS <00:15:49.095>services <00:15:49.270>use <00:15:49.444>HTP <00:15:49.620>based <00:15:49.795>stuff.

366
00:15:52.965 --> 00:15:54.645
<00:15:52.965>SQSS <00:15:53.245>and <00:15:53.525>S <00:15:53.805>all <00:15:54.085>like <00:15:54.365>this.

367
00:15:55.265 --> 00:15:58.285
<00:15:55.265>Um, <00:15:55.439>Lambda <00:15:55.615>has, <00:15:55.790>uh, <00:15:55.965>there <00:15:56.140>is <00:15:56.314>a <00:15:56.490>priming <00:15:56.665>guide.

368
00:15:58.425 --> 00:16:02.365
<00:15:58.425>So <00:15:58.564>you <00:15:58.704>can <00:15:58.844>look <00:15:58.984>into <00:15:59.125>this <00:15:59.265>priming <00:15:59.405>guide <00:15:59.545>published <00:15:59.685>by <00:15:59.824>AWS

369
00:16:02.365 --> 00:16:03.605
<00:16:02.365>that <00:16:02.644>you <00:16:02.923>can <00:16:03.202>identify <00:16:03.481>patterns.

370
00:16:03.605 --> 00:16:06.365
<00:16:03.605>There <00:16:03.760>are <00:16:03.916>simple <00:16:04.071>applications, <00:16:04.227>like <00:16:04.382>if <00:16:04.538>you <00:16:04.693>do <00:16:04.849>hello <00:16:05.005>world

371
00:16:07.025 --> 00:16:09.805
<00:16:07.025>and <00:16:07.199>some <00:16:07.375>dynamic <00:16:07.550>string, <00:16:07.725>you <00:16:07.900>probably <00:16:08.074>cannot <00:16:08.250>prime <00:16:08.425>anything.

372
00:16:09.805 --> 00:16:13.245
<00:16:09.805>There <00:16:09.944>is <00:16:10.084>nothing <00:16:10.224>that <00:16:10.364>can <00:16:10.505>be <00:16:10.645>become <00:16:10.785>additionally <00:16:10.925>part <00:16:11.064>of <00:16:11.204>the

373
00:16:13.765 --> 00:16:17.365
<00:16:13.765>snapshot, <00:16:13.920>but <00:16:14.076>with <00:16:14.231>the <00:16:14.387>staff <00:16:14.542>talking <00:16:14.698>via <00:16:14.853>GTP, <00:16:15.009>it's <00:16:15.165>possible.

374
00:16:17.665 --> 00:16:18.925
<00:16:17.665>So <00:16:17.891>now <00:16:18.118>let's <00:16:18.345>measure <00:16:18.572>the <00:16:18.799>stuff.

375
00:16:19.225 --> 00:16:21.485
<00:16:19.225>So <00:16:19.380>now <00:16:19.536>you <00:16:19.691>see, <00:16:19.847>um, <00:16:20.002>this <00:16:20.158>is <00:16:20.313>the <00:16:20.469>cold <00:16:20.625>starts

376
00:16:21.505 --> 00:16:23.285
<00:16:21.505>and <00:16:21.785>millisecond <00:16:22.064>on <00:16:22.345>the <00:16:22.625>left <00:16:22.905>side.

377
00:16:23.345 --> 00:16:27.205
<00:16:23.345>You <00:16:23.485>see <00:16:23.625>exactly <00:16:23.765>what <00:16:23.905>we <00:16:24.045>measured <00:16:24.185>without <00:16:24.325>snap <00:16:24.465>start <00:16:24.605>in <00:16:24.745>the

378
00:16:27.205 --> 00:16:30.045
<00:16:27.205>middle, <00:16:27.405>snap <00:16:27.605>start <00:16:27.805>without <00:16:28.005>priming <00:16:28.205>simply <00:16:28.405>check <00:16:28.605>box.

379
00:16:30.245 --> 00:16:33.525
<00:16:30.245>I <00:16:30.361>would <00:16:30.478>like <00:16:30.595>to <00:16:30.711>have <00:16:30.828>snap <00:16:30.945>start <00:16:31.061>on <00:16:31.178>the <00:16:31.295>left <00:16:31.411>right <00:16:31.528>side <00:16:31.645>is

380
00:16:33.525 --> 00:16:36.205
<00:16:33.525>with <00:16:33.699>this <00:16:33.875>priming <00:16:34.050>with <00:16:34.225>additional <00:16:34.400>quote <00:16:34.574>like <00:16:34.750>get <00:16:34.925>product

381
00:16:36.305 --> 00:16:38.525
<00:16:36.305>by <00:16:36.771>ID <00:16:37.238>and <00:16:37.704>DHS.

382
00:16:38.525 --> 00:16:42.725
<00:16:38.525>You <00:16:38.725>see <00:16:38.925>that <00:16:39.125>only <00:16:39.324>by <00:16:39.525>check <00:16:39.725>boxing <00:16:39.925>priming.

383
00:16:42.825 --> 00:16:46.605
<00:16:42.825>If <00:16:42.941>you <00:16:43.058>look <00:16:43.175>in <00:16:43.291>this <00:16:43.408>yellow <00:16:43.525>one <00:16:43.641>P <00:16:43.758>90 <00:16:43.875>from <00:16:43.991>3.2 <00:16:44.108>seconds <00:16:44.225>down

384
00:16:46.605 --> 00:16:49.085
<00:16:46.605>to <00:16:46.805>two <00:16:47.005>seconds <00:16:47.205>only <00:16:47.405>checkbox <00:16:47.605>nothing <00:16:47.805>to <00:16:48.005>do

385
00:16:49.835 --> 00:16:52.685
<00:16:49.835>with <00:16:49.990>additional <00:16:50.146>priming, <00:16:50.301>you <00:16:50.457>can <00:16:50.612>go <00:16:50.768>down <00:16:50.923>to <00:16:51.079>one <00:16:51.235>second

386
00:16:53.425 --> 00:16:55.605
<00:16:53.425>and <00:16:53.658>it <00:16:53.891>becomes <00:16:54.125>a <00:16:54.358>bit <00:16:54.591>more <00:16:54.824>acceptable.

387
00:16:55.605 --> 00:16:58.725
<00:16:55.605>And <00:16:55.780>I <00:16:55.955>will <00:16:56.130>be <00:16:56.305>talking <00:16:56.480>about, <00:16:56.655>um, <00:16:56.830>it, <00:16:57.005>uh,

388
00:16:59.475 --> 00:17:00.805
<00:16:59.475>what <00:16:59.714>we <00:16:59.953>can <00:17:00.193>do <00:17:00.432>even <00:17:00.671>more.

389
00:17:01.265 --> 00:17:04.125
<00:17:01.265>So <00:17:01.420>warm <00:17:01.576>start <00:17:01.731>is <00:17:01.887>basically, <00:17:02.042>so <00:17:02.198>snap <00:17:02.353>start <00:17:02.509>is <00:17:02.665>for,

390
00:17:04.145 --> 00:17:05.325
<00:17:04.145>for <00:17:04.499>improving <00:17:04.853>cold <00:17:05.207>start.

391
00:17:05.345 --> 00:17:07.925
<00:17:05.345>It <00:17:05.545>improves <00:17:05.745>also <00:17:05.944>by <00:17:06.145>pre <00:17:06.345>initializing <00:17:06.545>the <00:17:06.745>stuff,

392
00:17:08.035 --> 00:17:09.445
<00:17:08.035>also <00:17:08.458>the <00:17:08.881>maximal <00:17:09.303>values.

393
00:17:10.265 --> 00:17:13.045
<00:17:10.265>So <00:17:10.405>the <00:17:10.545>maximal <00:17:10.685>uh, <00:17:10.825>latency <00:17:10.965>of <00:17:11.105>the <00:17:11.245>warm <00:17:11.385>start <00:17:11.525>you <00:17:11.665>see

394
00:17:13.045 --> 00:17:15.805
<00:17:13.045>because <00:17:13.185>I <00:17:13.325>pre <00:17:13.465>initialize <00:17:13.605>so <00:17:13.745>much <00:17:13.885>is <00:17:14.025>just <00:17:14.165>also <00:17:14.305>went <00:17:14.445>down.

395
00:17:15.945 --> 00:17:19.685
<00:17:15.944>So, <00:17:16.119>um, <00:17:16.294>also <00:17:16.470>kind <00:17:16.645>of <00:17:16.819>the <00:17:16.994>effect <00:17:17.169>of <00:17:17.345>this.

396
00:17:20.825 --> 00:17:23.325
<00:17:20.825>So <00:17:21.000>the <00:17:21.175>thing <00:17:21.350>was <00:17:21.525>I <00:17:21.700>showed <00:17:21.875>you <00:17:22.050>all <00:17:22.225>100

397
00:17:23.515 --> 00:17:24.765
<00:17:23.515>call <00:17:24.077>starts <00:17:24.640>measurements.

398
00:17:25.505 --> 00:17:29.325
<00:17:25.505>Um, <00:17:25.738>uh, <00:17:25.971>there <00:17:26.205>is <00:17:26.438>another <00:17:26.671>thing <00:17:26.905>here

399
00:17:29.635 --> 00:17:32.325
<00:17:29.635>because <00:17:29.835>many <00:17:30.035>people <00:17:30.235>start <00:17:30.435>measure <00:17:30.635>with <00:17:30.835>snap <00:17:31.035>start

400
00:17:32.325 --> 00:17:35.965
<00:17:32.325>and <00:17:32.480>say, <00:17:32.636>yeah, <00:17:32.791>it's <00:17:32.947>still <00:17:33.102>too <00:17:33.258>high, <00:17:33.413>the <00:17:33.569>first <00:17:33.725>executions.

401
00:17:35.965 --> 00:17:37.205
<00:17:35.965>And <00:17:36.188>uh, <00:17:36.411>and <00:17:36.634>then <00:17:36.857>they <00:17:37.081>stop.

402
00:17:37.625 --> 00:17:40.285
<00:17:37.625>The <00:17:37.780>thing <00:17:37.936>is <00:17:38.091>there <00:17:38.247>is <00:17:38.402>a <00:17:38.558>huge <00:17:38.713>magic <00:17:38.869>behind <00:17:39.025>this,

403
00:17:40.345 --> 00:17:43.645
<00:17:40.345>and <00:17:40.500>it's <00:17:40.656>called <00:17:40.811>the <00:17:40.967>snapshot <00:17:41.122>is <00:17:41.278>stored <00:17:41.433>in <00:17:41.589>the <00:17:41.745>low

404
00:17:43.995 --> 00:17:45.245
<00:17:43.995>latency <00:17:44.557>tiered <00:17:45.120>cache.

405
00:17:46.025 --> 00:17:47.525
<00:17:46.025>And <00:17:46.250>this <00:17:46.475>cache <00:17:46.700>is <00:17:46.925>quite <00:17:47.150>a <00:17:47.375>magic.

406
00:17:48.145 --> 00:17:51.565
<00:17:48.145>Um, <00:17:48.378>it <00:17:48.611>stores <00:17:48.845>different <00:17:49.078>bits <00:17:49.311>of <00:17:49.545>information

407
00:17:51.565 --> 00:17:53.965
<00:17:51.565>because <00:17:51.845>it's <00:17:52.125>the <00:17:52.405>whole <00:17:52.685>micro <00:17:52.965>vm

408
00:17:54.265 --> 00:17:56.805
<00:17:54.265>and <00:17:54.465>it <00:17:54.665>consists <00:17:54.865>of <00:17:55.065>the <00:17:55.265>operating <00:17:55.465>system <00:17:55.665>bits

409
00:17:56.875 --> 00:17:59.685
<00:17:56.875>that <00:17:57.050>people <00:17:57.225>reuse <00:17:57.400>because <00:17:57.575>Lambda <00:17:57.750>is <00:17:57.925>based <00:17:58.100>on <00:17:58.275>Linux.

410
00:17:59.985 --> 00:18:02.845
<00:17:59.985>It <00:18:00.185>consists <00:18:00.385>of <00:18:00.584>the <00:18:00.784>um, <00:18:00.985>uh, <00:18:01.185>GVM <00:18:01.385>bits.

411
00:18:03.145 --> 00:18:05.965
<00:18:03.145>And <00:18:03.285>if <00:18:03.425>you <00:18:03.565>select <00:18:03.705>a <00:18:03.845>GVM <00:18:03.985>21, <00:18:04.125>they <00:18:04.264>share <00:18:04.405>these <00:18:04.545>bits

412
00:18:05.965 --> 00:18:08.765
<00:18:05.965>and <00:18:06.165>they <00:18:06.365>consist <00:18:06.564>of <00:18:06.764>your <00:18:06.965>lambda <00:18:07.165>function <00:18:07.365>cache,

413
00:18:08.975 --> 00:18:10.365
<00:18:08.975>which <00:18:09.287>is <00:18:09.600>your <00:18:09.913>business <00:18:10.226>logic.

414
00:18:10.705 --> 00:18:12.605
<00:18:10.705>And <00:18:10.879>of <00:18:11.054>course, <00:18:11.230>if <00:18:11.405>you <00:18:11.580>start <00:18:11.754>this <00:18:11.929>cache, <00:18:12.105>your,

415
00:18:13.315 --> 00:18:15.725
<00:18:13.315>your <00:18:13.548>lambda <00:18:13.781>function <00:18:14.015>parts <00:18:14.248>are <00:18:14.481>not <00:18:14.715>there.

416
00:18:16.105 --> 00:18:18.885
<00:18:16.105>But <00:18:16.305>by <00:18:16.505>invoking <00:18:16.705>that, <00:18:16.905>these <00:18:17.105>parts <00:18:17.305>become <00:18:17.505>available.

417
00:18:19.265 --> 00:18:21.325
<00:18:19.265>So <00:18:19.420>basically <00:18:19.576>what <00:18:19.731>I <00:18:19.887>would <00:18:20.042>like <00:18:20.198>to, <00:18:20.353>to <00:18:20.509>tell <00:18:20.665>you

418
00:18:21.345 --> 00:18:22.445
<00:18:21.345>and <00:18:21.592>I <00:18:21.840>wrote <00:18:22.087>about <00:18:22.335>this,

419
00:18:22.445 --> 00:18:25.805
<00:18:22.445>and <00:18:22.620>you <00:18:22.794>can, <00:18:22.970>uh, <00:18:23.145>watch <00:18:23.320>the <00:18:23.495>stock, <00:18:23.669>uh, <00:18:23.845>on,

420
00:18:25.945 --> 00:18:28.565
<00:18:25.945>on <00:18:26.145>the <00:18:26.345>Q <00:18:26.544>con <00:18:26.745>conference <00:18:26.945>where <00:18:27.145>it's <00:18:27.345>about

421
00:18:28.585 --> 00:18:31.645
<00:18:28.585>how <00:18:28.740>snap <00:18:28.896>start <00:18:29.051>is <00:18:29.207>implemented <00:18:29.362>in <00:18:29.518>this <00:18:29.673>caching, <00:18:29.829>this <00:18:29.985>cache

422
00:18:32.275 --> 00:18:34.245
<00:18:32.275>becomes <00:18:32.555>quicker <00:18:32.835>with <00:18:33.115>a <00:18:33.395>more <00:18:33.675>invocation.

423
00:18:34.305 --> 00:18:37.525
<00:18:34.305>So <00:18:34.505>the <00:18:34.705>roughly <00:18:34.905>first <00:18:35.105>20 <00:18:35.305>invocations <00:18:35.505>are <00:18:35.705>slower

424
00:18:37.745 --> 00:18:39.125
<00:18:37.745>and <00:18:37.993>then <00:18:38.241>it <00:18:38.490>becomes <00:18:38.738>really <00:18:38.987>quick

425
00:18:39.125 --> 00:18:41.125
<00:18:39.125>because <00:18:39.405>the <00:18:39.685>the <00:18:39.965>cache <00:18:40.245>is <00:18:40.525>full.

426
00:18:42.185 --> 00:18:44.165
<00:18:42.185>And <00:18:42.385>if <00:18:42.585>I <00:18:42.784>show <00:18:42.985>you <00:18:43.185>now <00:18:43.385>the <00:18:43.585>metrics

427
00:18:44.385 --> 00:18:47.125
<00:18:44.385>and <00:18:44.560>it's <00:18:44.735>only <00:18:44.910>available <00:18:45.085>for <00:18:45.260>the <00:18:45.435>snap <00:18:45.610>start <00:18:45.785>activated,

428
00:18:47.745 --> 00:18:49.085
<00:18:47.745>not <00:18:48.046>only <00:18:48.348>the <00:18:48.649>first <00:18:48.951>100,

429
00:18:49.185 --> 00:18:51.525
<00:18:49.185>but <00:18:49.360>I <00:18:49.534>showed <00:18:49.710>you <00:18:49.885>also <00:18:50.060>here <00:18:50.235>the <00:18:50.409>last <00:18:50.585>70.

430
00:18:51.905 --> 00:18:55.485
<00:18:51.905>So <00:18:52.021>I <00:18:52.138>dropped <00:18:52.254>the <00:18:52.371>first <00:18:52.488>30 <00:18:52.605>and <00:18:52.721>only <00:18:52.838>show <00:18:52.955>you <00:18:53.071>the <00:18:53.188>last <00:18:53.305>70.

431
00:18:55.585 --> 00:19:00.125
<00:18:55.585>You <00:18:55.725>see <00:18:55.865>this <00:18:56.005>yellow <00:18:56.145>one <00:18:56.285>with <00:18:56.425>this <00:18:56.565>priming, <00:18:56.705>then <00:18:56.845>the <00:18:56.985>kind

432
00:19:00.125 --> 00:19:02.605
<00:19:00.125>of <00:19:00.358>cold <00:19:00.591>start <00:19:00.825>is <00:19:01.058>even <00:19:01.291>700 <00:19:01.525>milliseconds.

433
00:19:02.605 --> 00:19:05.805
<00:19:02.605>So <00:19:02.780>the <00:19:02.955>first <00:19:03.130>20 <00:19:03.305>invocations <00:19:03.480>may <00:19:03.655>have <00:19:03.830>call <00:19:04.005>starts

434
00:19:05.825 --> 00:19:08.005
<00:19:05.825>of <00:19:05.980>one <00:19:06.136>second <00:19:06.291>as <00:19:06.447>long <00:19:06.602>as <00:19:06.758>the <00:19:06.913>cash <00:19:07.069>is <00:19:07.225>cold,

435
00:19:08.265 --> 00:19:09.885
<00:19:08.265>but <00:19:08.615>all <00:19:08.965>others <00:19:09.315>are <00:19:09.665>quicker.

436
00:19:10.355 --> 00:19:13.925
<00:19:10.355>What <00:19:10.510>does <00:19:10.666>it <00:19:10.821>mean <00:19:10.977>sometimes <00:19:11.132>you <00:19:11.288>deploy <00:19:11.443>your <00:19:11.599>lambda <00:19:11.755>function

437
00:19:13.925 --> 00:19:16.685
<00:19:13.925>only <00:19:14.065>one <00:19:14.205>time <00:19:14.345>per <00:19:14.485>week <00:19:14.625>because <00:19:14.764>you <00:19:14.905>don't <00:19:15.044>change <00:19:15.185>your <00:19:15.325>code

438
00:19:17.105 --> 00:19:19.925
<00:19:17.105>and <00:19:17.260>with <00:19:17.416>within <00:19:17.571>one <00:19:17.727>week <00:19:17.882>you'll <00:19:18.038>probably <00:19:18.193>have <00:19:18.349>10 <00:19:18.505>tens

439
00:19:19.925 --> 00:19:21.165
<00:19:19.925>of <00:19:20.297>thousands <00:19:20.668>call <00:19:21.041>starts.

440
00:19:21.305 --> 00:19:24.845
<00:19:21.305>So <00:19:21.460>the <00:19:21.616>first <00:19:21.771>2030 <00:19:21.927>are <00:19:22.082>not <00:19:22.238>relevant <00:19:22.393>for <00:19:22.549>the <00:19:22.705>statistics.

441
00:19:24.845 --> 00:19:26.285
<00:19:24.845>They <00:19:25.277>they're <00:19:25.709>slower. <00:19:26.141>Yeah,

442
00:19:26.305 --> 00:19:29.845
<00:19:26.305>but <00:19:26.480>the <00:19:26.655>then <00:19:26.830>the <00:19:27.005>performance <00:19:27.180>becomes <00:19:27.355>better <00:19:27.530>and <00:19:27.705>constant.

443
00:19:31.055 --> 00:19:33.635
<00:19:31.055>So <00:19:31.288>what's <00:19:31.521>also <00:19:31.755>interesting, <00:19:31.988>I <00:19:32.221>am <00:19:32.455>experimenting

444
00:19:33.635 --> 00:19:36.035
<00:19:33.635>with <00:19:33.868>the <00:19:34.101>priming <00:19:34.335>then <00:19:34.568>AWS <00:19:34.801>released <00:19:35.035>AWS

445
00:19:36.035 --> 00:19:37.395
<00:19:36.035>Lambda <00:19:36.647>profile <00:19:37.259>extension.

446
00:19:39.335 --> 00:19:41.555
<00:19:39.335>And <00:19:39.615>um, <00:19:39.895>for <00:19:40.175>me <00:19:40.455>it <00:19:40.735>was,

447
00:19:41.975 --> 00:19:45.195
<00:19:41.975>it <00:19:42.175>it <00:19:42.375>it <00:19:42.574>generates <00:19:42.774>heat <00:19:42.975>map <00:19:43.175>of <00:19:43.375>invocation.

448
00:19:45.295 --> 00:19:47.275
<00:19:45.295>You <00:19:45.495>can <00:19:45.695>see <00:19:45.895>what <00:19:46.095>happens <00:19:46.295>during <00:19:46.495>the <00:19:46.695>invocation

449
00:19:47.275 --> 00:19:50.515
<00:19:47.275>because <00:19:47.475>uh, <00:19:47.675>for <00:19:47.875>me <00:19:48.075>what <00:19:48.275>was <00:19:48.475>quite <00:19:48.675>interesting,

450
00:19:50.815 --> 00:19:53.435
<00:19:50.815>my <00:19:51.165>business <00:19:51.515>logic <00:19:51.865>starts <00:19:52.215>basically

451
00:19:53.435 --> 00:19:55.715
<00:19:53.435>by <00:19:53.635>implementing <00:19:53.835>handle <00:19:54.034>requests <00:19:54.235>by <00:19:54.435>my <00:19:54.635>question <00:19:54.835>was

452
00:19:55.745 --> 00:19:58.115
<00:19:55.745>what <00:19:56.024>happens <00:19:56.304>before <00:19:56.584>it <00:19:56.864>in <00:19:57.145>this

453
00:19:58.255 --> 00:20:01.995
<00:19:58.255>how <00:19:58.410>this <00:19:58.566>API <00:19:58.721>gateway <00:19:58.877>proxy <00:19:59.032>request <00:19:59.188>event <00:19:59.343>object <00:19:59.499>becomes <00:19:59.655>kind

454
00:20:01.995 --> 00:20:05.035
<00:20:01.995>of <00:20:02.169>realized <00:20:02.344>because <00:20:02.520>it's <00:20:02.695>the <00:20:02.870>part <00:20:03.044>that <00:20:03.219>AWS <00:20:03.395>does

455
00:20:05.035 --> 00:20:06.355
<00:20:05.035>for <00:20:05.332>me <00:20:05.629>during <00:20:05.926>the <00:20:06.223>invocation.

456
00:20:06.385 --> 00:20:09.115
<00:20:06.385>Yeah, <00:20:06.618>I <00:20:06.851>only <00:20:07.085>received <00:20:07.318>that <00:20:07.551>already <00:20:07.785>kind

457
00:20:09.115 --> 00:20:10.235
<00:20:09.115>of <00:20:09.451>serialized <00:20:09.787>from <00:20:10.122>Jason.

458
00:20:10.655 --> 00:20:12.915
<00:20:10.655>And <00:20:10.830>my <00:20:11.004>question <00:20:11.180>was <00:20:11.355>can <00:20:11.530>I <00:20:11.705>prime <00:20:11.879>something <00:20:12.055>there?

459
00:20:13.735 --> 00:20:15.435
<00:20:13.735>And <00:20:13.935>I <00:20:14.135>just <00:20:14.334>look <00:20:14.534>into <00:20:14.735>this <00:20:14.935>heat <00:20:15.135>map

460
00:20:15.575 --> 00:20:18.515
<00:20:15.575>and <00:20:15.775>based <00:20:15.975>on <00:20:16.175>as <00:20:16.375>open <00:20:16.575>source, <00:20:16.775>assume <00:20:16.975>profiler

461
00:20:18.515 --> 00:20:20.715
<00:20:18.515>by <00:20:18.795>the <00:20:19.075>way, <00:20:19.355>regenerates <00:20:19.635>hit <00:20:19.915>map.

462
00:20:20.775 --> 00:20:25.515
<00:20:20.775>And <00:20:20.891>I <00:20:21.008>found <00:20:21.125>one <00:20:21.241>place <00:20:21.358>where <00:20:21.475>I <00:20:21.591>saw, <00:20:21.708>okay, <00:20:21.825>I <00:20:21.941>can <00:20:22.058>go <00:20:22.175>in

463
00:20:25.515 --> 00:20:28.355
<00:20:25.515>between, <00:20:25.715>I <00:20:25.915>saw <00:20:26.115>this, <00:20:26.315>um, <00:20:26.515>I <00:20:26.715>saw <00:20:26.915>this,

464
00:20:28.455 --> 00:20:29.795
<00:20:28.455>you <00:20:28.656>see <00:20:28.857>here <00:20:29.058>in <00:20:29.259>the <00:20:29.460>red, <00:20:29.661>uh,

465
00:20:29.935 --> 00:20:32.115
<00:20:29.935>red <00:20:30.284>line <00:20:30.635>Lambda <00:20:30.985>event <00:20:31.335>serializer

466
00:20:32.375 --> 00:20:35.235
<00:20:32.375>and <00:20:32.608>it's <00:20:32.841>responsible <00:20:33.075>for <00:20:33.308>serializing <00:20:33.541>my <00:20:33.775>event.

467
00:20:35.255 --> 00:20:37.955
<00:20:35.255>In <00:20:35.455>this <00:20:35.655>case <00:20:35.855>it's <00:20:36.055>API <00:20:36.255>gateway <00:20:36.455>request <00:20:36.655>event,

468
00:20:38.335 --> 00:20:39.555
<00:20:38.335>but <00:20:38.554>it <00:20:38.774>can <00:20:38.993>be <00:20:39.213>everything <00:20:39.433>else.

469
00:20:39.895 --> 00:20:43.355
<00:20:39.895>And <00:20:40.022>I <00:20:40.149>saw <00:20:40.276>that <00:20:40.404>they <00:20:40.531>load <00:20:40.658>a <00:20:40.785>lot <00:20:40.913>of <00:20:41.040>things <00:20:41.167>with <00:20:41.295>Jason

470
00:20:43.615 --> 00:20:47.075
<00:20:43.615>and <00:20:43.815>they <00:20:44.015>even <00:20:44.215>load, <00:20:44.415>um, <00:20:44.615>serializer <00:20:44.815>for <00:20:45.015>date

471
00:20:47.125 --> 00:20:48.885
<00:20:47.125>and <00:20:47.358>time <00:20:47.591>objects, <00:20:47.825>which <00:20:48.058>I <00:20:48.291>don't <00:20:48.525>use,

472
00:20:48.905 --> 00:20:51.205
<00:20:48.905>but <00:20:49.045>they <00:20:49.185>don't <00:20:49.325>know <00:20:49.465>what <00:20:49.605>event <00:20:49.745>type <00:20:49.885>I <00:20:50.024>will <00:20:50.165>be <00:20:50.305>using.

473
00:20:51.265 --> 00:20:53.005
<00:20:51.265>So <00:20:51.498>there <00:20:51.731>are <00:20:51.965>lots <00:20:52.198>of <00:20:52.431>magic <00:20:52.665>happening

474
00:20:53.225 --> 00:20:57.605
<00:20:53.225>and <00:20:53.399>I <00:20:53.574>thought, <00:20:53.750>can <00:20:53.925>I <00:20:54.100>do <00:20:54.274>something <00:20:54.449>here <00:20:54.625>additionally?

475
00:20:57.785 --> 00:21:01.885
<00:20:57.785>And <00:20:57.925>I <00:20:58.065>found <00:20:58.205>out <00:20:58.345>I <00:20:58.485>can <00:20:58.625>pre <00:20:58.765>initialize <00:20:58.905>this <00:20:59.045>whole <00:20:59.185>stuff

476
00:21:02.105 --> 00:21:05.085
<00:21:02.105>so <00:21:02.280>I <00:21:02.455>can <00:21:02.630>do <00:21:02.805>additional <00:21:02.980>invocation <00:21:03.155>lambda <00:21:03.330>event <00:21:03.505>serializer

477
00:21:05.105 --> 00:21:09.085
<00:21:05.105>and <00:21:05.305>do <00:21:05.505>the <00:21:05.705>serialization <00:21:05.905>for <00:21:06.105>API <00:21:06.305>gateway <00:21:06.505>request.

478
00:21:09.345 --> 00:21:10.565
<00:21:09.345>Um, <00:21:10.443>so,

479
00:21:10.745 --> 00:21:14.645
<00:21:10.745>and <00:21:10.885>perform <00:21:11.024>that <00:21:11.165>stuff <00:21:11.304>so <00:21:11.445>that <00:21:11.584>this, <00:21:11.725>this <00:21:11.864>kind <00:21:12.004>of <00:21:12.145>serializer

480
00:21:14.825 --> 00:21:18.645
<00:21:14.825>and <00:21:14.980>all <00:21:15.136>the <00:21:15.291>stuff <00:21:15.447>that <00:21:15.602>is <00:21:15.758>loading <00:21:15.913>included <00:21:16.069>the <00:21:16.225>serializer

481
00:21:18.745 --> 00:21:20.125
<00:21:18.745>for <00:21:18.952>date <00:21:19.158>and <00:21:19.366>time <00:21:19.572>and <00:21:19.780>so <00:21:19.987>on

482
00:21:20.125 --> 00:21:22.085
<00:21:20.125>that <00:21:20.325>I <00:21:20.525>don't <00:21:20.725>use <00:21:20.925>an <00:21:21.125>application <00:21:21.325>become <00:21:21.525>part

483
00:21:22.145 --> 00:21:23.565
<00:21:22.145>of, <00:21:22.571>of <00:21:22.997>the <00:21:23.423>snapshot.

484
00:21:24.145 --> 00:21:27.525
<00:21:24.145>And <00:21:24.285>I <00:21:24.425>just <00:21:24.565>by <00:21:24.705>aging <00:21:24.845>this, <00:21:24.985>this <00:21:25.125>several <00:21:25.264>lines <00:21:25.405>of <00:21:25.545>code,

485
00:21:28.885 --> 00:21:31.645
<00:21:28.885>I <00:21:29.118>achieved <00:21:29.351>a <00:21:29.585>kind <00:21:29.818>of <00:21:30.051>even <00:21:30.285>reduction

486
00:21:31.645 --> 00:21:33.525
<00:21:31.645>of <00:21:31.878>25% <00:21:32.111>of <00:21:32.345>what <00:21:32.578>I <00:21:32.811>showed <00:21:33.045>you.

487
00:21:33.525 --> 00:21:37.765
<00:21:33.525>So <00:21:33.680>from <00:21:33.836>700 <00:21:33.991>milliseconds, <00:21:34.147>it <00:21:34.302>goes <00:21:34.458>down <00:21:34.613>to <00:21:34.769>below <00:21:34.925>600

488
00:21:37.945 --> 00:21:39.605
<00:21:37.945>by <00:21:38.294>additional <00:21:38.645>writing <00:21:38.995>of <00:21:39.345>code.

489
00:21:39.665 --> 00:21:41.965
<00:21:39.665>You <00:21:39.820>can <00:21:39.976>say <00:21:40.131>it's <00:21:40.287>a <00:21:40.442>bit <00:21:40.598>business <00:21:40.753>logic, <00:21:40.909>you <00:21:41.065>can,

490
00:21:42.105 --> 00:21:43.645
<00:21:42.105>you <00:21:42.336>need <00:21:42.567>to <00:21:42.798>take <00:21:43.029>care <00:21:43.260>of <00:21:43.491>it.

491
00:21:43.985 --> 00:21:48.005
<00:21:43.985>Yes, <00:21:44.101>it's <00:21:44.218>true, <00:21:44.334>but <00:21:44.451>for <00:21:44.568>in <00:21:44.685>Java <00:21:44.801>you <00:21:44.918>don't <00:21:45.034>take <00:21:45.151>it <00:21:45.268>for <00:21:45.385>free.

492
00:21:49.225 --> 00:21:51.565
<00:21:49.225>So <00:21:49.458>once <00:21:49.691>again <00:21:49.925>about <00:21:50.158>snap <00:21:50.391>start, <00:21:50.625>um,

493
00:21:52.665 --> 00:21:55.405
<00:21:52.665>and <00:21:52.898>pricing, <00:21:53.131>currently <00:21:53.365>it's <00:21:53.598>free <00:21:53.831>for <00:21:54.065>Java,

494
00:21:56.825 --> 00:22:01.245
<00:21:56.825>but <00:21:56.965>as <00:21:57.105>they <00:21:57.245>um, <00:21:57.385>enabled <00:21:57.525>AWS <00:21:57.665>enabled <00:21:57.805>it <00:21:57.945>for <00:21:58.085>Python <00:21:58.225>and.net,

495
00:22:01.355 --> 00:22:04.885
<00:22:01.355>they <00:22:01.555>in <00:22:01.755>edit <00:22:01.955>the <00:22:02.155>pricing <00:22:02.355>for <00:22:02.555>those <00:22:02.755>runtime.

496
00:22:05.305 --> 00:22:07.885
<00:22:05.305>You <00:22:05.460>see <00:22:05.616>here, <00:22:05.771>the <00:22:05.927>cash <00:22:06.082>and <00:22:06.238>restore <00:22:06.393>phase <00:22:06.549>are <00:22:06.705>priced.

497
00:22:08.075 --> 00:22:10.365
<00:22:08.075>It's <00:22:08.230>not <00:22:08.386>too <00:22:08.541>much. <00:22:08.697>I <00:22:08.852>ask <00:22:09.008>people <00:22:09.163>who <00:22:09.319>are <00:22:09.475>using

498
00:22:10.395 --> 00:22:11.805
<00:22:10.395>that <00:22:11.664>personally.

499
00:22:11.805 --> 00:22:13.285
<00:22:11.805>Once <00:22:12.071>again, <00:22:12.337>it's <00:22:12.604>free <00:22:12.870>for <00:22:13.137>Java,

500
00:22:13.285 --> 00:22:15.645
<00:22:13.285>but <00:22:13.440>I <00:22:13.596>expect <00:22:13.751>that <00:22:13.907>someday <00:22:14.062>later <00:22:14.218>they <00:22:14.373>will <00:22:14.529>change <00:22:14.685>it

501
00:22:15.645 --> 00:22:16.685
<00:22:15.645>to <00:22:15.879>that <00:22:16.113>pricing <00:22:16.347>as <00:22:16.581>well.

502
00:22:16.785 --> 00:22:20.205
<00:22:16.785>The <00:22:16.940>reason <00:22:17.096>for <00:22:17.251>that <00:22:17.407>is <00:22:17.562>that <00:22:17.718>the <00:22:17.873>people <00:22:18.029>misuse, <00:22:18.185>uh,

503
00:22:20.915 --> 00:22:22.125
<00:22:20.915>snap <00:22:21.278>start <00:22:21.641>for <00:22:22.004>everything.

504
00:22:22.225 --> 00:22:25.885
<00:22:22.225>For <00:22:22.380>each <00:22:22.536>lambda <00:22:22.691>function <00:22:22.847>on <00:22:23.002>all <00:22:23.158>staging, <00:22:23.313>they <00:22:23.469>check <00:22:23.625>it

505
00:22:25.905 --> 00:22:28.765
<00:22:25.905>and <00:22:26.080>AWS <00:22:26.254>pay <00:22:26.430>for <00:22:26.605>the <00:22:26.780>storage <00:22:26.955>for <00:22:27.129>their <00:22:27.305>snapshot.

506
00:22:29.265 --> 00:22:31.485
<00:22:29.265>And <00:22:29.440>that's <00:22:29.615>why <00:22:29.790>they <00:22:29.965>say, <00:22:30.140>okay, <00:22:30.315>you're <00:22:30.490>misusing <00:22:30.665>it.

507
00:22:32.765 --> 00:22:36.805
<00:22:32.765>Probably <00:22:32.965>add <00:22:33.165>pricing. <00:22:33.365>Okay? <00:22:33.565>So <00:22:33.765>it <00:22:33.965>has <00:22:34.165>limitations.

508
00:22:36.805 --> 00:22:39.485
<00:22:36.805>You <00:22:36.921>need <00:22:37.038>to <00:22:37.155>look. <00:22:37.271>For <00:22:37.388>example, <00:22:37.505>if <00:22:37.621>you <00:22:37.738>use <00:22:37.855>a <00:22:37.971>FS <00:22:38.088>based <00:22:38.205>system,

509
00:22:39.555 --> 00:22:41.565
<00:22:39.555>it's <00:22:40.021>not <00:22:40.488>possible <00:22:40.955>unfortunately.

510
00:22:41.705 --> 00:22:43.245
<00:22:41.705>Now <00:22:41.936>yeah, <00:22:42.167>you <00:22:42.398>need <00:22:42.629>to <00:22:42.860>use <00:22:43.091>S3.

511
00:22:43.425 --> 00:22:45.045
<00:22:43.425>So <00:22:43.705>there <00:22:43.985>are <00:22:44.264>certain <00:22:44.544>limitations <00:22:44.825>where,

512
00:22:45.045 --> 00:22:46.045
<00:22:45.045>where <00:22:45.345>it <00:22:45.645>doesn't <00:22:45.945>work.

513
00:22:46.585 --> 00:22:49.245
<00:22:46.585>So <00:22:46.818>let's <00:22:47.051>briefly <00:22:47.285>look <00:22:47.518>in <00:22:47.751>GR <00:22:47.985>vm,

514
00:22:49.685 --> 00:22:51.205
<00:22:49.685>probably <00:22:49.958>everybody <00:22:50.232>knows <00:22:50.505>what <00:22:50.779>is <00:22:51.053>dead.

515
00:22:52.545 --> 00:22:55.085
<00:22:52.545>For <00:22:52.700>us <00:22:52.856>it's <00:22:53.011>just <00:22:53.167>gr <00:22:53.322>vm <00:22:53.478>combiner, <00:22:53.633>which <00:22:53.789>is <00:22:53.945>interesting

516
00:22:55.085 --> 00:22:58.205
<00:22:55.085>because <00:22:55.260>it <00:22:55.435>allows <00:22:55.610>us <00:22:55.785>to <00:22:55.960>build <00:22:56.135>a <00:22:56.310>native <00:22:56.485>image.

517
00:22:58.965 --> 00:23:01.925
<00:22:58.965>A <00:22:59.105>native <00:22:59.245>image <00:22:59.385>has <00:22:59.524>the, <00:22:59.665>the, <00:22:59.804>the <00:22:59.945>property <00:23:00.084>of <00:23:00.225>being <00:23:00.365>small

518
00:23:01.925 --> 00:23:03.925
<00:23:01.925>because <00:23:02.125>it <00:23:02.325>only <00:23:02.524>contains <00:23:02.725>what <00:23:02.925>will <00:23:03.125>be <00:23:03.325>used.

519
00:23:04.195 --> 00:23:06.165
<00:23:04.195>Yeah. <00:23:04.395>So <00:23:04.595>everything <00:23:04.794>else <00:23:04.995>is <00:23:05.195>not <00:23:05.395>a <00:23:05.595>part

520
00:23:06.165 --> 00:23:07.925
<00:23:06.165>of <00:23:06.398>the <00:23:06.631>native <00:23:06.865>image <00:23:07.098>and <00:23:07.331>so <00:23:07.565>on.

521
00:23:07.925 --> 00:23:10.205
<00:23:07.925>There <00:23:08.065>are <00:23:08.205>ways <00:23:08.345>you <00:23:08.485>can <00:23:08.625>look <00:23:08.764>into <00:23:08.905>this, <00:23:09.044>how <00:23:09.185>to <00:23:09.325>deploy

522
00:23:10.205 --> 00:23:14.685
<00:23:10.205>that <00:23:10.405>on <00:23:10.605>AWS <00:23:10.804>basically <00:23:11.004>it's <00:23:11.205>um, <00:23:11.405>custom <00:23:11.605>runtime.

523
00:23:14.785 --> 00:23:17.325
<00:23:14.785>You <00:23:14.960>build <00:23:15.135>this <00:23:15.310>native <00:23:15.485>image <00:23:15.660>packages <00:23:15.835>as <00:23:16.010>a <00:23:16.185>zip

524
00:23:17.545 --> 00:23:18.885
<00:23:17.545>and <00:23:17.846>deploy <00:23:18.148>and <00:23:18.449>just <00:23:18.751>works.

525
00:23:19.865 --> 00:23:21.525
<00:23:19.865>Um, <00:23:20.145>so <00:23:20.425>this <00:23:20.705>is <00:23:20.985>the <00:23:21.265>measurement

526
00:23:21.525 --> 00:23:23.285
<00:23:21.525>for <00:23:21.875>Java <00:23:22.225>without <00:23:22.575>any <00:23:22.925>frameworks.

527
00:23:23.305 --> 00:23:25.925
<00:23:23.305>And <00:23:23.460>you <00:23:23.616>see <00:23:23.771>on <00:23:23.927>the <00:23:24.082>right <00:23:24.238>side <00:23:24.393>GRM <00:23:24.549>native <00:23:24.705>image.

528
00:23:26.185 --> 00:23:29.325
<00:23:26.185>So <00:23:26.340>you <00:23:26.496>see <00:23:26.651>it <00:23:26.807>produces <00:23:26.962>even <00:23:27.118>lower <00:23:27.273>called <00:23:27.429>start <00:23:27.585>times

529
00:23:29.395 --> 00:23:32.965
<00:23:29.395>5, <00:23:29.595>6, <00:23:29.795>600 <00:23:29.995>milliseconds <00:23:30.195>for <00:23:30.395>GRM <00:23:30.595>native <00:23:30.795>image.

530
00:23:33.905 --> 00:23:37.245
<00:23:33.905>Um, <00:23:34.080>and <00:23:34.254>it <00:23:34.430>produces <00:23:34.605>even <00:23:34.780>better <00:23:34.955>warm <00:23:35.129>start <00:23:35.305>times

531
00:23:37.245 --> 00:23:40.405
<00:23:37.245>because <00:23:37.445>yeah, <00:23:37.645>it's <00:23:37.844>just <00:23:38.044>already <00:23:38.245>pre-compiled <00:23:38.445>into <00:23:38.645>native.

532
00:23:40.505 --> 00:23:44.085
<00:23:40.505>So <00:23:40.621>G <00:23:40.738>VM <00:23:40.855>is <00:23:40.971>really <00:23:41.088>cool <00:23:41.205>stuff, <00:23:41.321>but <00:23:41.438>you <00:23:41.555>need <00:23:41.671>to <00:23:41.788>pay <00:23:41.905>attention.

533
00:23:44.155 --> 00:23:45.965
<00:23:44.155>Easy <00:23:44.621>application, <00:23:45.088>VM <00:23:45.555>radio.

534
00:23:46.145 --> 00:23:48.045
<00:23:46.145>Are <00:23:46.495>there <00:23:46.845>any <00:23:47.195>dynamic <00:23:47.545>invocations

535
00:23:48.045 --> 00:23:50.445
<00:23:48.045>because, <00:23:48.278>um, <00:23:48.511>native <00:23:48.745>image <00:23:48.978>don't <00:23:49.211>like <00:23:49.445>it.

536
00:23:51.185 --> 00:23:52.845
<00:23:51.185>Uh, <00:23:51.465>it's <00:23:51.745>just <00:23:52.024>don't <00:23:52.304>like <00:23:52.585>it

537
00:23:53.145 --> 00:23:57.005
<00:23:53.145>and <00:23:53.300>you <00:23:53.456>end <00:23:53.611>up <00:23:53.767>writing <00:23:53.922>JSON <00:23:54.078>files <00:23:54.233>with <00:23:54.389>the <00:23:54.545>exception.

538
00:23:57.025 --> 00:24:00.525
<00:23:57.025>So <00:23:57.200>what <00:23:57.375>classes <00:23:57.550>will <00:23:57.725>be <00:23:57.900>loaded <00:23:58.075>dynamically, <00:23:58.250>you <00:23:58.425>need

539
00:24:00.525 --> 00:24:02.565
<00:24:00.525>to <00:24:00.758>put <00:24:00.991>them <00:24:01.225>otherwise <00:24:01.458>they <00:24:01.691>are <00:24:01.925>missing.

540
00:24:02.625 --> 00:24:05.405
<00:24:02.625>You <00:24:02.765>will <00:24:02.905>get <00:24:03.045>class <00:24:03.185>not <00:24:03.325>found <00:24:03.465>exception <00:24:03.605>if <00:24:03.745>you <00:24:03.885>don't <00:24:04.025>put

541
00:24:05.405 --> 00:24:07.285
<00:24:05.405>everything <00:24:05.685>in <00:24:05.965>the <00:24:06.245>right <00:24:06.524>dynamic <00:24:06.805>stuff.

542
00:24:07.385 --> 00:24:09.725
<00:24:07.385>Lambda <00:24:07.735>function <00:24:08.085>sensation <00:24:08.435>is <00:24:08.785>dynamic.

543
00:24:10.155 --> 00:24:12.485
<00:24:10.155>Your <00:24:10.330>entities <00:24:10.504>will <00:24:10.680>be <00:24:10.855>dynamic <00:24:11.030>so <00:24:11.205>it <00:24:11.379>takes <00:24:11.555>time.

544
00:24:13.025 --> 00:24:15.205
<00:24:13.025>But <00:24:13.200>of <00:24:13.375>course <00:24:13.550>you <00:24:13.725>can <00:24:13.900>use <00:24:14.075>this <00:24:14.250>tracing <00:24:14.425>agent

545
00:24:15.385 --> 00:24:18.925
<00:24:15.385>and <00:24:15.540>incorporate <00:24:15.696>it <00:24:15.851>into <00:24:16.007>the <00:24:16.162>test, <00:24:16.318>uh, <00:24:16.473>phase <00:24:16.629>running <00:24:16.785>test

546
00:24:18.945 --> 00:24:21.805
<00:24:18.945>and <00:24:19.085>it'll <00:24:19.225>look <00:24:19.365>into <00:24:19.504>your <00:24:19.645>court <00:24:19.784>and <00:24:19.925>generate <00:24:20.064>all <00:24:20.205>that <00:24:20.345>stuff.

547
00:24:21.865 --> 00:24:24.005
<00:24:21.865>But <00:24:22.145>sometimes <00:24:22.425>stuff, <00:24:22.705>stuff <00:24:22.985>is <00:24:23.265>missing.

548
00:24:24.545 --> 00:24:27.205
<00:24:24.545>So <00:24:24.661>you <00:24:24.778>see <00:24:24.895>with <00:24:25.011>m <00:24:25.128>you <00:24:25.245>can <00:24:25.361>do <00:24:25.478>it <00:24:25.595>out <00:24:25.711>of <00:24:25.828>the <00:24:25.945>box,

549
00:24:27.265 --> 00:24:29.925
<00:24:27.265>but <00:24:27.545>it <00:24:27.825>adds, <00:24:28.105>um, <00:24:28.385>other <00:24:28.665>challenges.

550
00:24:30.545 --> 00:24:35.005
<00:24:30.545>The <00:24:30.685>basic <00:24:30.825>one <00:24:30.965>is <00:24:31.105>that <00:24:31.245>it's <00:24:31.385>on <00:24:31.525>you <00:24:31.665>to <00:24:31.805>scale <00:24:31.945>CICD.

551
00:24:35.225 --> 00:24:38.485
<00:24:35.225>So <00:24:35.365>building <00:24:35.504>native <00:24:35.645>images <00:24:35.784>your <00:24:35.925>task, <00:24:36.064>yeah, <00:24:36.205>so <00:24:36.344>you <00:24:36.485>can <00:24:36.625>use

552
00:24:38.505 --> 00:24:40.925
<00:24:38.505>of <00:24:38.660>course <00:24:38.816>manage <00:24:38.971>CICD, <00:24:39.127>but <00:24:39.282>you <00:24:39.438>will <00:24:39.593>pay <00:24:39.749>for <00:24:39.905>that

553
00:24:41.465 --> 00:24:45.085
<00:24:41.465>and <00:24:41.639>it <00:24:41.814>takes <00:24:41.990>also <00:24:42.165>three <00:24:42.340>minutes, <00:24:42.514>something <00:24:42.689>like <00:24:42.865>just

554
00:24:45.085 --> 00:24:47.285
<00:24:45.085>to <00:24:45.318>generate <00:24:45.551>native <00:24:45.785>image <00:24:46.018>for, <00:24:46.251>for <00:24:46.485>Lambda.

555
00:24:47.665 --> 00:24:50.525
<00:24:47.665>But <00:24:47.945>uh, <00:24:48.225>snapshotting <00:24:48.504>also <00:24:48.784>takes <00:24:49.065>two

556
00:24:50.525 --> 00:24:51.845
<00:24:50.525>and <00:24:50.723>a <00:24:50.921>half <00:24:51.119>minutes <00:24:51.317>for <00:24:51.515>Snap <00:24:51.713>start.

557
00:24:51.865 --> 00:24:55.965
<00:24:51.865>So <00:24:52.020>they <00:24:52.176>are <00:24:52.331>both <00:24:52.487>disturbing <00:24:52.642>a <00:24:52.798>bit, <00:24:52.953>uh, <00:24:53.109>the <00:24:53.265>stuff.

558
00:24:56.505 --> 00:24:58.245
<00:24:56.505>So <00:24:56.971>yeah, <00:24:57.438>that's <00:24:57.905>it.

559
00:24:58.345 --> 00:25:00.685
<00:24:58.345>So <00:24:58.578>basically <00:24:58.811>you <00:24:59.045>have <00:24:59.278>two <00:24:59.511>technologies <00:24:59.745>just

560
00:25:00.685 --> 00:25:03.965
<00:25:00.685>to <00:25:00.825>put <00:25:00.965>the <00:25:01.105>call <00:25:01.245>starts <00:25:01.385>down <00:25:01.524>to <00:25:01.665>five <00:25:01.804>to <00:25:01.945>600 <00:25:02.085>milliseconds.

561
00:25:04.525 --> 00:25:06.885
<00:25:04.525>I <00:25:04.665>also <00:25:04.805>wrote <00:25:04.945>a <00:25:05.085>blog <00:25:05.225>post <00:25:05.365>about <00:25:05.505>if <00:25:05.645>you <00:25:05.785>would <00:25:05.925>like

562
00:25:06.885 --> 00:25:08.725
<00:25:06.885>to <00:25:07.165>use <00:25:07.445>spring <00:25:07.725>boot <00:25:08.004>on <00:25:08.285>top.

563
00:25:09.065 --> 00:25:10.765
<00:25:09.065>It <00:25:09.415>just <00:25:09.765>improves <00:25:10.115>developer <00:25:10.465>productivity.

564
00:25:10.925 --> 00:25:13.205
<00:25:10.925>I <00:25:11.100>also <00:25:11.274>wrote <00:25:11.450>the <00:25:11.625>blog <00:25:11.800>post <00:25:11.975>about <00:25:12.149>Corcus <00:25:12.325>three

565
00:25:13.345 --> 00:25:15.525
<00:25:13.345>and <00:25:13.545>I <00:25:13.745>will <00:25:13.945>start <00:25:14.145>writing <00:25:14.345>about <00:25:14.545>micro <00:25:14.745>node

566
00:25:15.525 --> 00:25:18.205
<00:25:15.525>because <00:25:15.680>they're <00:25:15.836>quite <00:25:15.991>popular <00:25:16.147>and <00:25:16.302>they <00:25:16.458>also <00:25:16.613>just <00:25:16.769>doing <00:25:16.925>this

567
00:25:18.205 --> 00:25:20.525
<00:25:18.205>stuff, <00:25:18.438>you <00:25:18.671>can <00:25:18.905>experiment <00:25:19.138>with <00:25:19.371>other <00:25:19.605>things.

568
00:25:20.965 --> 00:25:23.245
<00:25:20.965>I <00:25:21.120>I, <00:25:21.276>for <00:25:21.431>the <00:25:21.587>sake <00:25:21.742>of <00:25:21.898>time <00:25:22.053>I <00:25:22.209>couldn't <00:25:22.365>mention,

569
00:25:23.345 --> 00:25:26.605
<00:25:23.345>you <00:25:23.500>can <00:25:23.656>just <00:25:23.811>try <00:25:23.967>to <00:25:24.122>adjust <00:25:24.278>lambda <00:25:24.433>memory, <00:25:24.589>giving <00:25:24.745>more,

570
00:25:26.605 --> 00:25:28.085
<00:25:26.605>less <00:25:26.871>memory, <00:25:27.137>you <00:25:27.404>will <00:25:27.670>get <00:25:27.937>more

571
00:25:28.085 --> 00:25:29.965
<00:25:28.085>performance <00:25:28.551>or <00:25:29.018>less <00:25:29.485>performance.

572
00:25:30.385 --> 00:25:32.605
<00:25:30.385>You <00:25:30.585>can <00:25:30.785>play <00:25:30.985>around <00:25:31.185>with <00:25:31.385>Java <00:25:31.585>compilation <00:25:31.785>options,

573
00:25:32.605 --> 00:25:33.845
<00:25:32.605>different <00:25:33.163>HGP <00:25:33.721>clients.

574
00:25:33.975 --> 00:25:36.725
<00:25:33.975>There <00:25:34.149>are <00:25:34.324>two <00:25:34.500>other <00:25:34.675>support <00:25:34.850>and <00:25:35.024>not <00:25:35.199>only <00:25:35.375>Apache

575
00:25:37.025 --> 00:25:40.485
<00:25:37.025>and <00:25:37.180>you <00:25:37.336>can <00:25:37.491>just, <00:25:37.647>uh, <00:25:37.802>think <00:25:37.958>maybe <00:25:38.113>to <00:25:38.269>prime <00:25:38.425>more

576
00:25:40.485 --> 00:25:42.045
<00:25:40.485>or <00:25:40.718>less <00:25:40.951>depending <00:25:41.185>on <00:25:41.418>your <00:25:41.651>use <00:25:41.885>case.

577
00:25:42.465 --> 00:25:45.005
<00:25:42.465>So <00:25:42.665>wrap <00:25:42.865>up. <00:25:43.064>Both <00:25:43.264>technologies <00:25:43.465>are <00:25:43.665>completely <00:25:43.865>valid.

578
00:25:45.165 --> 00:25:47.685
<00:25:45.165>I <00:25:45.340>personally <00:25:45.514>always <00:25:45.690>start <00:25:45.865>with <00:25:46.040>the <00:25:46.215>Snap <00:25:46.389>start <00:25:46.565>even

579
00:25:47.985 --> 00:25:50.005
<00:25:47.985>by <00:25:48.218>having <00:25:48.451>a <00:25:48.685>bit <00:25:48.918>more <00:25:49.151>cold <00:25:49.385>start,

580
00:25:50.005 --> 00:25:51.045
<00:25:50.005>but <00:25:50.317>it's <00:25:50.629>completely <00:25:50.941>managed.

581
00:25:51.165 --> 00:25:54.165
<00:25:51.165>I <00:25:51.292>don't <00:25:51.419>need <00:25:51.546>to <00:25:51.674>mess <00:25:51.801>around <00:25:51.928>with <00:25:52.055>CICD <00:25:52.183>and <00:25:52.310>all <00:25:52.437>the <00:25:52.565>stuff.

582
00:25:54.305 --> 00:25:56.005
<00:25:54.305>If <00:25:54.585>you <00:25:54.865>need <00:25:55.145>the <00:25:55.425>last <00:25:55.705>millisecond

583
00:25:56.005 --> 00:25:58.765
<00:25:56.005>because <00:25:56.205>your <00:25:56.405>application <00:25:56.605>is <00:25:56.805>so <00:25:57.005>business <00:25:57.205>sensitive, <00:25:57.405>go

584
00:25:58.765 --> 00:26:00.605
<00:25:58.765>for <00:25:58.940>Grow <00:25:59.115>VM <00:25:59.290>if <00:25:59.465>it's <00:25:59.640>a <00:25:59.815>use <00:25:59.990>case, <00:26:00.165>yeah,

585
00:26:00.605 --> 00:26:03.005
<00:26:00.605>sometimes <00:26:00.805>it <00:26:01.005>doesn't <00:26:01.205>work, <00:26:01.405>sometimes <00:26:01.605>it <00:26:01.805>doesn't <00:26:02.005>work

586
00:26:03.005 --> 00:26:04.805
<00:26:03.005>with <00:26:03.238>Snap <00:26:03.471>Start, <00:26:03.705>but <00:26:03.938>generally <00:26:04.171>it's <00:26:04.405>okay.

587
00:26:05.065 --> 00:26:07.965
<00:26:05.065>So <00:26:05.205>the <00:26:05.345>last <00:26:05.485>thing <00:26:05.625>is <00:26:05.765>Project <00:26:05.905>Laden <00:26:06.045>will <00:26:06.185>be <00:26:06.325>coming <00:26:06.465>out

588
00:26:07.965 --> 00:26:10.285
<00:26:07.965>where <00:26:08.139>Oracle <00:26:08.314>natively <00:26:08.490>will <00:26:08.665>try <00:26:08.840>to <00:26:09.014>support <00:26:09.189>that <00:26:09.365>stuff.

589
00:26:10.465 --> 00:26:13.165
<00:26:10.465>We <00:26:10.605>need <00:26:10.745>to <00:26:10.885>see <00:26:11.024>what <00:26:11.165>does <00:26:11.304>it <00:26:11.445>mean <00:26:11.584>for <00:26:11.725>AWS <00:26:11.865>Lambda

590
00:26:13.165 --> 00:26:14.285
<00:26:13.165>because <00:26:13.669>they're <00:26:14.173>all,

591
00:26:14.585 --> 00:26:16.925
<00:26:14.585>all <00:26:14.760>this <00:26:14.935>laden <00:26:15.110>is <00:26:15.285>based <00:26:15.460>on <00:26:15.635>class <00:26:15.810>data <00:26:15.985>sharing

592
00:26:17.145 --> 00:26:18.725
<00:26:17.145>and <00:26:17.495>this <00:26:17.845>is <00:26:18.195>also <00:26:18.545>snapshotting.

593
00:26:18.725 --> 00:26:20.405
<00:26:18.725>So <00:26:19.004>who <00:26:19.284>is <00:26:19.564>managing <00:26:19.844>this <00:26:20.125>snapshotting?

594
00:26:20.405 --> 00:26:22.165
<00:26:20.405>How <00:26:20.638>I <00:26:20.871>can <00:26:21.105>snapshot <00:26:21.338>upon <00:26:21.571>the <00:26:21.805>first

595
00:26:22.185 --> 00:26:24.645
<00:26:22.185>and <00:26:22.418>vacation <00:26:22.651>this, <00:26:22.885>all <00:26:23.118>the <00:26:23.351>questions, <00:26:23.585>uh,

596
00:26:24.915 --> 00:26:27.845
<00:26:24.915>that <00:26:25.055>Snap <00:26:25.195>start <00:26:25.335>is <00:26:25.475>doing <00:26:25.615>for <00:26:25.754>you, <00:26:25.895>how <00:26:26.034>that <00:26:26.175>will <00:26:26.315>work.

597
00:26:28.505 --> 00:26:30.205
<00:26:28.505>And <00:26:28.855>one <00:26:29.205>caution <00:26:29.555>remeasure <00:26:29.905>it

598
00:26:30.315 --> 00:26:33.765
<00:26:30.315>because <00:26:30.470>you <00:26:30.626>will <00:26:30.781>see <00:26:30.937>the <00:26:31.092>link <00:26:31.248>to <00:26:31.403>the <00:26:31.559>GitHub <00:26:31.715>repositories.

599
00:26:33.785 --> 00:26:36.605
<00:26:33.785>You <00:26:33.960>can <00:26:34.135>clone <00:26:34.310>them, <00:26:34.485>measure <00:26:34.660>they <00:26:34.835>can <00:26:35.010>be <00:26:35.185>changes.

600
00:26:36.895 --> 00:26:39.565
<00:26:36.895>Minor <00:26:37.070>version <00:26:37.245>of <00:26:37.420>of, <00:26:37.595>of <00:26:37.770>managed <00:26:37.945>Java <00:26:38.120>can, <00:26:38.295>can,

601
00:26:39.625 --> 00:26:41.445
<00:26:39.625>can <00:26:39.975>change <00:26:40.325>improvements <00:26:40.675>in <00:26:41.025>the,

602
00:26:41.445 --> 00:26:45.765
<00:26:41.445>in <00:26:41.645>the <00:26:41.845>firecracker <00:26:42.044>improvements <00:26:42.245>in <00:26:42.445>in, <00:26:42.645>in <00:26:42.845>snapshotting.

603
00:26:45.905 --> 00:26:48.005
<00:26:45.905>So <00:26:46.080>a <00:26:46.254>lots <00:26:46.430>of <00:26:46.605>stuff <00:26:46.780>dynamically <00:26:46.955>that <00:26:47.129>might <00:26:47.305>happen

604
00:26:48.005 --> 00:26:51.365
<00:26:48.005>that <00:26:48.160>you <00:26:48.316>might <00:26:48.471>get <00:26:48.627>even <00:26:48.782>better <00:26:48.938>results <00:26:49.093>by <00:26:49.249>testing <00:26:49.405>that.