MicroProfile and Jakarta EE -- What’s Next...JAX-RS 2.1 JSON-P 1.1 MicroProfile 2.x JSON-B 1.0...

42
EclipseCon Europe 2018 MicroProfile and Jakarta EE -- What’s Next? Kevin Sutter (@kwsutter), MicroProfile and Jakarta EE Architect @ IBM Ian Robinson (@ian__robinson), IBM Distinguished Engineer & WebSphere Chief Architect

Transcript of MicroProfile and Jakarta EE -- What’s Next...JAX-RS 2.1 JSON-P 1.1 MicroProfile 2.x JSON-B 1.0...

Page 1: MicroProfile and Jakarta EE -- What’s Next...JAX-RS 2.1 JSON-P 1.1 MicroProfile 2.x JSON-B 1.0 Fault Tolerance 1.1 Metrics 1.1 JWT Propagation 1.1 Health Check 1.0 Open Tracing 1.2

EclipseCon Europe 2018

MicroProfile and Jakarta EE --

What’s Next?

Kevin Sutter (@kwsutter), MicroProfile and Jakarta EE Architect @ IBM

Ian Robinson (@ian__robinson), IBM Distinguished Engineer & WebSphere Chief Architect

Page 2: MicroProfile and Jakarta EE -- What’s Next...JAX-RS 2.1 JSON-P 1.1 MicroProfile 2.x JSON-B 1.0 Fault Tolerance 1.1 Metrics 1.1 JWT Propagation 1.1 Health Check 1.0 Open Tracing 1.2

EclipseCon Europe 2018

What’s Next?Kevin Sutter (@kwsutter), MicroProfile and Jakarta EE Architect @ IBMIan Robinson (@ian__robinson), IBM Distinguished Engineer & WebSphere Chief Architect

#1 Better Conference Scheduling

Page 3: MicroProfile and Jakarta EE -- What’s Next...JAX-RS 2.1 JSON-P 1.1 MicroProfile 2.x JSON-B 1.0 Fault Tolerance 1.1 Metrics 1.1 JWT Propagation 1.1 Health Check 1.0 Open Tracing 1.2

About Me

3

• IBM Senior Technical Staff Member (STSM)

• WebSphere MicroProfile and Jakarta EE Architect • WebSphere development, open source, and enterprise Java

standards• WebSphere, Liberty, Open Liberty, Java EE, Jakarta EE, MicroProfile, JPA,

JCA, …

• Based in IBM’s Rochester MN lab

Kevin Sutter

@kwsutter EclipseCon Europe, October 2018

Page 4: MicroProfile and Jakarta EE -- What’s Next...JAX-RS 2.1 JSON-P 1.1 MicroProfile 2.x JSON-B 1.0 Fault Tolerance 1.1 Metrics 1.1 JWT Propagation 1.1 Health Check 1.0 Open Tracing 1.2

EclipseCon Europe 2018

JavaOne 2015: Java EE – Relevant or Elephant?

7

http://parentrap.org/2014/09/29/easy-parenting-part-iii-the-donts-list/

Page 5: MicroProfile and Jakarta EE -- What’s Next...JAX-RS 2.1 JSON-P 1.1 MicroProfile 2.x JSON-B 1.0 Fault Tolerance 1.1 Metrics 1.1 JWT Propagation 1.1 Health Check 1.0 Open Tracing 1.2

EclipseCon Europe 2018 10

What can we do to advance microservice development in the Enterprise Java space?-Java EE Community, early 2016

What Happened Next?

Page 6: MicroProfile and Jakarta EE -- What’s Next...JAX-RS 2.1 JSON-P 1.1 MicroProfile 2.x JSON-B 1.0 Fault Tolerance 1.1 Metrics 1.1 JWT Propagation 1.1 Health Check 1.0 Open Tracing 1.2

EclipseCon Europe 2018

Characteristics

11

Specs, APIs, TCKs

Community Driven

Lightweight, Iterative Processes

No Reference Impls!

Page 7: MicroProfile and Jakarta EE -- What’s Next...JAX-RS 2.1 JSON-P 1.1 MicroProfile 2.x JSON-B 1.0 Fault Tolerance 1.1 Metrics 1.1 JWT Propagation 1.1 Health Check 1.0 Open Tracing 1.2

