Vadym Kazulkin

High performance Serverless Java on AWS

Is Java's reputation for slow serverless performance still deserved? Discover how AWS SnapStart and GraalVM are finally changing the game for developers.

High performance Serverless Java on AWS
#1about 5 minutes

Understanding Java's challenges in serverless environments

Java's popularity contrasts with its low serverless adoption on AWS Lambda due to significant cold start and memory footprint issues.

#2about 6 minutes

Deconstructing the AWS Lambda cold start lifecycle

A new execution environment is created for the first request or during scaling, involving steps like code download and JVM initialization that cause latency.

#3about 4 minutes

Reducing cold starts with AWS SnapStart

AWS SnapStart improves Java startup performance by creating a snapshot of an initialized microVM during deployment and restoring it on invocation.

#4about 2 minutes

Optimizing SnapStart performance with priming techniques

Use the `beforeCheckpoint` CRaC hook to pre-initialize expensive components like HTTP clients and JSON marshallers, moving their setup cost into the deployment phase.

#5about 6 minutes

Benchmarking SnapStart and key performance factors

Performance benchmarks show that SnapStart with priming significantly reduces cold starts, while factors like memory allocation and package size also impact latency.

#6about 3 minutes

Tuning JVM compilation and garbage collection

Adjusting Java compilation options, such as using tiered compilation or stopping at level one, and sticking with the default G1 garbage collector can optimize performance.

#7about 5 minutes

Selecting the right HTTP client and architecture

The AWS CRT HTTP client outperforms the default Apache client for cold starts, and the ARM64 architecture offers a cost-effective alternative to x86.

#8about 4 minutes

How SnapStart's tiered cache improves performance

SnapStart uses a tiered low-latency cache that makes subsequent cold starts progressively faster after the initial invocations, but be aware of its limitations like a 14-day inactivity timeout.

#9about 2 minutes

Achieving peak performance with GraalVM native image

GraalVM Native Image provides the best performance by creating a pre-compiled native executable, resulting in the fastest cold starts and lowest memory footprint.

#10about 4 minutes

Navigating the challenges of GraalVM native image

Adopting GraalVM requires managing its closed-world assumption through reflection configuration and accommodating longer, more resource-intensive build processes in your CI/CD pipeline.

#11about 3 minutes

Choosing between SnapStart and GraalVM

Start with the fully managed AWS SnapStart for significant improvements with minimal effort, and adopt GraalVM Native Image when absolute peak performance is a critical business requirement.

Related jobs
Jobs that call for the skills explored in this talk.

Featured Partners

From learning to earning

Jobs that call for the skills explored in this talk.

Java AWS API

Plexus Tech
Municipality of Madrid, Spain

Senior
API
GIT
Java
REST
JUnit
+7