SlideShare a Scribd company logo
RED HAT
Kubernetes Native Java and
Eclipse MicroProfile (plus other things)
Mark Little, VP Engineering, Red Hat
Who am I?
● Research into fault-tolerant distributed systems since 1986
○ Arjuna, Argus, Isis/Horus, Emerald, Xerox, …
○ DCE, DCOM, CORBA, HTTP, Web Services, …
● Implemented world’s first 100% Java transaction service in 1995
○ Yes, we’re still using it today!
● Active in OMG, OASIS, W3C, JCP, GGF and others
○ Co-author of a number of specifications and standards
● Visiting Professor at Newcastle and Lyon
● Industry ...
○ Various startups
○ Bluestone Distinguished Engineer, HP Distinguished Engineer
○ JBoss CTO in 2009
● These days spend far too much time on conference calls, meetings etc!
2
Overview
● Why Java in the age of Kubernetes and Linux Containers?
○ Java is dead, right?
● Why did Enterprise Java need to change?
○ Kubernetes and Immutability
○ Incompatibilities with Java and Application Containers
● Eclipse MicroProfile
○ Eclipse Jakarta EE
● Quarkus and principles behind it may be a game changer
○ Optimised for immutable architectures
○ Can work in constrained environments, e.g., low memory footprint
3
Why is Java still important?
● Still a de-facto language for enterprise developers*
● Large skills base (7-10 million Java devs.)**
● Large and diverse ecosystem
○ Amazon, Fujitsu, Google, IBM, Microsoft, Netflix, Oracle, Pivotal, Red Hat, …
● Large, resilient community
● Much more than just the language!
● The innovation continues
○ Eclipse MicroProfile
○ Eclipse Jakarta EE
○ Java SE faster schedule
○ SubstrateVM
4
Sources:
*Tiobe Index : https://www.tiobe.com/tiobe-index/
* IEEE Spectrum : https://spectrum.ieee.org/static/interactive-the-top-programming-languages-2018
I** SlashData - 7.6 million active Java developers (State of Developer Nation, 16th Edition, Q4 2018)
Historical Enterprise Java Stack
5
Operating System + Hardware/VM
Java Virtual Machine (Hotspot)
Application Server
App App App App App
Dynamic Application Frameworks
Architecture: Monoliths
Deployment: multi-app,
appserver
App Lifecycle: Months
Memory: 1GB+ RAM
Startup Time: 10s of sec
And then along came ...
6
Monoliths are Evil? Microservices ..?
7
Followed closely by ...
8
And then … Kubernetes
● Open source project from Google
● The de facto standard for cluster management for Linux containers
● Packages Orchestration, service discovery, load balancing
○ All behind a simple REST API
● Immutable architectures
9
The “Java Problem”
● Designed for throughput at the expense of footprint
● Intended to be long running, less focus on startup speed
● Rich dynamic behavior built around mutable bare-metal systems
○ … yet Linux containers are primarily immutable
○ … frameworks and stacks built to leverage key Java capabilities such as dynamism
● Java is trying to pivot (JPMS, AOT, Graal, etc)
○ … but architectural changes to frameworks are required to truly benefit
10
11
Container platform
Node
NodeJS
NodeJS
NodeJS
NodeJS
NodeJS
NodeJS
NodeJS
Node
Go Go
Go Go
Go Go
Go Go
Go Go
Go Go
Go Go
Node
HotSpot Heap
HotSpot Heap
HotSpot Heap
HotSpot Heap
Why footprint matters in the cloud
● Memory is more important than throughput on containers
○ It’s more expensive (requires permanence), unlike CPU cycles
● Microservices multiply overhead cost
○ One app becomes N microservices (e.g. 20 microservices ~= 20GB today!)
● If we do nothing Java alternatives will take over (eventually)
○ Go, Python, Node, PHP, Rust etc. do not have this problem
12
What we really want ...
13
● 1 monolith ≈ 20 microservices ≈ 200 functions
● Scale to 1 vs scale to 0
● Start up time
MONOLITH
MICRO
SERVICE
MICRO
SERVICE
MICRO
SERVICE
MICRO
SERVICE
MICRO
SERVICE
MICRO
SERVICE
MICRO
SERVICE
MICRO
SERVICE
MICRO
SERVICE
MICRO
SERVICE
MICRO
SERVICE
MICRO
SERVICE
MICRO
SERVICE
MICRO
SERVICE
MICRO
SERVICE
MICRO
SERVICE
MICRO
SERVICE
MICRO
SERVICE
MICRO
SERVICE
MICRO
SERVICE
F FFFFFFFFF
F FFFFFFFFF
F FFFFFFFFF
F FFFFFFFFF
F FFFFFFFFF
F FFFFFFFFF
F FFFFFFFFF
F FFFFFFFFF
F FFFFFFFFF
F FFFFFFFFF
F FFFFFFFFF
F FFFFFFFFF
F FFFFFFFFF
F FFFFFFFFF
F FFFFFFFFF
F FFFFFFFFF
F FFFFFFFFF
F FFFFFFFFF
We need a Kubernetes native stack
14
14
Monolith Cloud Native Microservices Serverless
Event-Driven
Architecture
Istio Knative
It starts with the JVM
● Linux container aware JVM efforts
○ Memory utilisation
○ Processor utilisation
● OpenJDK evolved to work better with Linux Containers
○ Shenandoah GC
● Eclipse OpenJ9 performance improvements
○ JIT-as-a-Service
● Compiled Java?
○ gcj
○ … Dalvik?
○ Avian
○ Excelsior JET
○ GraalVM
● JVM improvements are necessary but not sufficient 15
APPLICATION SERVER TRANSITION
16
Traditional Application
Development
Standardized
Runtimes &
Frameworks
Kubernetes Optimized
Middleware
Application Services
for OpenShift
Hybrid Cloud App
Development
Container Platform
Caching API Mgmt
Business
Rules
HTTP/
REST
Persistence
Process
Automation
Integration Messaging TransactionSecurity
Dependency Injection
Domains DevOps Clustering
Load
Balancing
Failover
Rolling
Updates
Traditional Middleware + Java Application Server
Eclipse MicroProfile
● Open Source community
specifications for Enterprise Java
microservices
● 9 releases in 3 years
● 5 specifications in the pipeline
17
Community
Kubernetes Native Java and Eclipse MicroProfile | EclipseCon Europe 2019
19
Eclipse MicroProfile 3.1 (Oct 2019)
20
Roadmap items
● Long Running Actions (yes, transactions for microservices!)
● GraphQL
● Reactive Relational Database Access
● Event Data
● Service meshes
● start.microprofile.io
21
22
Kubernetes Native Java and Eclipse MicroProfile | EclipseCon Europe 2019
Eclipse Vert.x
● Responsive: fast, is able to handle a large number of events / connections
● Elastic: scale up and down by just starting and stopping nodes,
round-robin
● Resilient: failure as first-class citizen, self-healing
● Asynchronous message-passing: asynchronous non-blocking
development model
● 2014 JAX Innovations Award Winner
24
25
26
WHAT IS QUARKUS?
QUARK: elementary particle / US: hardest thing in computer science
Moving to Compile-Time Boot
27
What does a framework do at startup time?
● Parse config files
● Classpath & classes scanning
○ for annotations, getters or other metadata
● Build framework metamodel objects
● Prepare reflection and build proxies
● Start and open IO, threads etc
● Moved as much as possible to build phase
● Minimized runtime dependencies
● Maximize dead code elimination
● Introduced clear metadata contracts
● Spectrum of optimization levels
(all → some → no runtime reflection)
Framework Optimizations
What about MicroProfile?
● Quarkus implements MicroProfile
● We all know the benefits of open standards …
○ No vendor lock-in so applications can be ported across implementations
○ Don’t like something then come in and help evolve it
● MicroProfile in Quarkus enables skills to be immediately brought to the
problem
○ And applications from other implementations too!
● Aim to feed more innovations back to MicroProfile and beyond
○ Remember … the JVM needs love too, not just frameworks
28
29
JVM CI
Sulong (LLVM)
Truffle
Graal Compiler
Substrate VM
Java HotSpot VM
Benefit No. 1: Developer Joy
30
A cohesive platform for optimized developer joy:
● Based on standards (e.g., MicroProfile), but not
limited
● Unified configuration
● Zero config, live reload in the blink of an eye
● Streamlined code for the 80% common usages,
flexible for the 20%
● No hassle native executable generation
● Unifies imperative and reactive programming
○ Vert.x FTW!
● Re-architected many projects
○ Hibernate, Narayana, Netty, Infinispan, ...
Benefit No. 2: Supersonic Subatomic Java
31
Quarkus + SubstrateVM
13 MB
Quarkus + OpenJDK Hotspot
74 MB
Traditional Cloud Native Stack
+ OpenJDK Hotspot
140 MB
REST
Benefit No. 2: Supersonic Subatomic Java
32
REST + CRUD
Quarkus + SubstrateVM
35 MB
Quarkus + OpenJDK Hotspot
130 MB
Traditional Cloud Native Stack
+ OpenJDK Hotspot
218 MB
Benefit No. 2: Supersonic Subatomic Java
3333Boot + First Response Time (in seconds)
Quarkus + GraalVM 0.014 Seconds
REST
REST + CRUD
Quarkus + OpenJDK 0.75 Seconds
Quarkus + SubstrateVM 0.055 Seconds
Quarkus + OpenJDK 2.5 Seconds
Traditional Cloud Native Stack 9.5 Seconds
Traditional Cloud Native Stack 4.3 Seconds
Time to first response
The New Truth about Java + Containers
34
CONTAINER ORCHESTRATION
NodeNode
Traditional Cloud-Native
Java Stack
Traditional Cloud-Native
Java Stack
Traditional Cloud-Native
Java Stack
Traditional Cloud-Native
Java Stack
Node
NodeJS
NodeJS
NodeJS
NodeJS
NodeJS
NodeJS
NodeJS
Go Go Go
Go Go Go
Go Go Go
Go Go Go
Go Go Go
Go Go Go
Go Go Go
Node
Quarkus
Quarkus
Quarkus
Quarkus
Quarkus
Quarkus
Quarkus
Quarkus
Quarkus
Quarkus
Quarkus
Quarkus
Quarkus
Quarkus
Conclusions: rethinking the problem
● Our problems are not the same as they were 10 years ago
○ We can’t expect the same solutions to make sense!
○ Containers are small and primarily immutable
● To adapt, we must truly understand conditions and make different trade-offs
○ Eclipse MicroProfile offers a standard way to trim down services
○ But there’s still a lot more work to do across the entire stack
● Enable millions of Java developers to become truly cloud native
35