EclipseCon Europe 2018

JavaOne 2016

12

CDI 1.2 JAX-RS 2.0 JSON-P 1.0

MicroProfile 1.0 Announced!

Basic Building Blocks for Microservices

Page 8: MicroProfile and Jakarta EE -- What’s Next...JAX-RS 2.1 JSON-P 1.1 MicroProfile 2.x JSON-B 1.0 Fault Tolerance 1.1 Metrics 1.1 JWT Propagation 1.1 Health Check 1.0 Open Tracing 1.2

EclipseCon Europe 2018

CDI 2.0

Fast-forward two years...

13

JAX-RS 2.1 JSON-P 1.1

MicroProfile 2.1

JSON-B 1.0

Fault Tolerance

1.1Metrics 1.1

JWT Propagation

1.1

Health Check 1.0

Open Tracing 1.2

Open API 1.0

Rest Client 1.1 Config 1.3

17Component Releases!

7 Platform Releases!

MicroProfile2.1

Page 9: MicroProfile and Jakarta EE -- What’s Next...JAX-RS 2.1 JSON-P 1.1 MicroProfile 2.x JSON-B 1.0 Fault Tolerance 1.1 Metrics 1.1 JWT Propagation 1.1 Health Check 1.0 Open Tracing 1.2

EclipseCon Europe 2018

CDI 2.0

Roadmap...

14

JAX-RS 2.1 JSON-P 1.1

MicroProfile 2.x

JSON-B 1.0

Fault Tolerance

1.1Metrics 1.1

JWT Propagation

1.1

Health Check 1.0

Open Tracing 1.2

Open API 1.0

Rest Client 1.1 Config 1.3

Reactive Operators

1.0

Reactive Messaging

1.0

Service Mesh /

ISTIO 1.0... Component Updates

● Health Check 1.1● Rest Client 1.2● Config 1.4● Metrics 2.0● Fault Tolerance 1.2● ...

Page 10: MicroProfile and Jakarta EE -- What’s Next...JAX-RS 2.1 JSON-P 1.1 MicroProfile 2.x JSON-B 1.0 Fault Tolerance 1.1 Metrics 1.1 JWT Propagation 1.1 Health Check 1.0 Open Tracing 1.2

EclipseCon Europe 2018

Compatible Implementations!

15https://wiki.eclipse.org/MicroProfile/Implementation

Page 11: MicroProfile and Jakarta EE -- What’s Next...JAX-RS 2.1 JSON-P 1.1 MicroProfile 2.x JSON-B 1.0 Fault Tolerance 1.1 Metrics 1.1 JWT Propagation 1.1 Health Check 1.0 Open Tracing 1.2

EclipseCon Europe 2018

Meanwhile…

16

2017 - 2018

Page 12: MicroProfile and Jakarta EE -- What’s Next...JAX-RS 2.1 JSON-P 1.1 MicroProfile 2.x JSON-B 1.0 Fault Tolerance 1.1 Metrics 1.1 JWT Propagation 1.1 Health Check 1.0 Open Tracing 1.2

EclipseCon Europe 2018

39 EE4J Projects and counting...● 20% Project Proposal has been posted for community review● 40% Project committers and resources have been provisioned● 60% Initial Contribution provided to the Eclipse IP Team● 80% Initial Contribution Pushed to Git Repository● 100% Project has engaged in its first Release Review

17https://www.eclipse.org/ee4j/status.php

Page 13: MicroProfile and Jakarta EE -- What’s Next...JAX-RS 2.1 JSON-P 1.1 MicroProfile 2.x JSON-B 1.0 Fault Tolerance 1.1 Metrics 1.1 JWT Propagation 1.1 Health Check 1.0 Open Tracing 1.2

EclipseCon Europe 2018

EE4J CI/CD Progress

18https://github.com/orgs/eclipse-ee4j/projects/1

Eclipse Glassfish 5.1-

RC1!

981 16

