Copyright © 2019, Oracle and/or its affiliates. All rights reserved. |
Serverless Java
Challenges and Triumphs
1
Singapore JUG
March 25, 2019
David Delabassee - @delabassee
Oracle
Copyright © 2019, Oracle and/or its affiliates. All rights reserved. 2
Preamble…
Copyright © 2019, Oracle and/or its affiliates. All rights reserved.
Copyright © 2019, Oracle and/or its affiliates. All rights reserved.
Belgium
Copyright © 2019, Oracle and/or its affiliates. All rights reserved. 5
Copyright © 2019, Oracle and/or its affiliates. All rights reserved.
Safe Harbor Statement
The following is intended to outline our general product direction. It is intended for
information purposes only, and may not be incorporated into any contract. It is not a
commitment to deliver any material, code, or functionality, and should not be relied upon
in making purchasing decisions. The development, release, and timing of any features or
functionality described for Oracle’s products remains at the sole discretion of Oracle.
6
Copyright © 2019, Oracle and/or its affiliates. All rights reserved. 7
Copyright © 2019, Oracle and/or its affiliates. All rights reserved. 8
Serverless
Copyright © 2019, Oracle and/or its affiliates. All rights reserved.
Function As a Service
• Function
• As a Service
9
Small bits of code with a well defined job
Easy to understand and maintain
The system takes care of provisioning, patching, scaling, ...
Each function can scale independently
Copyright © 2019, Oracle and/or its affiliates. All rights reserved. 10
Interest in Serverless
Source: Google Trends
Copyright © 2019, Oracle and/or its affiliates. All rights reserved. 11
Serverless Java?
Copyright © 2019, Oracle and/or its affiliates. All rights reserved. 12
https://blog.github.com/2018-11-15-state-of-the-octoverse-top-programming-languages/
Top programming languages by contributors as of September 30, 2018
Copyright © 2019, Oracle and/or its affiliates. All rights reserved. 13
https://redmonk.com/rstephens/2019/03/20/redmonk-top-20-languages-over-time-january-2019/
RedMonk Top 20 Languages Over Time: Sept 2012 - Jan 2019
Copyright © 2019, Oracle and/or its affiliates. All rights reserved. 14
4.96% of functions are Java 8!?
https://serverless.com/blog/serverless-by-the-numbers-2018-data-report/
Copyright © 2019, Oracle and/or its affiliates. All rights reserved. 15
And the Trend isn’t Great!
https://serverless.com/blog/serverless-by-the-numbers-2018-data-report/
Copyright © 2019, Oracle and/or its affiliates. All rights reserved.
Serverless Java Landscape
• AWS Lambda - Java 8 support (June 2015)
• Azure Function - Java 8 support (February 2019)
• Google Cloud Function - NA
16
Copyright © 2019, Oracle and/or its affiliates. All rights reserved. 17
http://redmonk.com/jgovernor/2016/10/12/when-web-companies-grow-up-they-turn-into-java-shops
Copyright © 2019, Oracle and/or its affiliates. All rights reserved.
Serverless Java
• FaaS seen as a scripting platform for the web?
• Doesn't fit normal Java development patterns?
• JVM not suitable for short-lived “apps”?
18
Copyright © 2019, Oracle and/or its affiliates. All rights reserved.
Blueprints for Serverless Java
• “Plain old Java”
• Established toolchains
• Ability to build complex applications
• Low latency/high performance
• Rich JVM ecosystem
19
Copyright © 2019, Oracle and/or its affiliates. All rights reserved.
• Open-source, Container NaAve, Serverless PlaDorm
• Apache v2 licence
• Run anywhere - Cloud / Datacenter / Laptop
• Fn ♥
• FuncAons are containers
20
https://github.com/fnproject/fn
Copyright © 2019, Oracle and/or its affiliates. All rights reserved. 21
Demo
Copyright © 2019, Oracle and/or its affiliates. All rights reserved.
Fn Java Function Development Kit
• Docker images
–A build image for repeatable builds
–An optimized runtime image
• JUnit test harness
• Maven support
• Input/output coercion
• Flow
• …
22
Copyright © 2019, Oracle and/or its affiliates. All rights reserved.
Blueprints for Serverless Java
• “Plain old Java” ✓
• Established toolchains ✓
• Ability to build complex applications
• Low latency/high performance
• Rich JVM ecosystem
23
Copyright © 2019, Oracle and/or its affiliates. All rights reserved. 24
Fn Flow
Copyright © 2019, Oracle and/or its affiliates. All rights reserved.
Serverless
25
Permanent Storage Lives Elsewhere
ts
10
5
5 5
5
8 7
7 8
10
Copyright © 2019, Oracle and/or its affiliates. All rights reserved.
Fn Flow
• Build reliable and scalable Faas applica(ons
• Provides rich concurrency primi(ves including fork-join, chaining, delays
and error handling
• Java support based on Java 8 Comple(onStage API
For long-running, reliable, scalable functions
Copyright © 2019, Oracle and/or its affiliates. All rights reserved.
Fn Flow
For long-running, reliable, scalable functions
Flow flow = Flows.currentFlow();
FlowFuture<byte[]> stage =
flow.invokeFunction(aFunc, input.getBytes())
.thenApply(HttpResponse::getBodyAsBytes);
byte[] result = stage.get();
Copyright © 2019, Oracle and/or its affiliates. All rights reserved.
Fn Flow
28
Demo
Java FDK
Flow
Copyright © 2019, Oracle and/or its affiliates. All rights reserved.
Blueprints for Serverless Java
• “Plain old Java” ✓
• Established toolchains ✓
• Ability to build complex applications ✓
• Low latency/high performance
• Rich JVM ecosystem
29
Copyright © 2019, Oracle and/or its affiliates. All rights reserved.
Low latency/high performance
• Respect resource constraints
• Start fast
• Run in small(er) images
30
What do we want containerized JVMs to do?
Copyright © 2019, Oracle and/or its affiliates. All rights reserved.
Respecting Resource Constraints
• JDK-8179498:attach in Linux should be relative to /proc/pid/root and
namespace aware as jcmd, jsack, etc. fail to attach (resolved in JDK 10)
• JDK-8193710: jcmd –l and jps commands do not list Java processes
running in Docker containers (resolved in JDK 11)
• And more... JDK-8203357: Container Metrics (resolved in JDK 11.0.1)
• JDK 11—JEP 318: Epsilon, i.e. No-Op, Garbage Collector (experimental)
31
Being Container Friendly
Copyright © 2019, Oracle and/or its affiliates. All rights reserved.
Start Fast
32
Moving Startup Costs to Build-Time
• Class Data Sharing
–Avoid parsing JDK classes on start
• Application CDS
–Avoid parsing App classes on start
• AOT compilation
–Compile App classes to native .so libraries (experimental)
Copyright © 2019, Oracle and/or its affiliates. All rights reserved.
Start Fast
33
Small(er) Container Images = Faster Start-up
Copyright © 2019, Oracle and/or its affiliates. All rights reserved.
Run Small(er) Images
34
Reduce layers size
• Java Function and its dependencies
• Java Runtime
• Operating System
Copyright © 2019, Oracle and/or its affiliates. All rights reserved.
Run Small(er) Images
35
Reduce layers size
• Project Portola
– Run the JVM on musl
– https://openjdk.java.net/projects/portola/
• musl
– Lightweight, fast, simple, free, C standard library implementation
– http://www.musl-libc.org
• Alpine
– Security-oriented, lightweight Linux distro with 4MB base image
– https://www.alpinelinux.org
Copyright © 2019, Oracle and/or its affiliates. All rights reserved.
Run Small(er) Images
36
Reduce Java Runtime layer size - jlink
Modules JLink flags Mb
JDK 12 Whole JDK! 318.7
openjdk:11-jre-slim 11 (default) NB: openjdk:12-jre-slim not yet available! 217.0
JRE 12 all (explicit) --add-module $(java --list-modules) 168.3 100.0%
+ --no-header-files --no-man-pages --strip-debug 143.0 85.0%
+ --compress=1 107.8 64.1%
+ --compress=2 83.7 49.7%
Custom JRE 12 base, logging --add-module $(jdeps --print-module-deps func.jar) 47.4 28.2% 100.0%
+ --no-header-files --no-man-pages --strip-debug 41.6 24.7% 87.8%
+ --compress=2 32.0 19.0% 67.5%
OpenJDK (build 12-ea+29) - alpine:3.9 x86_64
318 Mb 168 Mb 47 Mb 32 Mb
Copyright © 2019, Oracle and/or its affiliates. All rights reserved. 37
jlink/Alpine Demo
Copyright © 2019, Oracle and/or its affiliates. All rights reserved.
Run Small(er) Images
• GraalVM compiles Java source to a single native binary
• Tiny image sizes
• Low VM overhead
38
GraalVM
Copyright © 2019, Oracle and/or its affiliates. All rights reserved. 39
GraalVM Demo
Copyright © 2019, Oracle and/or its affiliates. All rights reserved.
Blueprints for Serverless Java
• “Plain old Java” ✓
• Established toolchains ✓
• Ability to build complex applications ✓
• Low latency/high performance ✓
• Rich JVM ecosystem
40
Copyright © 2019, Oracle and/or its affiliates. All rights reserved.
Ongoing Ecosystem Evolution…
• Substrate VM
• Java release cadence
• Other JVM based languages
– Kotlin, Groovy, etc.
• …
• Fn init-image
41
Copyright © 2019, Oracle and/or its affiliates. All rights reserved.
Blueprints for Serverless Java
• “Plain old Java” ✓
• Wide choice of good tooling ✓
• Ability to build complex applications ✓
• Low latency/high performance ✓
• Rich JVM ecosystem ✓
42
Copyright © 2019, Oracle and/or its affiliates. All rights reserved. 43
Serverless Java—Does it have a future? Absolutely!
Copyright © 2019, Oracle and/or its affiliates. All rights reserved. 44
Call to Action
https://github.com/fnproject/fn
Copyright © 2019, Oracle and/or its affiliates. All rights reserved.
Coming Soon: Oracle Functions
Function Dev KitsOpen Source Engine
Oracle Cloud Triggers
Events
HTTP
Timer
Streams
Container Native
Advanced DiagnosticsFine-grained Billing
Copyright © 2019, Oracle and/or its affiliates. All rights reserved. 46
Thanks!

More Related Content

PDF
Java Serverless in Action - Voxxed Banff
PDF
JavaOne 2015: 12 Factor App
PPTX
#JavaOne What's in an object?
PDF
Polygot Java EE on the GraalVM
PPTX
Java modules using project jigsaw@jdk 9
PPTX
Ausoug glassfish perth
PDF
JavaCro'14 - WebLogic-GlassFish-JaaS Strategy and Roadmap – Duško Vukmanović
PPTX
Expect the unexpected: Anticipate and prepare for failures in microservices b...
Java Serverless in Action - Voxxed Banff
JavaOne 2015: 12 Factor App
#JavaOne What's in an object?
Polygot Java EE on the GraalVM
Java modules using project jigsaw@jdk 9
Ausoug glassfish perth
JavaCro'14 - WebLogic-GlassFish-JaaS Strategy and Roadmap – Duško Vukmanović
Expect the unexpected: Anticipate and prepare for failures in microservices b...

What's hot (20)

PPTX
GlassFish in Production Environments
PPTX
Why jakarta ee matters (ConFoo 2021)
PPTX
Oracle WebLogic Server 12.2.1 Do More with Less
PPTX
Tecnologias Oracle em Docker Containers On-premise e na Nuvem
PPTX
Java EE Arquillian Testing with Docker & The Cloud
PPTX
Modularization With Project Jigsaw in JDK 9
PDF
JVMs in Containers - Best Practices
PPT
Developing modular Java applications
PDF
The Kubernetes WebLogic revival (part 1)
PPTX
Exploring Java Heap Dumps (Oracle Code One 2018)
PPTX
Melhore o Desenvolvimento do Time com DevOps na Nuvem
PDF
Keynote Oracle Fusion Middleware Summit_2020
PDF
20191119 Cloud Native Java : GraalVM
PDF
Nuxeo WebEngine and GlassFish v3
PDF
Is Enterprise Java Still Relevant (JavaOne 2015 session)
PDF
Deployment Best Practices on WebLogic Server (DOAG IMC Summit 2013)
PPTX
Java EE 8 Update
PDF
Glassfish An Introduction
PPTX
Java 9 Module System Introduction
PPTX
Java EE 8
GlassFish in Production Environments
Why jakarta ee matters (ConFoo 2021)
Oracle WebLogic Server 12.2.1 Do More with Less
Tecnologias Oracle em Docker Containers On-premise e na Nuvem
Java EE Arquillian Testing with Docker & The Cloud
Modularization With Project Jigsaw in JDK 9
JVMs in Containers - Best Practices
Developing modular Java applications
The Kubernetes WebLogic revival (part 1)
Exploring Java Heap Dumps (Oracle Code One 2018)
Melhore o Desenvolvimento do Time com DevOps na Nuvem
Keynote Oracle Fusion Middleware Summit_2020
20191119 Cloud Native Java : GraalVM
Nuxeo WebEngine and GlassFish v3
Is Enterprise Java Still Relevant (JavaOne 2015 session)
Deployment Best Practices on WebLogic Server (DOAG IMC Summit 2013)
Java EE 8 Update
Glassfish An Introduction
Java 9 Module System Introduction
Java EE 8
Ad

Similar to Serverless Java Challenges & Triumphs (20)

PDF
Serverless Java - Challenges and Triumphs
PDF
Serverless Java: JJUG CCC 2019
PDF
General Capabilities of GraalVM by Oleg Selajev @shelajev
PDF
JVMs in Containers
PDF
Randstad Docker meetup - Serverless
PDF
JDK 10 Java Module System
PDF
JDK versions and OpenJDK
PDF
GraalVM: Run Programs Faster Everywhere
PDF
GraalVM Native Images by Oleg Selajev @shelajev
PDF
Docker Compose Setup for MySQL InnoDB Cluster
PDF
Serverless Patterns by Jesse Butler
PDF
Javantura v6 - Java SE, Today and Tomorrow - Dalibor Topic
PDF
Java Cloud and Container Ready
PPTX
Java 101
PDF
Node.js and Oracle Database: New Development Techniques
PDF
“Quantum” Performance Effects: beyond the Core
PDF
Java 40 versions_sgp
PDF
Why to Use an Oracle Database?
PDF
Run Scala Faster with GraalVM on any Platform / GraalVMで、どこでもScalaを高速実行しよう by...
PPTX
Jakarta EE: Today and Tomorrow
Serverless Java - Challenges and Triumphs
Serverless Java: JJUG CCC 2019
General Capabilities of GraalVM by Oleg Selajev @shelajev
JVMs in Containers
Randstad Docker meetup - Serverless
JDK 10 Java Module System
JDK versions and OpenJDK
GraalVM: Run Programs Faster Everywhere
GraalVM Native Images by Oleg Selajev @shelajev
Docker Compose Setup for MySQL InnoDB Cluster
Serverless Patterns by Jesse Butler
Javantura v6 - Java SE, Today and Tomorrow - Dalibor Topic
Java Cloud and Container Ready
Java 101
Node.js and Oracle Database: New Development Techniques
“Quantum” Performance Effects: beyond the Core
Java 40 versions_sgp
Why to Use an Oracle Database?
Run Scala Faster with GraalVM on any Platform / GraalVMで、どこでもScalaを高速実行しよう by...
Jakarta EE: Today and Tomorrow
Ad

More from David Delabassee (20)

PPTX
Serverless Kotlin
PDF
REST in an Async World
PDF
JAX-RS 2.1 Reloaded
PDF
Java EE 8 - February 2017 update
PDF
Java EE Next
PDF
Java EE Next - BeJUG JavaOne Afterglow 2016
PDF
HTTP/2 comes to Java
PDF
Java EE 8 - Work in progress
PDF
HTTP/2 comes to Java (Dec. 2015 version)
PDF
EJB and CDI - Alignment and Strategy
PDF
HTTP/2 Comes to Java
PDF
Java EE 8 - What’s new on the Web front
PDF
HTTP/2 Comes to Java
PDF
What's coming in Java EE 8
PDF
Java EE 8 Adopt a JSR : JSON-P 1.1 & MVC 1.0
PDF
MVC 1.0 / JSR 371
PDF
Java EE 8 - An instant snapshot
PDF
Avatar 2.0
PDF
Java EE 8 - An instant snapshot
PDF
HTTP/2 Comes to Java - What Servlet 4.0 Means to You
Serverless Kotlin
REST in an Async World
JAX-RS 2.1 Reloaded
Java EE 8 - February 2017 update
Java EE Next
Java EE Next - BeJUG JavaOne Afterglow 2016
HTTP/2 comes to Java
Java EE 8 - Work in progress
HTTP/2 comes to Java (Dec. 2015 version)
EJB and CDI - Alignment and Strategy
HTTP/2 Comes to Java
Java EE 8 - What’s new on the Web front
HTTP/2 Comes to Java
What's coming in Java EE 8
Java EE 8 Adopt a JSR : JSON-P 1.1 & MVC 1.0
MVC 1.0 / JSR 371
Java EE 8 - An instant snapshot
Avatar 2.0
Java EE 8 - An instant snapshot
HTTP/2 Comes to Java - What Servlet 4.0 Means to You

Recently uploaded (20)

PPTX
Introduction to Windows Operating System
PDF
EaseUS PDF Editor Pro 6.2.0.2 Crack with License Key 2025
PPTX
Trending Python Topics for Data Visualization in 2025
PDF
Practical Indispensable Project Management Tips for Delivering Successful Exp...
PDF
Top 10 Software Development Trends to Watch in 2025 🚀.pdf
PDF
Wondershare Recoverit Full Crack New Version (Latest 2025)
PDF
MCP Security Tutorial - Beginner to Advanced
PDF
AI/ML Infra Meetup | Beyond S3's Basics: Architecting for AI-Native Data Access
PDF
E-Commerce Website Development Companyin india
PPTX
Lecture 5 Software Requirement Engineering
PDF
Type Class Derivation in Scala 3 - Jose Luis Pintado Barbero
PDF
How Tridens DevSecOps Ensures Compliance, Security, and Agility
PDF
novaPDF Pro 11.9.482 Crack + License Key [Latest 2025]
PPTX
GSA Content Generator Crack (2025 Latest)
PPTX
Airline CRS | Airline CRS Systems | CRS System
PDF
How AI/LLM recommend to you ? GDG meetup 16 Aug by Fariman Guliev
PDF
Topaz Photo AI Crack New Download (Latest 2025)
DOCX
How to Use SharePoint as an ISO-Compliant Document Management System
PPTX
CNN LeNet5 Architecture: Neural Networks
PDF
Introduction to Ragic - #1 No Code Tool For Digitalizing Your Business Proces...
Introduction to Windows Operating System
EaseUS PDF Editor Pro 6.2.0.2 Crack with License Key 2025
Trending Python Topics for Data Visualization in 2025
Practical Indispensable Project Management Tips for Delivering Successful Exp...
Top 10 Software Development Trends to Watch in 2025 🚀.pdf
Wondershare Recoverit Full Crack New Version (Latest 2025)
MCP Security Tutorial - Beginner to Advanced
AI/ML Infra Meetup | Beyond S3's Basics: Architecting for AI-Native Data Access
E-Commerce Website Development Companyin india
Lecture 5 Software Requirement Engineering
Type Class Derivation in Scala 3 - Jose Luis Pintado Barbero
How Tridens DevSecOps Ensures Compliance, Security, and Agility
novaPDF Pro 11.9.482 Crack + License Key [Latest 2025]
GSA Content Generator Crack (2025 Latest)
Airline CRS | Airline CRS Systems | CRS System
How AI/LLM recommend to you ? GDG meetup 16 Aug by Fariman Guliev
Topaz Photo AI Crack New Download (Latest 2025)
How to Use SharePoint as an ISO-Compliant Document Management System
CNN LeNet5 Architecture: Neural Networks
Introduction to Ragic - #1 No Code Tool For Digitalizing Your Business Proces...

Serverless Java Challenges & Triumphs

  • 1. Copyright © 2019, Oracle and/or its affiliates. All rights reserved. | Serverless Java Challenges and Triumphs 1 Singapore JUG March 25, 2019 David Delabassee - @delabassee Oracle
  • 2. Copyright © 2019, Oracle and/or its affiliates. All rights reserved. 2 Preamble…
  • 3. Copyright © 2019, Oracle and/or its affiliates. All rights reserved.
  • 4. Copyright © 2019, Oracle and/or its affiliates. All rights reserved. Belgium
  • 5. Copyright © 2019, Oracle and/or its affiliates. All rights reserved. 5
  • 6. Copyright © 2019, Oracle and/or its affiliates. All rights reserved. Safe Harbor Statement The following is intended to outline our general product direction. It is intended for information purposes only, and may not be incorporated into any contract. It is not a commitment to deliver any material, code, or functionality, and should not be relied upon in making purchasing decisions. The development, release, and timing of any features or functionality described for Oracle’s products remains at the sole discretion of Oracle. 6
  • 7. Copyright © 2019, Oracle and/or its affiliates. All rights reserved. 7
  • 8. Copyright © 2019, Oracle and/or its affiliates. All rights reserved. 8 Serverless
  • 9. Copyright © 2019, Oracle and/or its affiliates. All rights reserved. Function As a Service • Function • As a Service 9 Small bits of code with a well defined job Easy to understand and maintain The system takes care of provisioning, patching, scaling, ... Each function can scale independently
  • 10. Copyright © 2019, Oracle and/or its affiliates. All rights reserved. 10 Interest in Serverless Source: Google Trends
  • 11. Copyright © 2019, Oracle and/or its affiliates. All rights reserved. 11 Serverless Java?
  • 12. Copyright © 2019, Oracle and/or its affiliates. All rights reserved. 12 https://blog.github.com/2018-11-15-state-of-the-octoverse-top-programming-languages/ Top programming languages by contributors as of September 30, 2018
  • 13. Copyright © 2019, Oracle and/or its affiliates. All rights reserved. 13 https://redmonk.com/rstephens/2019/03/20/redmonk-top-20-languages-over-time-january-2019/ RedMonk Top 20 Languages Over Time: Sept 2012 - Jan 2019
  • 14. Copyright © 2019, Oracle and/or its affiliates. All rights reserved. 14 4.96% of functions are Java 8!? https://serverless.com/blog/serverless-by-the-numbers-2018-data-report/
  • 15. Copyright © 2019, Oracle and/or its affiliates. All rights reserved. 15 And the Trend isn’t Great! https://serverless.com/blog/serverless-by-the-numbers-2018-data-report/
  • 16. Copyright © 2019, Oracle and/or its affiliates. All rights reserved. Serverless Java Landscape • AWS Lambda - Java 8 support (June 2015) • Azure Function - Java 8 support (February 2019) • Google Cloud Function - NA 16
  • 17. Copyright © 2019, Oracle and/or its affiliates. All rights reserved. 17 http://redmonk.com/jgovernor/2016/10/12/when-web-companies-grow-up-they-turn-into-java-shops
  • 18. Copyright © 2019, Oracle and/or its affiliates. All rights reserved. Serverless Java • FaaS seen as a scripting platform for the web? • Doesn't fit normal Java development patterns? • JVM not suitable for short-lived “apps”? 18
  • 19. Copyright © 2019, Oracle and/or its affiliates. All rights reserved. Blueprints for Serverless Java • “Plain old Java” • Established toolchains • Ability to build complex applications • Low latency/high performance • Rich JVM ecosystem 19
  • 20. Copyright © 2019, Oracle and/or its affiliates. All rights reserved. • Open-source, Container NaAve, Serverless PlaDorm • Apache v2 licence • Run anywhere - Cloud / Datacenter / Laptop • Fn ♥ • FuncAons are containers 20 https://github.com/fnproject/fn
  • 21. Copyright © 2019, Oracle and/or its affiliates. All rights reserved. 21 Demo
  • 22. Copyright © 2019, Oracle and/or its affiliates. All rights reserved. Fn Java Function Development Kit • Docker images –A build image for repeatable builds –An optimized runtime image • JUnit test harness • Maven support • Input/output coercion • Flow • … 22
  • 23. Copyright © 2019, Oracle and/or its affiliates. All rights reserved. Blueprints for Serverless Java • “Plain old Java” ✓ • Established toolchains ✓ • Ability to build complex applications • Low latency/high performance • Rich JVM ecosystem 23
  • 24. Copyright © 2019, Oracle and/or its affiliates. All rights reserved. 24 Fn Flow
  • 25. Copyright © 2019, Oracle and/or its affiliates. All rights reserved. Serverless 25 Permanent Storage Lives Elsewhere ts 10 5 5 5 5 8 7 7 8 10
  • 26. Copyright © 2019, Oracle and/or its affiliates. All rights reserved. Fn Flow • Build reliable and scalable Faas applica(ons • Provides rich concurrency primi(ves including fork-join, chaining, delays and error handling • Java support based on Java 8 Comple(onStage API For long-running, reliable, scalable functions
  • 27. Copyright © 2019, Oracle and/or its affiliates. All rights reserved. Fn Flow For long-running, reliable, scalable functions Flow flow = Flows.currentFlow(); FlowFuture<byte[]> stage = flow.invokeFunction(aFunc, input.getBytes()) .thenApply(HttpResponse::getBodyAsBytes); byte[] result = stage.get();
  • 28. Copyright © 2019, Oracle and/or its affiliates. All rights reserved. Fn Flow 28 Demo Java FDK Flow
  • 29. Copyright © 2019, Oracle and/or its affiliates. All rights reserved. Blueprints for Serverless Java • “Plain old Java” ✓ • Established toolchains ✓ • Ability to build complex applications ✓ • Low latency/high performance • Rich JVM ecosystem 29
  • 30. Copyright © 2019, Oracle and/or its affiliates. All rights reserved. Low latency/high performance • Respect resource constraints • Start fast • Run in small(er) images 30 What do we want containerized JVMs to do?
  • 31. Copyright © 2019, Oracle and/or its affiliates. All rights reserved. Respecting Resource Constraints • JDK-8179498:attach in Linux should be relative to /proc/pid/root and namespace aware as jcmd, jsack, etc. fail to attach (resolved in JDK 10) • JDK-8193710: jcmd –l and jps commands do not list Java processes running in Docker containers (resolved in JDK 11) • And more... JDK-8203357: Container Metrics (resolved in JDK 11.0.1) • JDK 11—JEP 318: Epsilon, i.e. No-Op, Garbage Collector (experimental) 31 Being Container Friendly
  • 32. Copyright © 2019, Oracle and/or its affiliates. All rights reserved. Start Fast 32 Moving Startup Costs to Build-Time • Class Data Sharing –Avoid parsing JDK classes on start • Application CDS –Avoid parsing App classes on start • AOT compilation –Compile App classes to native .so libraries (experimental)
  • 33. Copyright © 2019, Oracle and/or its affiliates. All rights reserved. Start Fast 33 Small(er) Container Images = Faster Start-up
  • 34. Copyright © 2019, Oracle and/or its affiliates. All rights reserved. Run Small(er) Images 34 Reduce layers size • Java Function and its dependencies • Java Runtime • Operating System
  • 35. Copyright © 2019, Oracle and/or its affiliates. All rights reserved. Run Small(er) Images 35 Reduce layers size • Project Portola – Run the JVM on musl – https://openjdk.java.net/projects/portola/ • musl – Lightweight, fast, simple, free, C standard library implementation – http://www.musl-libc.org • Alpine – Security-oriented, lightweight Linux distro with 4MB base image – https://www.alpinelinux.org
  • 36. Copyright © 2019, Oracle and/or its affiliates. All rights reserved. Run Small(er) Images 36 Reduce Java Runtime layer size - jlink Modules JLink flags Mb JDK 12 Whole JDK! 318.7 openjdk:11-jre-slim 11 (default) NB: openjdk:12-jre-slim not yet available! 217.0 JRE 12 all (explicit) --add-module $(java --list-modules) 168.3 100.0% + --no-header-files --no-man-pages --strip-debug 143.0 85.0% + --compress=1 107.8 64.1% + --compress=2 83.7 49.7% Custom JRE 12 base, logging --add-module $(jdeps --print-module-deps func.jar) 47.4 28.2% 100.0% + --no-header-files --no-man-pages --strip-debug 41.6 24.7% 87.8% + --compress=2 32.0 19.0% 67.5% OpenJDK (build 12-ea+29) - alpine:3.9 x86_64 318 Mb 168 Mb 47 Mb 32 Mb
  • 37. Copyright © 2019, Oracle and/or its affiliates. All rights reserved. 37 jlink/Alpine Demo
  • 38. Copyright © 2019, Oracle and/or its affiliates. All rights reserved. Run Small(er) Images • GraalVM compiles Java source to a single native binary • Tiny image sizes • Low VM overhead 38 GraalVM
  • 39. Copyright © 2019, Oracle and/or its affiliates. All rights reserved. 39 GraalVM Demo
  • 40. Copyright © 2019, Oracle and/or its affiliates. All rights reserved. Blueprints for Serverless Java • “Plain old Java” ✓ • Established toolchains ✓ • Ability to build complex applications ✓ • Low latency/high performance ✓ • Rich JVM ecosystem 40
  • 41. Copyright © 2019, Oracle and/or its affiliates. All rights reserved. Ongoing Ecosystem Evolution… • Substrate VM • Java release cadence • Other JVM based languages – Kotlin, Groovy, etc. • … • Fn init-image 41
  • 42. Copyright © 2019, Oracle and/or its affiliates. All rights reserved. Blueprints for Serverless Java • “Plain old Java” ✓ • Wide choice of good tooling ✓ • Ability to build complex applications ✓ • Low latency/high performance ✓ • Rich JVM ecosystem ✓ 42
  • 43. Copyright © 2019, Oracle and/or its affiliates. All rights reserved. 43 Serverless Java—Does it have a future? Absolutely!
  • 44. Copyright © 2019, Oracle and/or its affiliates. All rights reserved. 44 Call to Action https://github.com/fnproject/fn
  • 45. Copyright © 2019, Oracle and/or its affiliates. All rights reserved. Coming Soon: Oracle Functions Function Dev KitsOpen Source Engine Oracle Cloud Triggers Events HTTP Timer Streams Container Native Advanced DiagnosticsFine-grained Billing
  • 46. Copyright © 2019, Oracle and/or its affiliates. All rights reserved. 46 Thanks!