More Related Content

What's hot (19)

PDF
OSDC 2016 - rkt and Kubernentes what's new with Container Runtimes and Orches...
NETWAYS
 
PDF
Quarkus on Knative at Red Hat Summit 2019
Daniel Oh
 
PPTX
Introduction to GraalVM
SHASHI KUMAR
 
PDF
GraalVM Overview Compact version
scalaconfjp
 
PDF
GraalVM - MadridJUG 2019-10-22
Jorge Hidalgo
 
PDF
[DevConf.US 2019]Quarkus Brings Serverless to Java Developers
Daniel Oh
 
PPTX
[JOI] TOTVS Developers Joinville - Java #1
Rubens Dos Santos Filho
 
PDF
Smashing the bottleneck: Qt application profiling
Develer S.r.l.
 
PDF
GraalVM: Run Programs Faster Everywhere
J On The Beach
 
PDF
GraalVM - JBCNConf 2019-05-28
Jorge Hidalgo
 
PDF
GraalVM - OpenSlava 2019-10-18
Jorge Hidalgo
 
PDF
TechEvent Graal(VM) Performance Interoperability
Trivadis
 
PPTX
GIDS_what does_cloud-native_mean_anyway?
Grace Jansen
 
PPTX
HOW AND WHY GRAALVM IS QUICKLY BECOMING RELEVANT FOR YOU
Lucas Jellema
 