Page 14: MicroProfile and Jakarta EE -- What’s Next...JAX-RS 2.1 JSON-P 1.1 MicroProfile 2.x JSON-B 1.0 Fault Tolerance 1.1 Metrics 1.1 JWT Propagation 1.1 Health Check 1.0 Open Tracing 1.2

EclipseCon Europe 2018

Specification Process

19

Specification Process 1.0

● Replacement for JCP Standards Process

● Public Draft Available for Review (Oct 17, 2018)○ https://docs.google.com/document/d/1ongNU

yGvZPtrcuxA7RQNV2qBESFcAphQbzdk3pUIQ5s/edit#heading=h.o84um3qls283

○ Comments accepted until Oct 31, 2018

● Guinea Pig Spec Project○ JNoSQL

Page 15: MicroProfile and Jakarta EE -- What’s Next...JAX-RS 2.1 JSON-P 1.1 MicroProfile 2.x JSON-B 1.0 Fault Tolerance 1.1 Metrics 1.1 JWT Propagation 1.1 Health Check 1.0 Open Tracing 1.2

EclipseCon Europe 2018

Additional Work Items in progress...

20

TCK Compliance Process

TCK License

Specification License

...

Page 16: MicroProfile and Jakarta EE -- What’s Next...JAX-RS 2.1 JSON-P 1.1 MicroProfile 2.x JSON-B 1.0 Fault Tolerance 1.1 Metrics 1.1 JWT Propagation 1.1 Health Check 1.0 Open Tracing 1.2

EclipseCon Europe 2018

Similarities between MicroProfile and Jakarta EE

● Focused on Microservice and Cloud Native Development

● Desire Agile Development Practices

● Code First Mentality

21

Page 17: MicroProfile and Jakarta EE -- What’s Next...JAX-RS 2.1 JSON-P 1.1 MicroProfile 2.x JSON-B 1.0 Fault Tolerance 1.1 Metrics 1.1 JWT Propagation 1.1 Health Check 1.0 Open Tracing 1.2

EclipseCon Europe 2018

Characteristics

22

Specs, APIs, TCKs

Community Driven

Lightweight, Iterative Processes

No Reference Impls!

Page 18: MicroProfile and Jakarta EE -- What’s Next...JAX-RS 2.1 JSON-P 1.1 MicroProfile 2.x JSON-B 1.0 Fault Tolerance 1.1 Metrics 1.1 JWT Propagation 1.1 Health Check 1.0 Open Tracing 1.2

EclipseCon Europe 2018

Differences between MicroProfile and Jakarta EE

● MicroProfile has an established release process and cycle○ 7 major releases and 17 component releases in its 2 years of existence○ Jakarta EE is planning for 1-2 major releases per year (components may have more)

● MicroProfile is not a Standards body○ Jakarta EE needs to replace the JCP

● Jakarta EE brand is valuable and requires stringent compliance testing○ MicroProfile’s compatibility statements are strictly on the honor system

23

Page 19: MicroProfile and Jakarta EE -- What’s Next...JAX-RS 2.1 JSON-P 1.1 MicroProfile 2.x JSON-B 1.0 Fault Tolerance 1.1 Metrics 1.1 JWT Propagation 1.1 Health Check 1.0 Open Tracing 1.2

EclipseCon Europe 2018

Some positive signs...

24

Rest Client 1.x JAX-RS 2.x???

Page 20: MicroProfile and Jakarta EE -- What’s Next...JAX-RS 2.1 JSON-P 1.1 MicroProfile 2.x JSON-B 1.0 Fault Tolerance 1.1 Metrics 1.1 JWT Propagation 1.1 Health Check 1.0 Open Tracing 1.2

EclipseCon Europe 2018

More positive signs...

25

Config JSR Config Specification???

Page 21: MicroProfile and Jakarta EE -- What’s Next...JAX-RS 2.1 JSON-P 1.1 MicroProfile 2.x JSON-B 1.0 Fault Tolerance 1.1 Metrics 1.1 JWT Propagation 1.1 Health Check 1.0 Open Tracing 1.2

EclipseCon Europe 2018

Reactive Platform...

26

Reactive Operators

1.0

Reactive Messaging

1.0

● https://www.lightbend.com/blog/how-the-microprofile-community-will-shape-jakarta-ee● Start in MicroProfile with the end goal of becoming part of Jakarta EE

