Eclipse MicroProfile 3.3
18th February 2020
1
Eclipse MicroProfile Community
What is Eclipse MicroProfile?
2
Community - individuals, organizations, vendors
3
Current MicroProfile implementations
4
Eclipse MicroProfile 3.3 Released!
On February 18, 2020, MicroProfile 3.3 was released. Offered in the release:
Other news:
Eclipse MicroProfile 3.3 (Feb 2020)
6
MicroProfile 3.3
JAX-RS 2.1
JSON-P 1.1
CDI 2.0
Config 1.4
Fault�Tolerance 2.1
JWT�Propagation 1.1
Health 2.2
Metrics 2.3
Open Tracing 1.3
Open API 1.1
= Updated
= No change from last release (MicroProfile 3.2)
= New
Rest Client 1.4
JSON-B 1.0
Standalone
Context Propagation 1.0
Reactive Streams Operators 1.0
Outside umbrella
Reactive Messaging 1.0
GraphQL 1.0
Rest Client 1.4 - Updates
7
Config 1.4 - Updates
API/SPI Changes
Spec Changes
Other Changes
8
Fault Tolerance 2.1 - Updates
API/SPI Changes
Functional Changes
Specification Changes
Other changes
9
Metrics 2.3 - Updates
API/SPI Changes
Functional Changes
Specification Changes
TCK enhancement
10
Health 2.2 - Updates
API/SPI Changes
Miscellaneous
11
Eclipse MicroProfile 3.3 - release content
12
MicroProfile Reactive Capabilities
MicroProfile Reactive Streams Operators
A set of operators to create new reactive streams, process the transiting data and consume them with ease
MicroProfile Reactive Messaging
Defines a development model for declaring CDI beans producing, consuming and processing messages. It relies on Reactive Streams Operators and CDI
MicroProfile Context Propagation
APIs for propagating contexts across units of work that are thread-agnostic
13
Check it out and send us your feedback!
14
Roadmap / Futures
15
Roadmap items
16
Get Involved!
17
Eclipse MicroProfile
18
Backup
19
Eclipse MicroProfile 3.2 Released!
On November 4, 2019, MicroProfile 3.2 was released. Offered in the release:
Other news:
Eclipse MicroProfile 3.2 (Nov 2019)
21
MicroProfile 3.2
JAX-RS 2.1
JSON-P 1.1
CDI 2.0
Config 1.3
Fault�Tolerance 2.0
JWT�Propagation 1.1
Health 2.1
Metrics 2.2
Open Tracing 1.3
Open API 1.1
= Updated
= No change from last release (MicroProfile 3.1)
= New
Rest Client 1.3
JSON-B 1.0
Standalone
Context Propagation 1.0
Reactive Streams Operators 1.0
Outside umbrella
Reactive Messaging 1.0
Metrics 2.2 - Updates
Highlight of update:
22
Health 2.1 - Updates
Highlight of updates:
23
Eclipse MicroProfile 3.2 - release content
24
MicroProfile Reactive Capabilities
MicroProfile Reactive Streams Operators
A set of operators to create new reactive streams, process the transiting data and consume them with ease
MicroProfile Reactive Messaging
Defines a development model for declaring CDI beans producing, consuming and processing messages. It relies on Reactive Streams Operators and CDI
MicroProfile Context Propagation
APIs for propagating contexts across units of work that are thread-agnostic
25
Check it out and send us your feedback!
26
Eclipse MicroProfile 3.1 Released!
On October 9, 2019, MicroProfile 3.1 was released. Offered in the release:
Other news:
Eclipse MicroProfile 3.1 (Oct 2019)
28
MicroProfile 3.1
JAX-RS 2.1
JSON-P 1.1
CDI 2.0
Config 1.3
Fault�Tolerance 2.0
JWT�Propagation 1.1
Health 2.1
Metrics 2.1
Open Tracing 1.3
Open API 1.1
= Updated
= No change from last release (MicroProfile 3.0)
= New
Rest Client 1.3
JSON-B 1.0
Standalone
Context Propagation 1.0
Reactive Streams Operators 1.0
Outside umbrella
Reactive Messaging 1.0
Metrics 2.1 - Updates
Highlight of updates:
29
Health 2.1 - Updates
Highlight of updates:
30
Eclipse MicroProfile 3.1 - release content
31
MicroProfile Reactive Capabilities
MicroProfile Reactive Streams Operators
A set of operators to create new reactive streams, process the transiting data and consume them with ease
MicroProfile Reactive Messaging
Defines a development model for declaring CDI beans producing, consuming and processing messages. It relies on Reactive Streams Operators and CDI
MicroProfile Context Propagation
APIs for propagating contexts across units of work that are thread-agnostic
32
Check it out and send us your feedback!
33
Eclipse MicroProfile 3.0 Released!
On June 11, 2019, MicroProfile 3.0 was released. Offered in the release:
Other news:
Eclipse MicroProfile 3.0 (Jun 2019)
35
MicroProfile 3.0
JAX-RS 2.1
JSON-P 1.1
CDI 2.0
Config 1.3
Fault�Tolerance 2.0
JWT�Propagation 1.1
Health�Check 2.0
Metrics 2.0
Open Tracing 1.3
Open API 1.1
= Updated
= No change from last release (MicroProfile 2.2)
= New
Rest Client 1.3
JSON-B 1.0
Health Check 2.0 - Updates
Updates:
36
Metrics 2.0 - Updates
Highlight of updates:
37
Rest Client 1.3 - Updates
Updates:
38
Eclipse MicroProfile 3.0 - release content
39
40
Eclipse MicroProfile 2.2 Released!
On February 12, 2019, MicroProfile 2.2 was released. Offered in the release:
Other news:
Eclipse MicroProfile 2.2 (Feb 2019)
42
MicroProfile 2.2
JAX-RS 2.1
JSON-P 1.1
CDI 2.0
Config 1.3
Fault�Tolerance 2.0
JWT�Propagation 1.1
Health�Check 1.0
Metrics 1.1
Open Tracing 1.3
Open API 1.1
= Updated
= No change from last release (MicroProfile 2.1)
= New
Rest Client 1.2
JSON-B 1.0
Open Tracing 1.3 - Updates
Updates from 1.3:
Updates from 1.2.1:
43
Open API 1.1 - Updates
Updates for 1.1.1:
Updates for 1.1:
44
Rest Client 1.2 - Updates
Updates:
45
Fault Tolerance 2.0 - Updates
Major version update to 2.0 due to moving up to CDI 2.0 (Java EE 8). This spec is no longer compatible with Java EE 7. Updates:
46
Eclipse MicroProfile 2.2 - release content
47
Stand-alone releases - outside platform
48
Other news in this release window
49
Roadmap - releases outside platform
50
Eclipse MicroProfile 2.1 (Oct, 2018)
51
MicroProfile 2.1
JAX-RS 2.1
JSON-P 1.1
CDI 2.0
Config 1.3
Fault�Tolerance 1.1
JWT�Propagation 1.1
Health�Check 1.0
Metrics 1.1
Open Tracing 1.2
Open API 1.0
= Updated
= No change from last release (MicroProfile 2.0)
= New
Rest Client 1.1
JSON-B 1.0
Open Tracing 1.2 - Updates
Updates:
52
Eclipse MicroProfile 2.1 - release content
53
Eclipse MicroProfile 2.1 Released!
On October 19, 2018, MicroProfile 2.1 was released. Offered in the release:
Other news:
Eclipse MicroProfile 2.0 (Jun, 2018)
55
MicroProfile 2.0
JAX-RS 2.1
JSON-P 1.1
CDI 2.0
Config 1.3
Fault�Tolerance 1.1
JWT�Propagation 1.1
Health�Check 1.0
Metrics 1.1
Open Tracing 1.1
Open API 1.0
= Updated
= No change from last release (MicroProfile 1.4)
= New
Rest Client 1.1
JSON-B 1.0
Eclipse MicroProfile 2.0 - release content
56
Eclipse MicroProfile 1.4 (Jun, 2018)
57
MicroProfile 1.4
JAX-RS 2.0
JSON-P 1.0
CDI 1.2
Config 1.3
Fault�Tolerance 1.1
JWT�Propagation 1.1
Health�Check 1.0
Metrics 1.1
Open Tracing 1.1
Open API 1.0
= Updated
= No change from last release
= New
Rest Client 1.1
Configuration 1.3 - Updates
Functional Changes
Specification Changes
Other Changes
58
JWT Propagation 1.1 - Updates
The focus of this release was to add support for configuring the public key and issuer needed for verification of the MP-JWT using MicroProfile Config. The new MicroProfile Config properties are:
59
Fault Tolerance 1.1 - Updates
60
Open Tracing 1.1 - Updates
New features:
61
Rest Client 1.1 - Updates
Key features:
62
Eclipse MicroProfile 1.4 - release content
63
Eclipse MicroProfile 1.3 (Jan, 2018)
64
MicroProfile 1.3
JAX-RS 2.0
JSON-P 1.0
CDI 1.2
Config 1.2
Fault�Tolerance 1.0
JWT�Propagation 1.0
Health�Check 1.0
Metrics 1.1
Open Tracing 1.0
Open API 1.0
= Updated
= No change from last release
= New
Rest Client 1.0
Configuration 1.2 - Updates
New features:
65
Metrics 1.1 - Updates
New features:
66
OpenAPI
Management of microservices in an MSA can become unwieldy as the number of microservices increases. Microservices can be managed via their APIs. Management, security, load balancing, and throttling are policies that can be applied to APIs fronting microservices. OpenAPI provides Java interfaces and programming models which allow Java developers to natively produce OpenAPI v3 documents from their JAX-RS applications.
67
OpenAPI 1.0
68
OpenTracing
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.
69
OpenTracing 1.0
70
REST Client
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. Several JAX-RS implementations support the ability to take an interface definition and create a JAX-RS client from it (JBoss RestEasy, Apache CXF) as well as being supported by a number of service providers (Wildfly Swarm, OpenFeign). MicroProfile Rest Client API provides a type-safe approach to invoke RESTful services over HTTP in a consistent and easy-to-reuse fashion.
71
Rest Client 1.0
72
String apiUrl = "http://localhost:9080/movieReviewService";�MovieReviewService reviewSvc = � RestClientBuilder.newBuilder()� .baseUrl(apiUrl)� .build(MovieReviewService.class);��Review review = new Review(3 /*stars*/,"Good Movie.");��reviewSvc.submitReview( movieId, review );
Eclipse MicroProfile 1.3 - release content
73
Eclipse MicroProfile 1.2 (Sep, 2017)
74
MicroProfile 1.2
= Updated
= No change from last release
JAX-RS 2.0
JSON-P 1.0
CDI 1.2
Config 1.1
Fault�Tolerance 1.0
JWT�Propagation 1.0
Health�Check 1.0
Metrics 1.0
= New
Configuration 1.1 - Updates
75
Health Check
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
76
Health Check 1.0 - Goals
77
Metrics
To ensure reliable operation of software it is necessary to monitor essential system parameters. Metrics adds well-known monitoring endpoints and metrics for each process
78
Metric Registry
Required Base metrics
Application metrics
Vendor-specific metrics
Metrics 1.1 - Updates
New features:
79
Fault Tolerance
Fault tolerance is about leveraging different strategies to guide the execution and result of some logic. Retry policies, bulkheads, and circuit breakers are popular concepts in this area. They dictate whether and when executions should take place, and fallbacks offer an alternative result when an execution does not complete successfully
80
Fault Tolerance 1.0 - Influence and goal
Multiple projects directly influenced this proposal and acted as basis for this API, such as:
Goal:
81
JWT Propagation
The security requirements that involve microservice architectures are strongly related with RESTful Security. In a RESTful architecture style, services are usually stateless and any security state associated with a client is sent to the target service on every request in order to allow services to re-create a security context for the caller and perform both authentication and authorization checks
82
JWT Propagation 1.0 - Influence and goals
Multiple projects/standards directly influenced this proposal and acted as basis for this API, such as:
Goal:
83
Eclipse MicroProfile 1.2 - release content
84
Eclipse MicroProfile 1.1 (Aug, 2017)
85
MicroProfile 1.1
= New
= No change from last release
JAX-RS 2.0
JSON-P 1.0
CDI 1.2
Config 1.0
Configuration
Applications need to be configured based on a running environment. It must be possible to modify configuration data from outside an application so that the application itself does not need to be repackaged
86
Dev
Test
Prod
Configuration 1.0 - Influence
Multiple projects directly influenced this proposal and acted as basis for this API, such as:
87
Eclipse MicroProfile 1.1 - release content
88
MicroProfile 1.0 (Sep, 2016)
89
MicroProfile 1.0
JAX-RS 2.0
JSON-P 1.0
CDI 1.2