PDF
Adopting GraalVM - Scale by the Bay 2018
Petr Zapletal
 
PPTX
Edge and ai
Vishwas N
 
PDF
Intro to Kubernetes & GitOps Workshop
Weaveworks
 
PDF
Adopting GraalVM - NE Scala 2019
Petr Zapletal
 
PPSX
Scalding on tez (final)
Cyrille Chépélov
 
OSDC 2016 - rkt and Kubernentes what's new with Container Runtimes and Orches...
NETWAYS
 
Quarkus on Knative at Red Hat Summit 2019
Daniel Oh
 
Introduction to GraalVM
SHASHI KUMAR
 
GraalVM Overview Compact version
scalaconfjp
 
GraalVM - MadridJUG 2019-10-22
Jorge Hidalgo
 
[DevConf.US 2019]Quarkus Brings Serverless to Java Developers
Daniel Oh
 
[JOI] TOTVS Developers Joinville - Java #1
Rubens Dos Santos Filho
 
Smashing the bottleneck: Qt application profiling
Develer S.r.l.
 
GraalVM: Run Programs Faster Everywhere
J On The Beach
 
GraalVM - JBCNConf 2019-05-28
Jorge Hidalgo
 
GraalVM - OpenSlava 2019-10-18
Jorge Hidalgo
 
TechEvent Graal(VM) Performance Interoperability
Trivadis
 