???

Page 22: MicroProfile and Jakarta EE -- What’s Next...JAX-RS 2.1 JSON-P 1.1 MicroProfile 2.x JSON-B 1.0 Fault Tolerance 1.1 Metrics 1.1 JWT Propagation 1.1 Health Check 1.0 Open Tracing 1.2

EclipseCon Europe 2018

Other Integrations...

27

Fault Tolerance● Retry● Timeout● CircuitBreaker● Bulkhead● Fallback

Fault Tolerance● Retry● Timeout● CircuitBreaker● Bulkhead● Fallback

???

Page 23: MicroProfile and Jakarta EE -- What’s Next...JAX-RS 2.1 JSON-P 1.1 MicroProfile 2.x JSON-B 1.0 Fault Tolerance 1.1 Metrics 1.1 JWT Propagation 1.1 Health Check 1.0 Open Tracing 1.2

EclipseCon Europe 2018

Jakarta EE Community

28

Page 24: MicroProfile and Jakarta EE -- What’s Next...JAX-RS 2.1 JSON-P 1.1 MicroProfile 2.x JSON-B 1.0 Fault Tolerance 1.1 Metrics 1.1 JWT Propagation 1.1 Health Check 1.0 Open Tracing 1.2

EclipseCon Europe 2018

MicroProfile Community

29

Page 25: MicroProfile and Jakarta EE -- What’s Next...JAX-RS 2.1 JSON-P 1.1 MicroProfile 2.x JSON-B 1.0 Fault Tolerance 1.1 Metrics 1.1 JWT Propagation 1.1 Health Check 1.0 Open Tracing 1.2

EclipseCon Europe 2018

Both Communities

30

Page 26: MicroProfile and Jakarta EE -- What’s Next...JAX-RS 2.1 JSON-P 1.1 MicroProfile 2.x JSON-B 1.0 Fault Tolerance 1.1 Metrics 1.1 JWT Propagation 1.1 Health Check 1.0 Open Tracing 1.2

EclipseCon Europe 2018 31

Page 27: MicroProfile and Jakarta EE -- What’s Next...JAX-RS 2.1 JSON-P 1.1 MicroProfile 2.x JSON-B 1.0 Fault Tolerance 1.1 Metrics 1.1 JWT Propagation 1.1 Health Check 1.0 Open Tracing 1.2

EclipseCon Europe 2018

Anticipated Relationship

32

● Ongoing MicroProfile innovation on top of Jakarta EE, with desired adoption of foundational technologies into JakartaEE.next

Page 28: MicroProfile and Jakarta EE -- What’s Next...JAX-RS 2.1 JSON-P 1.1 MicroProfile 2.x JSON-B 1.0 Fault Tolerance 1.1 Metrics 1.1 JWT Propagation 1.1 Health Check 1.0 Open Tracing 1.2

EclipseCon Europe 2018

Questions?

33

Page 29: MicroProfile and Jakarta EE -- What’s Next...JAX-RS 2.1 JSON-P 1.1 MicroProfile 2.x JSON-B 1.0 Fault Tolerance 1.1 Metrics 1.1 JWT Propagation 1.1 Health Check 1.0 Open Tracing 1.2

EclipseCon Europe 2018

References

● https://openliberty.io/blog/2018/08/16/whats-next-microprofile-jakartaee.html

● https://microprofile.io○ https://projects.eclipse.org/projects/technology.microprofile○ https://microprofile.io/projects/○ https://wiki.eclipse.org/MicroProfile/Implementation○ https://openliberty.io/guides/

● https://jakarta.ee○ https://projects.eclipse.org/projects/ee4j/○ https://github.com/eclipse-ee4j/ee4j○ https://www.eclipse.org/ee4j/status.php○ https://github.com/orgs/eclipse-ee4j/projects/1

34

Page 30: MicroProfile and Jakarta EE -- What’s Next...JAX-RS 2.1 JSON-P 1.1 MicroProfile 2.x JSON-B 1.0 Fault Tolerance 1.1 Metrics 1.1 JWT Propagation 1.1 Health Check 1.0 Open Tracing 1.2

EclipseCon Europe 2018

