Cloud-native Java microservices with MicroProfile

1 Good morning! Guten Morgen!

2 Setting Context

• Building Cloud Native Microservices

• A Cloud Native App Server

• A Better JVM for Cloud

• Time to Code!

3 Building Microservices

4 Why are you here?

“Be like NetFlix” -- ¯\_()_/¯ ?

5 Why are you here?

• Benefits of Microservices

o Scalability o Independent Deploy-ability o Agile o DevOps o etc

6 Transformation

7 Cloud Native?

• 12 Factor Apps

o Benefits o Concerns o Complications

8 Microservices?

• Secure, fault tolerant, configurable, monitorable, etc

o Benefits o Concerns o Complications

9 Transformation = Culture!

• Tools & Practices

• Processes & Procedures

• Remember the Agile Manifesto? :)

10 An Evolution

11 12 How MicroProfile Helps You

• Industry standard, vendor agonostic

• Best practice patterns & solutions

• Multi-vendor support

13 MicroProfile

Open Tracing Health Metrics 1.1 1.1 Check 1.0

JWT Fault Open API 1.0 Propagation Config 1.3 Tolerance 1.1 1.1

Rest Client 1.1 CDI 2.0 JSON-P 1.1 JSON-B 1.0 JAX-RS 2.1

microprofile.io 14 A Cloud Native App Server

15 openliberty.io

16 Design Goals

• Efficient

• Simple to use

• Consistency

• Just enough Application Server

• Very good for virtualized environments

• End of migration

• Agile Ready

17 8

18 A Better JVM For Cloud

19 Cloud Costs

• In The Cloud… More Resources = More $$$

• Small Footprint & Faster Start-up = Less $$$

• More Throughput = Less $$$

• OpenJDK with Eclipse OpenJ9 – perfect for cloud

20 Adopt Eclipse OpenJ9

Startup time is 30% faster with OpenJ9 –Xshareclasses -Xquickstart Footprint is 60% smaller with OpenJ9

Hotspot OpenJ9 OpenJ9 -Xshareclasses - Hotspot OpenJ9 OpenJ9 -Xshareclasses - Xquickstart Xquickstart Hotspot OpenJ9 OpenJ9 -Xshareclasses -Xquickstart Hotspot OpenJ9 OpenJ9 -Xshareclasses -Xquickstart

Achieve peak throughput 70% faster with OpenJ9

OpenJDK9 with HotSpot OpenJDK9 with OpenJ9 OpenJDK9 with OpenJ9 w/AOT -Xtune:virtualized Throughput (transactions/sec)

0 200 400 600 800 1000 1200 1400 1600 Time (sec) http://www.eclipse.org/openj9 https://adoptopenjdk.net/?variant=openjdk8-openj9 21 Summary

• MicroProfile - Java APIs for cloud-native applications o Produce and consume REST services o Handle faults, security, configuration, APIs o Monitor health, metrics and trace request flows • Open Liberty - Java platform for cloud-native applications o Open Source, Simple, Lightweight, Fast o Supports latest MicroProfile and Java EE API o Flexible package to suit your Microservices • Eclopse OpenJ9 Liberty – for OpenJDK o Smallest memory footprint, fastest startup & highest throughput 22 Time to Code!

23 MicroProfile Guides

24 Useful links

• The tutorial - https://github.com/OpenLiberty/tutorial-microprofile

• Home - https://microprofile.io/

• Eclipse Home - https://eclipse.org/microprofile

• Forum - https://groups.google.com/forum/#!forum/microprofile

• Guides - https://openliberty.io/guides/?search=MicroProfile

• Java - http://www.eclipse.org/openj9/

25 Thank You! & Enjoy the lab! https://github.com/OpenLiberty/tutorial-microprofile

26