GIDS_what does_cloud-native_mean_anyway?
Grace Jansen
 
HOW AND WHY GRAALVM IS QUICKLY BECOMING RELEVANT FOR YOU
Lucas Jellema
 
Adopting GraalVM - Scale by the Bay 2018
Petr Zapletal
 
Edge and ai
Vishwas N
 
Intro to Kubernetes & GitOps Workshop
Weaveworks
 
Adopting GraalVM - NE Scala 2019
Petr Zapletal
 
Scalding on tez (final)
Cyrille Chépélov
 

Similar to Kubernetes Native Java and Eclipse MicroProfile | EclipseCon Europe 2019 (20)

PDF
Introduction to Micronaut - JBCNConf 2019
graemerocher
 
PDF
Red Hat Java Update and Quarkus Introduction
John Archer
 
PDF
Drools, jBPM OptaPlanner presentation
Mark Proctor
 
PDF
Cloud Native Practice
Philip Zheng
 
PDF
Reactive Amsterdam - Maxim Burgerhout - Quarkus Intro
Fabio Tiriticco
 
PDF
Meetup 2020 - Back to the Basics part 101 : IaC
DamienCarpy
 
PDF
Quarkus - a next-generation Kubernetes Native Java framework
SVDevOps
 
PDF
Montreal Kubernetes Meetup: Developer-first workflows (for microservices) on ...
Ambassador Labs
 
ODP
Cloud Native Java Development Patterns
Bilgin Ibryam
 
PPTX
Micronaut: A new way to build microservices
Luram Archanjo
 
PDF
Free GitOps Workshop + Intro to Kubernetes & GitOps
Weaveworks
 
PDF
CON6423: Scalable JavaScript applications with Project Nashorn
Michel Graciano
 
PPTX
Open Source Investments in Mainframe Through the Next Generation - Showcasing...
Open Mainframe Project
 
PPTX
(java2days) Is the Future of Java Cloudy?
Steve Poole
 
PDF
DevOpsDays Tel Aviv DEC 2022 | Building A Cloud-Native Platform Brick by Bric...
Haggai Philip Zagury
 
PDF
Netty training
Jackson dos Santos Olveira
 
PDF
Container Days
Patrick Mizer
 
PDF
ContainerDays NYC 2015: "Easing Your Way Into Docker: Lessons From a Journey ...
DynamicInfraDays
 
ODP
OpenStack Toronto: Juno Community Update
Stephen Gordon
 
PDF
Intro to creating kubernetes operators
Juraj Hantak
 
Introduction to Micronaut - JBCNConf 2019
graemerocher
 
Red Hat Java Update and Quarkus Introduction
John Archer
 
Drools, jBPM OptaPlanner presentation
Mark Proctor
 
Cloud Native Practice
Philip Zheng
 
Reactive Amsterdam - Maxim Burgerhout - Quarkus Intro
Fabio Tiriticco
 
Meetup 2020 - Back to the Basics part 101 : IaC
DamienCarpy
 
Quarkus - a next-generation Kubernetes Native Java framework
SVDevOps
 
Montreal Kubernetes Meetup: Developer-first workflows (for microservices) on ...
Ambassador Labs
 
Cloud Native Java Development Patterns
Bilgin Ibryam
 
Micronaut: A new way to build microservices
Luram Archanjo
 
Free GitOps Workshop + Intro to Kubernetes & GitOps
Weaveworks
 
CON6423: Scalable JavaScript applications with Project Nashorn
Michel Graciano
 
Open Source Investments in Mainframe Through the Next Generation - Showcasing...
Open Mainframe Project
 
(java2days) Is the Future of Java Cloudy?
Steve Poole
 
DevOpsDays Tel Aviv DEC 2022 | Building A Cloud-Native Platform Brick by Bric...
Haggai Philip Zagury
 
Container Days
Patrick Mizer
 
ContainerDays NYC 2015: "Easing Your Way Into Docker: Lessons From a Journey ...
DynamicInfraDays
 
OpenStack Toronto: Juno Community Update
Stephen Gordon
 
Intro to creating kubernetes operators
Juraj Hantak
 
Ad

More from Jakarta_EE (20)

PDF
Applied Domain-Driven Design Blueprints for Jakarta EE
Jakarta_EE
 
PDF
Contributors Guide to the Jakarta EE 10 Galaxy
Jakarta_EE
 
PDF
Shorten All URLs
Jakarta_EE
 
PPTX
The Eclipse Transformer Project
Jakarta_EE
 
PPTX
Eclipse Transformer
Jakarta_EE
 