MicroProfile Backup Material

35

Page 31: MicroProfile and Jakarta EE -- What’s Next...JAX-RS 2.1 JSON-P 1.1 MicroProfile 2.x JSON-B 1.0 Fault Tolerance 1.1 Metrics 1.1 JWT Propagation 1.1 Health Check 1.0 Open Tracing 1.2

EclipseCon Europe 2018

Open Tracing

36

URL: https://github.com/eclipse/microprofile-opentracingLatest Release: https://github.com/eclipse/microprofile-opentracing/releases

Tracing the flow of a request in a distributed environment has always been challenging but it is even more complex in a microservices architecture, where requests traverse across not just architectural tiers but also multiple services. The MicroProfile OpenTracing API provides a standard for instrumenting microservices for distributed tracing.

Page 32: MicroProfile and Jakarta EE -- What’s Next...JAX-RS 2.1 JSON-P 1.1 MicroProfile 2.x JSON-B 1.0 Fault Tolerance 1.1 Metrics 1.1 JWT Propagation 1.1 Health Check 1.0 Open Tracing 1.2

EclipseCon Europe 2018

Open API

37

URL: https://github.com/eclipse/microprofile-open-apiLatest Release: https://github.com/eclipse/microprofile-open-api/releases

OpenAPI provides Java interfaces and programming models which allow Java developers to natively produce OpenAPI v3 documents from their JAX-RS applications.

Page 33: MicroProfile and Jakarta EE -- What’s Next...JAX-RS 2.1 JSON-P 1.1 MicroProfile 2.x JSON-B 1.0 Fault Tolerance 1.1 Metrics 1.1 JWT Propagation 1.1 Health Check 1.0 Open Tracing 1.2

EclipseCon Europe 2018

Rest Client

38

URL: https://github.com/eclipse/microprofile-rest-clientLatest Release: https://github.com/eclipse/microprofile-rest-client/releases

In the Microservices world, we typically talk REST to other services. While the JAX-RS specification defines a fluent API for making calls, it is difficult to make it a true type safe client. MicroProfile Rest Client makes it easy to take an interface definition and create a JAX-RS client from it.

Page 34: MicroProfile and Jakarta EE -- What’s Next...JAX-RS 2.1 JSON-P 1.1 MicroProfile 2.x JSON-B 1.0 Fault Tolerance 1.1 Metrics 1.1 JWT Propagation 1.1 Health Check 1.0 Open Tracing 1.2

EclipseCon Europe 2018

URL: https://github.com/eclipse/microprofile-configLatest Release: https://github.com/eclipse/microprofile-config/releases

Applications need to be configured based on a running environment. Provides a standard way to define a hierarchy of config sources from which environmental config may be injected into a running application.

Config

39

Dev Test

Prod

Page 35: MicroProfile and Jakarta EE -- What’s Next...JAX-RS 2.1 JSON-P 1.1 MicroProfile 2.x JSON-B 1.0 Fault Tolerance 1.1 Metrics 1.1 JWT Propagation 1.1 Health Check 1.0 Open Tracing 1.2

EclipseCon Europe 2018

Fault Tolerance

40

URL: https://github.com/eclipse/microprofile-fault-toleranceLatest Release: https://github.com/eclipse/microprofile-fault-tolerance/releases

Fault tolerance is about leveraging different strategies to guide the execution and result of some logic. Defines annotations for container-brokered timeouts, retries, fallbacks, circuit-breakers and bulkheads. Simplifies the application-handling of failure in microservice architectures.

Page 36: MicroProfile and Jakarta EE -- What’s Next...JAX-RS 2.1 JSON-P 1.1 MicroProfile 2.x JSON-B 1.0 Fault Tolerance 1.1 Metrics 1.1 JWT Propagation 1.1 Health Check 1.0 Open Tracing 1.2

EclipseCon Europe 2018

URL: https://github.com/eclipse/microprofile-metricsLatest Release: https://github.com/eclipse/microprofile-metrics/releases

To ensure reliable operation of software it is necessary to monitor essential system parameters. Defines annotations to define metrics and well-known monitoring endpoints to gather them from.

Metrics

41

Metric Registry ● Required Base metrics

