FEARLESS AWS LAMBDAS - · PDF fileFEARLESS AWS LAMBDAS ... Benchmark Lambda Java 8 ......
Transcript of FEARLESS AWS LAMBDAS - · PDF fileFEARLESS AWS LAMBDAS ... Benchmark Lambda Java 8 ......
![Page 1: FEARLESS AWS LAMBDAS - · PDF fileFEARLESS AWS LAMBDAS ... Benchmark Lambda Java 8 ... Lambda runtime will deserialize JSON -> POJOs Include event POJOs as source](https://reader030.fdocuments.net/reader030/viewer/2022021510/5ab821ac7f8b9ac10d8c9f7a/html5/thumbnails/1.jpg)
FEARLESS AWS LAMBDAS@johnchapin symphonia.io
![Page 3: FEARLESS AWS LAMBDAS - · PDF fileFEARLESS AWS LAMBDAS ... Benchmark Lambda Java 8 ... Lambda runtime will deserialize JSON -> POJOs Include event POJOs as source](https://reader030.fdocuments.net/reader030/viewer/2022021510/5ab821ac7f8b9ac10d8c9f7a/html5/thumbnails/3.jpg)
WHAT IS LAMBDA? LAMBDA PERFORMANCE LAMBDA + JAVA LAMBDA + THE JVM CHOOSING THE JVM
![Page 4: FEARLESS AWS LAMBDAS - · PDF fileFEARLESS AWS LAMBDAS ... Benchmark Lambda Java 8 ... Lambda runtime will deserialize JSON -> POJOs Include event POJOs as source](https://reader030.fdocuments.net/reader030/viewer/2022021510/5ab821ac7f8b9ac10d8c9f7a/html5/thumbnails/4.jpg)
WHAT IS LAMBDA?
![Page 5: FEARLESS AWS LAMBDAS - · PDF fileFEARLESS AWS LAMBDAS ... Benchmark Lambda Java 8 ... Lambda runtime will deserialize JSON -> POJOs Include event POJOs as source](https://reader030.fdocuments.net/reader030/viewer/2022021510/5ab821ac7f8b9ac10d8c9f7a/html5/thumbnails/5.jpg)
Serverless
![Page 6: FEARLESS AWS LAMBDAS - · PDF fileFEARLESS AWS LAMBDAS ... Benchmark Lambda Java 8 ... Lambda runtime will deserialize JSON -> POJOs Include event POJOs as source](https://reader030.fdocuments.net/reader030/viewer/2022021510/5ab821ac7f8b9ac10d8c9f7a/html5/thumbnails/6.jpg)
![Page 7: FEARLESS AWS LAMBDAS - · PDF fileFEARLESS AWS LAMBDAS ... Benchmark Lambda Java 8 ... Lambda runtime will deserialize JSON -> POJOs Include event POJOs as source](https://reader030.fdocuments.net/reader030/viewer/2022021510/5ab821ac7f8b9ac10d8c9f7a/html5/thumbnails/7.jpg)
Serverless traits1. No management of long-lived host or application instances
2. Self auto-scaling/provisioning, based on load
3. Costs based on precise usage, zero usage = zero cost
4. Performance capability defined in terms other than host size/count
5. Implicit high availability
![Page 8: FEARLESS AWS LAMBDAS - · PDF fileFEARLESS AWS LAMBDAS ... Benchmark Lambda Java 8 ... Lambda runtime will deserialize JSON -> POJOs Include event POJOs as source](https://reader030.fdocuments.net/reader030/viewer/2022021510/5ab821ac7f8b9ac10d8c9f7a/html5/thumbnails/8.jpg)
Backend as a Service(BaaS)
Functions as a Service (FaaS)
![Page 9: FEARLESS AWS LAMBDAS - · PDF fileFEARLESS AWS LAMBDAS ... Benchmark Lambda Java 8 ... Lambda runtime will deserialize JSON -> POJOs Include event POJOs as source](https://reader030.fdocuments.net/reader030/viewer/2022021510/5ab821ac7f8b9ac10d8c9f7a/html5/thumbnails/9.jpg)
FaaS attributesRuns user code
Event driven
Auto scaled/provisioned
Precise costs
![Page 10: FEARLESS AWS LAMBDAS - · PDF fileFEARLESS AWS LAMBDAS ... Benchmark Lambda Java 8 ... Lambda runtime will deserialize JSON -> POJOs Include event POJOs as source](https://reader030.fdocuments.net/reader030/viewer/2022021510/5ab821ac7f8b9ac10d8c9f7a/html5/thumbnails/10.jpg)
Lambda platformJava, Javascript, Python, C#
Integrated with other AWS services
Scales up in milliseconds
$ per GB/sec, 100ms increments
![Page 11: FEARLESS AWS LAMBDAS - · PDF fileFEARLESS AWS LAMBDAS ... Benchmark Lambda Java 8 ... Lambda runtime will deserialize JSON -> POJOs Include event POJOs as source](https://reader030.fdocuments.net/reader030/viewer/2022021510/5ab821ac7f8b9ac10d8c9f7a/html5/thumbnails/11.jpg)
Lambda historyNovember 2014 - Node.js, 1GB, 60s June 2015 - Java, 1.5GB July 2015 - API Gateway October 2015 - Python, 300s November 2016 - C#, Lambda@Edge
![Page 12: FEARLESS AWS LAMBDAS - · PDF fileFEARLESS AWS LAMBDAS ... Benchmark Lambda Java 8 ... Lambda runtime will deserialize JSON -> POJOs Include event POJOs as source](https://reader030.fdocuments.net/reader030/viewer/2022021510/5ab821ac7f8b9ac10d8c9f7a/html5/thumbnails/12.jpg)
API Gateway DynamoDB
S3
Kinesis
Serverless ecosystemSQS SNS
Step Functions
X-Ray
![Page 13: FEARLESS AWS LAMBDAS - · PDF fileFEARLESS AWS LAMBDAS ... Benchmark Lambda Java 8 ... Lambda runtime will deserialize JSON -> POJOs Include event POJOs as source](https://reader030.fdocuments.net/reader030/viewer/2022021510/5ab821ac7f8b9ac10d8c9f7a/html5/thumbnails/13.jpg)
Runtime environment128MB to 1.5GB memory
2 virtual CPUs
500MB /tmp
STDOUT, STDERR to Cloudwatch Logs
![Page 14: FEARLESS AWS LAMBDAS - · PDF fileFEARLESS AWS LAMBDAS ... Benchmark Lambda Java 8 ... Lambda runtime will deserialize JSON -> POJOs Include event POJOs as source](https://reader030.fdocuments.net/reader030/viewer/2022021510/5ab821ac7f8b9ac10d8c9f7a/html5/thumbnails/14.jpg)
Behind the scenes
Containers on EC2
Created on demand
Reaped when idle, old, or obsolete
![Page 15: FEARLESS AWS LAMBDAS - · PDF fileFEARLESS AWS LAMBDAS ... Benchmark Lambda Java 8 ... Lambda runtime will deserialize JSON -> POJOs Include event POJOs as source](https://reader030.fdocuments.net/reader030/viewer/2022021510/5ab821ac7f8b9ac10d8c9f7a/html5/thumbnails/15.jpg)
LAMBDA PERFORMANCE
![Page 16: FEARLESS AWS LAMBDAS - · PDF fileFEARLESS AWS LAMBDAS ... Benchmark Lambda Java 8 ... Lambda runtime will deserialize JSON -> POJOs Include event POJOs as source](https://reader030.fdocuments.net/reader030/viewer/2022021510/5ab821ac7f8b9ac10d8c9f7a/html5/thumbnails/16.jpg)
Performance challengesLayers of abstraction Diverse components Error handling and retries Event batching Scaling
![Page 17: FEARLESS AWS LAMBDAS - · PDF fileFEARLESS AWS LAMBDAS ... Benchmark Lambda Java 8 ... Lambda runtime will deserialize JSON -> POJOs Include event POJOs as source](https://reader030.fdocuments.net/reader030/viewer/2022021510/5ab821ac7f8b9ac10d8c9f7a/html5/thumbnails/17.jpg)
Benchmark LambdaJava 8
Minimal dependencies
2 threads, 500 iterations of fib(30)
Various memory settings
![Page 18: FEARLESS AWS LAMBDAS - · PDF fileFEARLESS AWS LAMBDAS ... Benchmark Lambda Java 8 ... Lambda runtime will deserialize JSON -> POJOs Include event POJOs as source](https://reader030.fdocuments.net/reader030/viewer/2022021510/5ab821ac7f8b9ac10d8c9f7a/html5/thumbnails/18.jpg)
Benchmark goal
Show performance is proportional to memory setting
1.5GB should be 12x faster than 128MB
![Page 19: FEARLESS AWS LAMBDAS - · PDF fileFEARLESS AWS LAMBDAS ... Benchmark Lambda Java 8 ... Lambda runtime will deserialize JSON -> POJOs Include event POJOs as source](https://reader030.fdocuments.net/reader030/viewer/2022021510/5ab821ac7f8b9ac10d8c9f7a/html5/thumbnails/19.jpg)
Expected performance
![Page 20: FEARLESS AWS LAMBDAS - · PDF fileFEARLESS AWS LAMBDAS ... Benchmark Lambda Java 8 ... Lambda runtime will deserialize JSON -> POJOs Include event POJOs as source](https://reader030.fdocuments.net/reader030/viewer/2022021510/5ab821ac7f8b9ac10d8c9f7a/html5/thumbnails/20.jpg)
Measured performance (us-west-2)
![Page 21: FEARLESS AWS LAMBDAS - · PDF fileFEARLESS AWS LAMBDAS ... Benchmark Lambda Java 8 ... Lambda runtime will deserialize JSON -> POJOs Include event POJOs as source](https://reader030.fdocuments.net/reader030/viewer/2022021510/5ab821ac7f8b9ac10d8c9f7a/html5/thumbnails/21.jpg)
US-EAST-1 strikes again!
![Page 22: FEARLESS AWS LAMBDAS - · PDF fileFEARLESS AWS LAMBDAS ... Benchmark Lambda Java 8 ... Lambda runtime will deserialize JSON -> POJOs Include event POJOs as source](https://reader030.fdocuments.net/reader030/viewer/2022021510/5ab821ac7f8b9ac10d8c9f7a/html5/thumbnails/22.jpg)
WTF? (Feb 2017, us-west-2)
![Page 23: FEARLESS AWS LAMBDAS - · PDF fileFEARLESS AWS LAMBDAS ... Benchmark Lambda Java 8 ... Lambda runtime will deserialize JSON -> POJOs Include event POJOs as source](https://reader030.fdocuments.net/reader030/viewer/2022021510/5ab821ac7f8b9ac10d8c9f7a/html5/thumbnails/23.jpg)
Benchmark conclusions
Memory = consistency (mostly)
Benchmark over long periods of time
Benchmark in multiple regions
![Page 24: FEARLESS AWS LAMBDAS - · PDF fileFEARLESS AWS LAMBDAS ... Benchmark Lambda Java 8 ... Lambda runtime will deserialize JSON -> POJOs Include event POJOs as source](https://reader030.fdocuments.net/reader030/viewer/2022021510/5ab821ac7f8b9ac10d8c9f7a/html5/thumbnails/24.jpg)
Cold starts1. Platform receives event 2. Platform inits container 3. Container inits language runtime 4. Language runtime inits user code 5. Platform passes event to container
![Page 25: FEARLESS AWS LAMBDAS - · PDF fileFEARLESS AWS LAMBDAS ... Benchmark Lambda Java 8 ... Lambda runtime will deserialize JSON -> POJOs Include event POJOs as source](https://reader030.fdocuments.net/reader030/viewer/2022021510/5ab821ac7f8b9ac10d8c9f7a/html5/thumbnails/25.jpg)
Cold starts (us-west-2)
![Page 26: FEARLESS AWS LAMBDAS - · PDF fileFEARLESS AWS LAMBDAS ... Benchmark Lambda Java 8 ... Lambda runtime will deserialize JSON -> POJOs Include event POJOs as source](https://reader030.fdocuments.net/reader030/viewer/2022021510/5ab821ac7f8b9ac10d8c9f7a/html5/thumbnails/26.jpg)
Cold starts
2 days of data (us-west-2)
128MB - 1.8% of the time
1.5GB - 0.97% of the time
![Page 27: FEARLESS AWS LAMBDAS - · PDF fileFEARLESS AWS LAMBDAS ... Benchmark Lambda Java 8 ... Lambda runtime will deserialize JSON -> POJOs Include event POJOs as source](https://reader030.fdocuments.net/reader030/viewer/2022021510/5ab821ac7f8b9ac10d8c9f7a/html5/thumbnails/27.jpg)
LAMBDA + JAVA
![Page 28: FEARLESS AWS LAMBDAS - · PDF fileFEARLESS AWS LAMBDAS ... Benchmark Lambda Java 8 ... Lambda runtime will deserialize JSON -> POJOs Include event POJOs as source](https://reader030.fdocuments.net/reader030/viewer/2022021510/5ab821ac7f8b9ac10d8c9f7a/html5/thumbnails/28.jpg)
io.symphonia.Lambda::handler
![Page 29: FEARLESS AWS LAMBDAS - · PDF fileFEARLESS AWS LAMBDAS ... Benchmark Lambda Java 8 ... Lambda runtime will deserialize JSON -> POJOs Include event POJOs as source](https://reader030.fdocuments.net/reader030/viewer/2022021510/5ab821ac7f8b9ac10d8c9f7a/html5/thumbnails/29.jpg)
package io.symphonia;
public class Lambda {
public String handler(String input) { return input; }
}
![Page 30: FEARLESS AWS LAMBDAS - · PDF fileFEARLESS AWS LAMBDAS ... Benchmark Lambda Java 8 ... Lambda runtime will deserialize JSON -> POJOs Include event POJOs as source](https://reader030.fdocuments.net/reader030/viewer/2022021510/5ab821ac7f8b9ac10d8c9f7a/html5/thumbnails/30.jpg)
package io.symphonia;
public class Lambda {
public void handler(int n) { // do something ... }
}
![Page 31: FEARLESS AWS LAMBDAS - · PDF fileFEARLESS AWS LAMBDAS ... Benchmark Lambda Java 8 ... Lambda runtime will deserialize JSON -> POJOs Include event POJOs as source](https://reader030.fdocuments.net/reader030/viewer/2022021510/5ab821ac7f8b9ac10d8c9f7a/html5/thumbnails/31.jpg)
package io.symphonia;
import java.io.InputStream;import java.io.OutputStream;
public class Lambda {
public void handler(InputStream input, OutputStream output) { // Read from the InputStream // Write to the OutputStream }
}
![Page 32: FEARLESS AWS LAMBDAS - · PDF fileFEARLESS AWS LAMBDAS ... Benchmark Lambda Java 8 ... Lambda runtime will deserialize JSON -> POJOs Include event POJOs as source](https://reader030.fdocuments.net/reader030/viewer/2022021510/5ab821ac7f8b9ac10d8c9f7a/html5/thumbnails/32.jpg)
package io.symphonia;
import com.amazonaws.services.lambda.runtime.CognitoIdentity;import com.amazonaws.services.lambda.runtime.Context;
public class Lambda {
public String handler(String input, Context context) {
// Inspect Context CognitoIdentity identity = context.getIdentity(); int remaining = context.getRemainingTimeInMillis();
// do something ... return input; }
}
![Page 33: FEARLESS AWS LAMBDAS - · PDF fileFEARLESS AWS LAMBDAS ... Benchmark Lambda Java 8 ... Lambda runtime will deserialize JSON -> POJOs Include event POJOs as source](https://reader030.fdocuments.net/reader030/viewer/2022021510/5ab821ac7f8b9ac10d8c9f7a/html5/thumbnails/33.jpg)
Handling inputLambda runtime will deserialize JSON -> POJOs
Include event POJOs as source
Avoid large dependencies just for event classes
- AWS event types are scattered across libraries
Or, parse incoming JSON yourself (InputStream)
![Page 34: FEARLESS AWS LAMBDAS - · PDF fileFEARLESS AWS LAMBDAS ... Benchmark Lambda Java 8 ... Lambda runtime will deserialize JSON -> POJOs Include event POJOs as source](https://reader030.fdocuments.net/reader030/viewer/2022021510/5ab821ac7f8b9ac10d8c9f7a/html5/thumbnails/34.jpg)
package io.symphonia;
public class Lambda {
public String handler(MyInputObject inputObject) { return inputObject.getField(); }
public static class MyInputObject { String field;
public String getField() { return field; }
public void setField(String field) { this.field = field; } }}
![Page 35: FEARLESS AWS LAMBDAS - · PDF fileFEARLESS AWS LAMBDAS ... Benchmark Lambda Java 8 ... Lambda runtime will deserialize JSON -> POJOs Include event POJOs as source](https://reader030.fdocuments.net/reader030/viewer/2022021510/5ab821ac7f8b9ac10d8c9f7a/html5/thumbnails/35.jpg)
package io.symphonia;
import com.amazonaws.services.s3.AmazonS3;import com.amazonaws.services.s3.AmazonS3ClientBuilder;
import java.util.UUID;
public class Lambda {
private AmazonS3 s3client; private String bucket = "myBucket";
public Lambda() { s3client = AmazonS3ClientBuilder.defaultClient(); }
public void handler(String key) { s3client.putObject(bucket, key, UUID.randomUUID().toString()); }}
![Page 36: FEARLESS AWS LAMBDAS - · PDF fileFEARLESS AWS LAMBDAS ... Benchmark Lambda Java 8 ... Lambda runtime will deserialize JSON -> POJOs Include event POJOs as source](https://reader030.fdocuments.net/reader030/viewer/2022021510/5ab821ac7f8b9ac10d8c9f7a/html5/thumbnails/36.jpg)
DeploymentDeployment artifact is a zip file
For Java, an uberjar
Use mvn-shade-plugin or similar
- Your code, plus your dependencies
![Page 37: FEARLESS AWS LAMBDAS - · PDF fileFEARLESS AWS LAMBDAS ... Benchmark Lambda Java 8 ... Lambda runtime will deserialize JSON -> POJOs Include event POJOs as source](https://reader030.fdocuments.net/reader030/viewer/2022021510/5ab821ac7f8b9ac10d8c9f7a/html5/thumbnails/37.jpg)
Multi-Lambda applicationsMulti-module Maven project
AWS Bill-of-materials (BOM)
- dependencyManagement for AWS SDKs
Serverless Application Model (SAM)
![Page 38: FEARLESS AWS LAMBDAS - · PDF fileFEARLESS AWS LAMBDAS ... Benchmark Lambda Java 8 ... Lambda runtime will deserialize JSON -> POJOs Include event POJOs as source](https://reader030.fdocuments.net/reader030/viewer/2022021510/5ab821ac7f8b9ac10d8c9f7a/html5/thumbnails/38.jpg)
LAMBDA + THE JVM
![Page 39: FEARLESS AWS LAMBDAS - · PDF fileFEARLESS AWS LAMBDAS ... Benchmark Lambda Java 8 ... Lambda runtime will deserialize JSON -> POJOs Include event POJOs as source](https://reader030.fdocuments.net/reader030/viewer/2022021510/5ab821ac7f8b9ac10d8c9f7a/html5/thumbnails/39.jpg)
Lambda’s JVM runtime OpenJDK 1.8 Server VM
-XX:MaxHeapSize = 85% of configured Lambda memory
-XX:+UseSerialGC
-XX:+TieredCompilation
-Xshare:on
![Page 40: FEARLESS AWS LAMBDAS - · PDF fileFEARLESS AWS LAMBDAS ... Benchmark Lambda Java 8 ... Lambda runtime will deserialize JSON -> POJOs Include event POJOs as source](https://reader030.fdocuments.net/reader030/viewer/2022021510/5ab821ac7f8b9ac10d8c9f7a/html5/thumbnails/40.jpg)
JVM cold startsClass loading
Initialization
- Constructors, static initialization blocks
Alternative language runtime loading (Clojure!)
JIT compilation
![Page 41: FEARLESS AWS LAMBDAS - · PDF fileFEARLESS AWS LAMBDAS ... Benchmark Lambda Java 8 ... Lambda runtime will deserialize JSON -> POJOs Include event POJOs as source](https://reader030.fdocuments.net/reader030/viewer/2022021510/5ab821ac7f8b9ac10d8c9f7a/html5/thumbnails/41.jpg)
The Lambda dietFewer classes = faster startup
- Ruthlessly cull dependencies
- AWS libraries can be bloated!
mvn dependency:tree, sbt dependencyStats
![Page 42: FEARLESS AWS LAMBDAS - · PDF fileFEARLESS AWS LAMBDAS ... Benchmark Lambda Java 8 ... Lambda runtime will deserialize JSON -> POJOs Include event POJOs as source](https://reader030.fdocuments.net/reader030/viewer/2022021510/5ab821ac7f8b9ac10d8c9f7a/html5/thumbnails/42.jpg)
Cloudwatch LogsSystem.out/err output goes to Cloudwatch Logs
One “log group” per Lambda (by default)
Within “log group”, one “log stream” per container
From Cloudwatch, can aggregate and/or forward
![Page 43: FEARLESS AWS LAMBDAS - · PDF fileFEARLESS AWS LAMBDAS ... Benchmark Lambda Java 8 ... Lambda runtime will deserialize JSON -> POJOs Include event POJOs as source](https://reader030.fdocuments.net/reader030/viewer/2022021510/5ab821ac7f8b9ac10d8c9f7a/html5/thumbnails/43.jpg)
System.out.nopeSystem.out.println is bad for the normal reasons
*Real* logging is better
Lambda runtime can add RequestId to Log4J logs
aws-lambda-java-log4j uses Log4J 1.2 ☹
![Page 44: FEARLESS AWS LAMBDAS - · PDF fileFEARLESS AWS LAMBDAS ... Benchmark Lambda Java 8 ... Lambda runtime will deserialize JSON -> POJOs Include event POJOs as source](https://reader030.fdocuments.net/reader030/viewer/2022021510/5ab821ac7f8b9ac10d8c9f7a/html5/thumbnails/44.jpg)
lambda-loggingSLF4J + Logback 😀
Sane default configuration w/ AWS RequestId
Open Source (Apache 2 license)
- io.symphonia/lambda-logging “1.0.0”
- github.com/symphoniacloud/lambda-monitoring/
![Page 45: FEARLESS AWS LAMBDAS - · PDF fileFEARLESS AWS LAMBDAS ... Benchmark Lambda Java 8 ... Lambda runtime will deserialize JSON -> POJOs Include event POJOs as source](https://reader030.fdocuments.net/reader030/viewer/2022021510/5ab821ac7f8b9ac10d8c9f7a/html5/thumbnails/45.jpg)
Cloudwatch MetricsNo built-in business metrics
Lambda platform metrics
- Errors, Duration, Invocations, Throttles
Naive metrics collection approach is dangerous!
- Cloudwatch has account-level API limits 🔥
![Page 46: FEARLESS AWS LAMBDAS - · PDF fileFEARLESS AWS LAMBDAS ... Benchmark Lambda Java 8 ... Lambda runtime will deserialize JSON -> POJOs Include event POJOs as source](https://reader030.fdocuments.net/reader030/viewer/2022021510/5ab821ac7f8b9ac10d8c9f7a/html5/thumbnails/46.jpg)
Cloudwatch Metric Filters
Built into Cloudwatch! Scalable!
Scrape Cloudwatch Logs data using special (finicky) patterns
Generates and post Cloudwatch metrics
![Page 47: FEARLESS AWS LAMBDAS - · PDF fileFEARLESS AWS LAMBDAS ... Benchmark Lambda Java 8 ... Lambda runtime will deserialize JSON -> POJOs Include event POJOs as source](https://reader030.fdocuments.net/reader030/viewer/2022021510/5ab821ac7f8b9ac10d8c9f7a/html5/thumbnails/47.jpg)
lambda-metricsCodahale metrics and lambda-logging
Maven plugin builds Metric Filters to scrape logs, post to CW
Open Source (Apache 2 license)
- io.symphonia/lambda-metrics “1.0.0”
- github.com/symphoniacloud/lambda-monitoring
![Page 48: FEARLESS AWS LAMBDAS - · PDF fileFEARLESS AWS LAMBDAS ... Benchmark Lambda Java 8 ... Lambda runtime will deserialize JSON -> POJOs Include event POJOs as source](https://reader030.fdocuments.net/reader030/viewer/2022021510/5ab821ac7f8b9ac10d8c9f7a/html5/thumbnails/48.jpg)
CHOOSING THE JVM
![Page 49: FEARLESS AWS LAMBDAS - · PDF fileFEARLESS AWS LAMBDAS ... Benchmark Lambda Java 8 ... Lambda runtime will deserialize JSON -> POJOs Include event POJOs as source](https://reader030.fdocuments.net/reader030/viewer/2022021510/5ab821ac7f8b9ac10d8c9f7a/html5/thumbnails/49.jpg)
Ideal application
Latency tolerant
Regularly invoked
Computationally intensive
![Page 50: FEARLESS AWS LAMBDAS - · PDF fileFEARLESS AWS LAMBDAS ... Benchmark Lambda Java 8 ... Lambda runtime will deserialize JSON -> POJOs Include event POJOs as source](https://reader030.fdocuments.net/reader030/viewer/2022021510/5ab821ac7f8b9ac10d8c9f7a/html5/thumbnails/50.jpg)
TL;DRUse Lambda’s JVM runtime
Reduce and amortize cold start impact
Benchmark extensively
Use real logging and metrics