PPTX
Eclipse GlassFish 6.0.0-M1
Jakarta_EE
 
PPTX
Jakarta EE 9 Platform Project
Jakarta_EE
 
PPTX
Jakarta EE 9 Milestone Release Party - Overview
Jakarta_EE
 
PPTX
Jakarta EE 9 Platform Report
Jakarta_EE
 
PDF
Cloud Native Java: Present and Future at Eclipse Foundation
Jakarta_EE
 
PPTX
Building 12-factor Cloud Native Microservices
Jakarta_EE
 
PDF
JakartaOne Livestream CN4J: Driving Jakarta EE Success
Jakarta_EE
 
PDF
JakartaOne Livestream CN4J: Cloud Native Runtimes - Revolution or Evolution?
Jakarta_EE
 
PDF
JakartaOne Livestream CN4J: Bringing Reactive to Enterprise Developers
Jakarta_EE
 
PPTX
JakartaOne Livestream CN4J: Eclipse MicroProfile - Your Cloud-Native Companion
Jakarta_EE
 
PDF
Jakarta for dummEEs | JakartaOne Livestream
Jakarta_EE
 
PDF
Jakarta EE Meets NoSQL at the Cloud Age | JakartaOne Livestream
Jakarta_EE
 
PDF
Turbocharged Java with Quarkus | JakartaOne Livestream
Jakarta_EE
 
PDF
Building Interoperable Microservices With Eclipse MicroProfile| JakartaOne Li...
Jakarta_EE
 
PDF
Jakarta RESTful Web Services: Status Quo and Roadmap | JakartaOne Livestream
Jakarta_EE
 
Applied Domain-Driven Design Blueprints for Jakarta EE
Jakarta_EE
 
Contributors Guide to the Jakarta EE 10 Galaxy
Jakarta_EE
 
Shorten All URLs
Jakarta_EE
 
The Eclipse Transformer Project
Jakarta_EE
 
Eclipse Transformer
Jakarta_EE
 
Eclipse GlassFish 6.0.0-M1
Jakarta_EE
 
Jakarta EE 9 Platform Project
Jakarta_EE
 
Jakarta EE 9 Milestone Release Party - Overview
Jakarta_EE
 
Jakarta EE 9 Platform Report
Jakarta_EE
 
Cloud Native Java: Present and Future at Eclipse Foundation
Jakarta_EE
 
Building 12-factor Cloud Native Microservices
Jakarta_EE
 
JakartaOne Livestream CN4J: Driving Jakarta EE Success
Jakarta_EE
 
JakartaOne Livestream CN4J: Cloud Native Runtimes - Revolution or Evolution?
Jakarta_EE
 
JakartaOne Livestream CN4J: Bringing Reactive to Enterprise Developers
Jakarta_EE
 
JakartaOne Livestream CN4J: Eclipse MicroProfile - Your Cloud-Native Companion
Jakarta_EE
 
Jakarta for dummEEs | JakartaOne Livestream
Jakarta_EE
 
Jakarta EE Meets NoSQL at the Cloud Age | JakartaOne Livestream
Jakarta_EE
 
Turbocharged Java with Quarkus | JakartaOne Livestream
Jakarta_EE
 
Building Interoperable Microservices With Eclipse MicroProfile| JakartaOne Li...
Jakarta_EE
 
Jakarta RESTful Web Services: Status Quo and Roadmap | JakartaOne Livestream
Jakarta_EE
 
Ad

Recently uploaded (20)

PDF
Generic or Specific? Making sensible software design decisions
Bert Jan Schrijver
 
PPTX
Home Care Tools: Benefits, features and more
Third Rock Techkno
 
PPTX
Tally software_Introduction_Presentation
AditiBansal54083
 
PPTX
In From the Cold: Open Source as Part of Mainstream Software Asset Management
Shane Coughlan
 
PPTX
ChiSquare Procedure in IBM SPSS Statistics Version 31.pptx
Version 1 Analytics
 
PDF
Why Businesses Are Switching to Open Source Alternatives to Crystal Reports.pdf
Varsha Nayak
 
PPTX
Empowering Asian Contributions: The Rise of Regional User Groups in Open Sour...
Shane Coughlan
 