● Application metrics● Vendor-specific metrics

Page 37: MicroProfile and Jakarta EE -- What’s Next...JAX-RS 2.1 JSON-P 1.1 MicroProfile 2.x JSON-B 1.0 Fault Tolerance 1.1 Metrics 1.1 JWT Propagation 1.1 Health Check 1.0 Open Tracing 1.2

EclipseCon Europe 2018

JWT Propagation

42

URL: https://github.com/eclipse/microprofile-jwt-authLatest Release: https://github.com/eclipse/microprofile-jwt-auth/releases

The security requirements that involve microservice architectures are strongly related with RESTful Security. Defines standard JWT claims so the content of a JWT token to be used in Java EE RBAC – identifying user principle name and group names that a container can map to deployment roles.

Page 38: MicroProfile and Jakarta EE -- What’s Next...JAX-RS 2.1 JSON-P 1.1 MicroProfile 2.x JSON-B 1.0 Fault Tolerance 1.1 Metrics 1.1 JWT Propagation 1.1 Health Check 1.0 Open Tracing 1.2

EclipseCon Europe 2018

Health Check

43

URL: https://github.com/eclipse/microprofile-healthLatest Release: https://github.com/eclipse/microprofile-health/releases

Health checks are used to probe the state of a computing node from another machine (i.e. kubernetes service controller) with the primary target being cloud infrastructure environments where automated processes maintain the state of computing nodes

Page 39: MicroProfile and Jakarta EE -- What’s Next...JAX-RS 2.1 JSON-P 1.1 MicroProfile 2.x JSON-B 1.0 Fault Tolerance 1.1 Metrics 1.1 JWT Propagation 1.1 Health Check 1.0 Open Tracing 1.2

EclipseCon Europe 2018

Reactive Streams Operators (under construction)

44

URL: https://github.com/eclipse/microprofile-reactive-streamsLatest Release: https://github.com/eclipse/microprofile-reactive-streams/releases

Reactive Streams is an integration SPI - it allows two different libraries that provide asynchronous streaming to be able to stream data to and from each other.

Reactive Streams is not however designed to be used directly by application developers. The semantics defined by Reactive Streams are very strict, and are non trivial, particularly in the areas of thread safety, to implement correctly. Typically, application developers are expected to use third party libraries that provide the tools necessary to manipulate and control streams. Examples include Akka Streams, RxJava andReactor.

Page 40: MicroProfile and Jakarta EE -- What’s Next...JAX-RS 2.1 JSON-P 1.1 MicroProfile 2.x JSON-B 1.0 Fault Tolerance 1.1 Metrics 1.1 JWT Propagation 1.1 Health Check 1.0 Open Tracing 1.2

EclipseCon Europe 2018

Reactive Messaging (under construction)

45

URL: https://github.com/eclipse/microprofile-reactive-messagingLatest Release: N/A

User annotates simple methods…container creates and manages Reactive Streams:

Page 41: MicroProfile and Jakarta EE -- What’s Next...JAX-RS 2.1 JSON-P 1.1 MicroProfile 2.x JSON-B 1.0 Fault Tolerance 1.1 Metrics 1.1 JWT Propagation 1.1 Health Check 1.0 Open Tracing 1.2

EclipseCon Europe 2018

Service Mesh / ISTIO (under construction)

46

URL: https://github.com/eclipse/microprofile-service-meshLatest Release: N/A

MicroProfile defines programming model for developing cloud-native microservices. Cloud Native microservices developed with MicroProfile can take advantage of a Service Mesh by extracting many concerns away from the development of the microservice itself. It is important for MicroProfile to understand the capabilities of service mesh, so that MicroProfile can offer complimentary features for the infrastructure and avoid the conflicts.

Page 42: MicroProfile and Jakarta EE -- What’s Next...JAX-RS 2.1 JSON-P 1.1 MicroProfile 2.x JSON-B 1.0 Fault Tolerance 1.1 Metrics 1.1 JWT Propagation 1.1 Health Check 1.0 Open Tracing 1.2

EclipseCon Europe 2018

47Code One 2018

https://jakarta.ee/news/2018/04/24/jakarta-ee-community-survey/