PDF
Online Queue Management System for Public Service Offices in Nepal [Focused i...
Rishab Acharya
 
PDF
Alarm in Android-Scheduling Timed Tasks Using AlarmManager in Android.pdf
Nabin Dhakal
 
PDF
SciPy 2025 - Packaging a Scientific Python Project
Henry Schreiner
 
PPTX
Tally_Basic_Operations_Presentation.pptx
AditiBansal54083
 
PPTX
Migrating Millions of Users with Debezium, Apache Kafka, and an Acyclic Synch...
MD Sayem Ahmed
 
PDF
Wondershare PDFelement Pro Crack for MacOS New Version Latest 2025
bashirkhan333g
 
PDF
The 5 Reasons for IT Maintenance - Arna Softech
Arna Softech
 
PDF
Driver Easy Pro 6.1.1 Crack Licensce key 2025 FREE
utfefguu
 
PPTX
Homogeneity of Variance Test Options IBM SPSS Statistics Version 31.pptx
Version 1 Analytics
 
PDF
HiHelloHR – Simplify HR Operations for Modern Workplaces
HiHelloHR
 
PDF
Unlock Efficiency with Insurance Policy Administration Systems
Insurance Tech Services
 
PPTX
Help for Correlations in IBM SPSS Statistics.pptx
Version 1 Analytics
 
PDF
Build It, Buy It, or Already Got It? Make Smarter Martech Decisions
bbedford2
 
Generic or Specific? Making sensible software design decisions
Bert Jan Schrijver
 
Home Care Tools: Benefits, features and more
Third Rock Techkno
 
Tally software_Introduction_Presentation
AditiBansal54083
 
In From the Cold: Open Source as Part of Mainstream Software Asset Management
Shane Coughlan
 
ChiSquare Procedure in IBM SPSS Statistics Version 31.pptx
Version 1 Analytics
 
Why Businesses Are Switching to Open Source Alternatives to Crystal Reports.pdf
Varsha Nayak
 
Empowering Asian Contributions: The Rise of Regional User Groups in Open Sour...
Shane Coughlan
 
Online Queue Management System for Public Service Offices in Nepal [Focused i...
Rishab Acharya
 
Alarm in Android-Scheduling Timed Tasks Using AlarmManager in Android.pdf
Nabin Dhakal
 
SciPy 2025 - Packaging a Scientific Python Project
Henry Schreiner
 
Tally_Basic_Operations_Presentation.pptx
AditiBansal54083
 
Migrating Millions of Users with Debezium, Apache Kafka, and an Acyclic Synch...
MD Sayem Ahmed
 
Wondershare PDFelement Pro Crack for MacOS New Version Latest 2025
bashirkhan333g
 
The 5 Reasons for IT Maintenance - Arna Softech
Arna Softech
 
Driver Easy Pro 6.1.1 Crack Licensce key 2025 FREE
utfefguu
 
Homogeneity of Variance Test Options IBM SPSS Statistics Version 31.pptx
Version 1 Analytics
 
HiHelloHR – Simplify HR Operations for Modern Workplaces
HiHelloHR
 
Unlock Efficiency with Insurance Policy Administration Systems
Insurance Tech Services
 
Help for Correlations in IBM SPSS Statistics.pptx
Version 1 Analytics
 
Build It, Buy It, or Already Got It? Make Smarter Martech Decisions
bbedford2
 

Kubernetes Native Java and Eclipse MicroProfile | EclipseCon Europe 2019

  • 1. RED HAT Kubernetes Native Java and Eclipse MicroProfile (plus other things) Mark Little, VP Engineering, Red Hat
  • 2. Who am I? ● Research into fault-tolerant distributed systems since 1986 ○ Arjuna, Argus, Isis/Horus, Emerald, Xerox, … ○ DCE, DCOM, CORBA, HTTP, Web Services, … ● Implemented world’s first 100% Java transaction service in 1995 ○ Yes, we’re still using it today! ● Active in OMG, OASIS, W3C, JCP, GGF and others ○ Co-author of a number of specifications and standards ● Visiting Professor at Newcastle and Lyon ● Industry ... ○ Various startups ○ Bluestone Distinguished Engineer, HP Distinguished Engineer ○ JBoss CTO in 2009 ● These days spend far too much time on conference calls, meetings etc! 2
  • 3. Overview ● Why Java in the age of Kubernetes and Linux Containers? ○ Java is dead, right? ● Why did Enterprise Java need to change? ○ Kubernetes and Immutability ○ Incompatibilities with Java and Application Containers ● Eclipse MicroProfile ○ Eclipse Jakarta EE ● Quarkus and principles behind it may be a game changer ○ Optimised for immutable architectures ○ Can work in constrained environments, e.g., low memory footprint 3
  • 4. Why is Java still important? ● Still a de-facto language for enterprise developers* ● Large skills base (7-10 million Java devs.)** ● Large and diverse ecosystem ○ Amazon, Fujitsu, Google, IBM, Microsoft, Netflix, Oracle, Pivotal, Red Hat, … ● Large, resilient community ● Much more than just the language! ● The innovation continues ○ Eclipse MicroProfile ○ Eclipse Jakarta EE ○ Java SE faster schedule ○ SubstrateVM 4 Sources: *Tiobe Index : https://www.tiobe.com/tiobe-index/ * IEEE Spectrum : https://spectrum.ieee.org/static/interactive-the-top-programming-languages-2018 I** SlashData - 7.6 million active Java developers (State of Developer Nation, 16th Edition, Q4 2018)
  • 5. Historical Enterprise Java Stack 5 Operating System + Hardware/VM Java Virtual Machine (Hotspot) Application Server App App App App App Dynamic Application Frameworks Architecture: Monoliths Deployment: multi-app, appserver App Lifecycle: Months Memory: 1GB+ RAM Startup Time: 10s of sec
  • 6. And then along came ... 6
  • 7. Monoliths are Evil? Microservices ..? 7
  • 9. And then … Kubernetes ● Open source project from Google ● The de facto standard for cluster management for Linux containers ● Packages Orchestration, service discovery, load balancing ○ All behind a simple REST API ● Immutable architectures 9
  • 10. The “Java Problem” ● Designed for throughput at the expense of footprint ● Intended to be long running, less focus on startup speed ● Rich dynamic behavior built around mutable bare-metal systems ○ … yet Linux containers are primarily immutable ○ … frameworks and stacks built to leverage key Java capabilities such as dynamism ● Java is trying to pivot (JPMS, AOT, Graal, etc) ○ … but architectural changes to frameworks are required to truly benefit 10
  • 11. 11 Container platform Node NodeJS NodeJS NodeJS NodeJS NodeJS NodeJS NodeJS Node Go Go Go Go Go Go Go Go Go Go Go Go Go Go Node HotSpot Heap HotSpot Heap HotSpot Heap HotSpot Heap
  • 12. Why footprint matters in the cloud ● Memory is more important than throughput on containers ○ It’s more expensive (requires permanence), unlike CPU cycles ● Microservices multiply overhead cost ○ One app becomes N microservices (e.g. 20 microservices ~= 20GB today!) ● If we do nothing Java alternatives will take over (eventually) ○ Go, Python, Node, PHP, Rust etc. do not have this problem 12
  • 13. What we really want ... 13 ● 1 monolith ≈ 20 microservices ≈ 200 functions ● Scale to 1 vs scale to 0 ● Start up time MONOLITH MICRO SERVICE MICRO SERVICE MICRO SERVICE MICRO SERVICE MICRO SERVICE MICRO SERVICE MICRO SERVICE MICRO SERVICE MICRO SERVICE MICRO SERVICE MICRO SERVICE MICRO SERVICE MICRO SERVICE MICRO SERVICE MICRO SERVICE MICRO SERVICE MICRO SERVICE MICRO SERVICE MICRO SERVICE MICRO SERVICE F FFFFFFFFF F FFFFFFFFF F FFFFFFFFF F FFFFFFFFF F FFFFFFFFF F FFFFFFFFF F FFFFFFFFF F FFFFFFFFF F FFFFFFFFF F FFFFFFFFF F FFFFFFFFF F FFFFFFFFF F FFFFFFFFF F FFFFFFFFF F FFFFFFFFF F FFFFFFFFF F FFFFFFFFF F FFFFFFFFF
  • 14. We need a Kubernetes native stack 14 14 Monolith Cloud Native Microservices Serverless Event-Driven Architecture Istio Knative
  • 15. It starts with the JVM ● Linux container aware JVM efforts ○ Memory utilisation ○ Processor utilisation ● OpenJDK evolved to work better with Linux Containers ○ Shenandoah GC ● Eclipse OpenJ9 performance improvements ○ JIT-as-a-Service ● Compiled Java? ○ gcj ○ … Dalvik? ○ Avian ○ Excelsior JET ○ GraalVM ● JVM improvements are necessary but not sufficient 15
  • 16. APPLICATION SERVER TRANSITION 16 Traditional Application Development Standardized Runtimes & Frameworks Kubernetes Optimized Middleware Application Services for OpenShift Hybrid Cloud App Development Container Platform Caching API Mgmt Business Rules HTTP/ REST Persistence Process Automation Integration Messaging TransactionSecurity Dependency Injection Domains DevOps Clustering Load Balancing Failover Rolling Updates Traditional Middleware + Java Application Server
  • 17. Eclipse MicroProfile ● Open Source community specifications for Enterprise Java microservices ● 9 releases in 3 years ● 5 specifications in the pipeline 17 Community
  • 19. 19
  • 20. Eclipse MicroProfile 3.1 (Oct 2019) 20
  • 21. Roadmap items ● Long Running Actions (yes, transactions for microservices!) ● GraphQL ● Reactive Relational Database Access ● Event Data ● Service meshes ● start.microprofile.io 21
  • 22. 22
  • 24. Eclipse Vert.x ● Responsive: fast, is able to handle a large number of events / connections ● Elastic: scale up and down by just starting and stopping nodes, round-robin ● Resilient: failure as first-class citizen, self-healing ● Asynchronous message-passing: asynchronous non-blocking development model ● 2014 JAX Innovations Award Winner 24
  • 25. 25
  • 26. 26 WHAT IS QUARKUS? QUARK: elementary particle / US: hardest thing in computer science
  • 27. Moving to Compile-Time Boot 27 What does a framework do at startup time? ● Parse config files ● Classpath & classes scanning ○ for annotations, getters or other metadata ● Build framework metamodel objects ● Prepare reflection and build proxies ● Start and open IO, threads etc ● Moved as much as possible to build phase ● Minimized runtime dependencies ● Maximize dead code elimination ● Introduced clear metadata contracts ● Spectrum of optimization levels (all → some → no runtime reflection) Framework Optimizations
  • 28. What about MicroProfile? ● Quarkus implements MicroProfile ● We all know the benefits of open standards … ○ No vendor lock-in so applications can be ported across implementations ○ Don’t like something then come in and help evolve it ● MicroProfile in Quarkus enables skills to be immediately brought to the problem ○ And applications from other implementations too! ● Aim to feed more innovations back to MicroProfile and beyond ○ Remember … the JVM needs love too, not just frameworks 28
  • 29. 29 JVM CI Sulong (LLVM) Truffle Graal Compiler Substrate VM Java HotSpot VM
  • 30. Benefit No. 1: Developer Joy 30 A cohesive platform for optimized developer joy: ● Based on standards (e.g., MicroProfile), but not limited ● Unified configuration ● Zero config, live reload in the blink of an eye ● Streamlined code for the 80% common usages, flexible for the 20% ● No hassle native executable generation ● Unifies imperative and reactive programming ○ Vert.x FTW! ● Re-architected many projects ○ Hibernate, Narayana, Netty, Infinispan, ...
  • 31. Benefit No. 2: Supersonic Subatomic Java 31 Quarkus + SubstrateVM 13 MB Quarkus + OpenJDK Hotspot 74 MB Traditional Cloud Native Stack + OpenJDK Hotspot 140 MB REST
  • 32. Benefit No. 2: Supersonic Subatomic Java 32 REST + CRUD Quarkus + SubstrateVM 35 MB Quarkus + OpenJDK Hotspot 130 MB Traditional Cloud Native Stack + OpenJDK Hotspot 218 MB
  • 33. Benefit No. 2: Supersonic Subatomic Java 3333Boot + First Response Time (in seconds) Quarkus + GraalVM 0.014 Seconds REST REST + CRUD Quarkus + OpenJDK 0.75 Seconds Quarkus + SubstrateVM 0.055 Seconds Quarkus + OpenJDK 2.5 Seconds Traditional Cloud Native Stack 9.5 Seconds Traditional Cloud Native Stack 4.3 Seconds Time to first response
  • 34. The New Truth about Java + Containers 34 CONTAINER ORCHESTRATION NodeNode Traditional Cloud-Native Java Stack Traditional Cloud-Native Java Stack Traditional Cloud-Native Java Stack Traditional Cloud-Native Java Stack Node NodeJS NodeJS NodeJS NodeJS NodeJS NodeJS NodeJS Go Go Go Go Go Go Go Go Go Go Go Go Go Go Go Go Go Go Go Go Go Node Quarkus Quarkus Quarkus Quarkus Quarkus Quarkus Quarkus Quarkus Quarkus Quarkus Quarkus Quarkus Quarkus Quarkus
  • 35. Conclusions: rethinking the problem ● Our problems are not the same as they were 10 years ago ○ We can’t expect the same solutions to make sense! ○ Containers are small and primarily immutable ● To adapt, we must truly understand conditions and make different trade-offs ○ Eclipse MicroProfile offers a standard way to trim down services ○ But there’s still a lot more work to do across the entire stack ● Enable millions of Java developers to become truly cloud native 35