Microservices Tracing With Spring Cloud and Zipkin @CybercomDEV
Lightweight Enterprise Java · • Microservices! • What is ... • OpenTracing is a distributed...
Transcript of Lightweight Enterprise Java · • Microservices! • What is ... • OpenTracing is a distributed...
![Page 1: Lightweight Enterprise Java · • Microservices! • What is ... • OpenTracing is a distributed tracing standard for applicaons ... Zipkin Demo. 2019 #devdays2019 @JLouisMonteiro](https://reader033.fdocuments.us/reader033/viewer/2022043002/5f80362268e70a28a8418971/html5/thumbnails/1.jpg)
Dev
Day
s 19
#RESTSecurity @dblevins @tomitribe#devdays2019 @JLouisMonteiro @tomitribe
Lightweight Enterprise JavaWith MicroProfile
Jean-Louis Monteiro Tomitribe
![Page 2: Lightweight Enterprise Java · • Microservices! • What is ... • OpenTracing is a distributed tracing standard for applicaons ... Zipkin Demo. 2019 #devdays2019 @JLouisMonteiro](https://reader033.fdocuments.us/reader033/viewer/2022043002/5f80362268e70a28a8418971/html5/thumbnails/2.jpg)
@dblevins @tomitribe
Dev
Day
s 201
9
#devdays2019 @JLouisMonteiro @tomitribe
Agenda• Microservices!
• What is MicroProfile?
• Specs Overview
• Demos
• MicroProfile Future
![Page 3: Lightweight Enterprise Java · • Microservices! • What is ... • OpenTracing is a distributed tracing standard for applicaons ... Zipkin Demo. 2019 #devdays2019 @JLouisMonteiro](https://reader033.fdocuments.us/reader033/viewer/2022043002/5f80362268e70a28a8418971/html5/thumbnails/3.jpg)
Dev
Day
s 201
9
#devdays2019 @JLouisMonteiro @tomitribe
Microservices Anyone?
![Page 4: Lightweight Enterprise Java · • Microservices! • What is ... • OpenTracing is a distributed tracing standard for applicaons ... Zipkin Demo. 2019 #devdays2019 @JLouisMonteiro](https://reader033.fdocuments.us/reader033/viewer/2022043002/5f80362268e70a28a8418971/html5/thumbnails/4.jpg)
@dblevins @tomitribe
Dev
Day
s 201
9
#devdays2019 @JLouisMonteiro @tomitribe
What do people mean by Microservices?• “Small autonomous services working together”
• “Small enough but not too small”
• “Can be wriCen in 2 weeks”
• “Single responsibility principle”
• “Domain-driven design”
![Page 5: Lightweight Enterprise Java · • Microservices! • What is ... • OpenTracing is a distributed tracing standard for applicaons ... Zipkin Demo. 2019 #devdays2019 @JLouisMonteiro](https://reader033.fdocuments.us/reader033/viewer/2022043002/5f80362268e70a28a8418971/html5/thumbnails/5.jpg)
Dev
Day
s 201
9
#devdays2019 @JLouisMonteiro @tomitribe
What do others think?
![Page 6: Lightweight Enterprise Java · • Microservices! • What is ... • OpenTracing is a distributed tracing standard for applicaons ... Zipkin Demo. 2019 #devdays2019 @JLouisMonteiro](https://reader033.fdocuments.us/reader033/viewer/2022043002/5f80362268e70a28a8418971/html5/thumbnails/6.jpg)
Dev
Day
s 201
9
#devdays2019 @JLouisMonteiro @tomitribe
What do others think?
![Page 7: Lightweight Enterprise Java · • Microservices! • What is ... • OpenTracing is a distributed tracing standard for applicaons ... Zipkin Demo. 2019 #devdays2019 @JLouisMonteiro](https://reader033.fdocuments.us/reader033/viewer/2022043002/5f80362268e70a28a8418971/html5/thumbnails/7.jpg)
Dev
Day
s 201
9
#devdays2019 @JLouisMonteiro @tomitribe
What do others think?
![Page 8: Lightweight Enterprise Java · • Microservices! • What is ... • OpenTracing is a distributed tracing standard for applicaons ... Zipkin Demo. 2019 #devdays2019 @JLouisMonteiro](https://reader033.fdocuments.us/reader033/viewer/2022043002/5f80362268e70a28a8418971/html5/thumbnails/8.jpg)
@dblevins @tomitribe
Dev
Day
s 201
9
#devdays2019 @JLouisMonteiro @tomitribe
Why Microservices?• Deliver new features quicker
• Smaller, agile teams
• Scale services independently
• Cloud
![Page 9: Lightweight Enterprise Java · • Microservices! • What is ... • OpenTracing is a distributed tracing standard for applicaons ... Zipkin Demo. 2019 #devdays2019 @JLouisMonteiro](https://reader033.fdocuments.us/reader033/viewer/2022043002/5f80362268e70a28a8418971/html5/thumbnails/9.jpg)
@dblevins @tomitribe
Dev
Day
s 201
9
#devdays2019 @JLouisMonteiro @tomitribe
Microservices Challenges• Scalability
• Cost ReducLon
• Resilience
• Monitoring
• Security
![Page 10: Lightweight Enterprise Java · • Microservices! • What is ... • OpenTracing is a distributed tracing standard for applicaons ... Zipkin Demo. 2019 #devdays2019 @JLouisMonteiro](https://reader033.fdocuments.us/reader033/viewer/2022043002/5f80362268e70a28a8418971/html5/thumbnails/10.jpg)
@dblevins @tomitribe
Dev
Day
s 201
9
#devdays2019 @JLouisMonteiro @tomitribe
What is MicroProfile?• hCp://microprofile.io/
• Enterprise Java for Microservices
• Open Source (Eclipse)
• 3 years old plaUorm
![Page 11: Lightweight Enterprise Java · • Microservices! • What is ... • OpenTracing is a distributed tracing standard for applicaons ... Zipkin Demo. 2019 #devdays2019 @JLouisMonteiro](https://reader033.fdocuments.us/reader033/viewer/2022043002/5f80362268e70a28a8418971/html5/thumbnails/11.jpg)
@dblevins @tomitribe
Dev
Day
s 201
9
#devdays2019 @JLouisMonteiro @tomitribe
What is MicroProfile?• IniLal version 1.0 with CDI, JAX-RS, JSON-P in Sep 2016
• ApplicaLon portability across runLmes
• Currently at version 2.2 since Feb 2019
• ConfiguraLon, Fault Tolerance, JWT PropagaLon, Health Check, Metrics, Open Tracing, Open API and REST Client
• ReacLve Streams released standalone
![Page 12: Lightweight Enterprise Java · • Microservices! • What is ... • OpenTracing is a distributed tracing standard for applicaons ... Zipkin Demo. 2019 #devdays2019 @JLouisMonteiro](https://reader033.fdocuments.us/reader033/viewer/2022043002/5f80362268e70a28a8418971/html5/thumbnails/12.jpg)
Dev
Day
s 201
9
#devdays2019 @JLouisMonteiro @tomitribe
What is MicroProfile?
![Page 13: Lightweight Enterprise Java · • Microservices! • What is ... • OpenTracing is a distributed tracing standard for applicaons ... Zipkin Demo. 2019 #devdays2019 @JLouisMonteiro](https://reader033.fdocuments.us/reader033/viewer/2022043002/5f80362268e70a28a8418971/html5/thumbnails/13.jpg)
@dblevins @tomitribe
Dev
Day
s 201
9
#devdays2019 @JLouisMonteiro @tomitribe
Why MicroProfile?• Slowdown in Java EE innovaLon
• NegaLve percepLon towards the technology
• Not prepared for Microservices development
![Page 14: Lightweight Enterprise Java · • Microservices! • What is ... • OpenTracing is a distributed tracing standard for applicaons ... Zipkin Demo. 2019 #devdays2019 @JLouisMonteiro](https://reader033.fdocuments.us/reader033/viewer/2022043002/5f80362268e70a28a8418971/html5/thumbnails/14.jpg)
Dev
Day
s 201
9
#devdays2019 @JLouisMonteiro @tomitribe
Why MicroProfile?
0
10
20
30
40
EE 5 Specs (2006) EE 6 Specs (2009) EE 7 Specs (2013) EE 8 Specs (2017)
3937
30
24
![Page 15: Lightweight Enterprise Java · • Microservices! • What is ... • OpenTracing is a distributed tracing standard for applicaons ... Zipkin Demo. 2019 #devdays2019 @JLouisMonteiro](https://reader033.fdocuments.us/reader033/viewer/2022043002/5f80362268e70a28a8418971/html5/thumbnails/15.jpg)
@dblevins @tomitribe
Dev
Day
s 201
9
#devdays2019 @JLouisMonteiro @tomitribe
Why MicroProfile?• A set of “standards” were required to offer guidance in building
Microservices in Java
• These need to evolve very quickly to adjust to the fast moving Microservices world
• A community of individuals, organisaLons and vendors collaboraLng to make this a reality
![Page 16: Lightweight Enterprise Java · • Microservices! • What is ... • OpenTracing is a distributed tracing standard for applicaons ... Zipkin Demo. 2019 #devdays2019 @JLouisMonteiro](https://reader033.fdocuments.us/reader033/viewer/2022043002/5f80362268e70a28a8418971/html5/thumbnails/16.jpg)
Dev
Day
s 201
9
#devdays2019 @JLouisMonteiro @tomitribe
MicroProfile != EE (or Jakarta EE)
![Page 17: Lightweight Enterprise Java · • Microservices! • What is ... • OpenTracing is a distributed tracing standard for applicaons ... Zipkin Demo. 2019 #devdays2019 @JLouisMonteiro](https://reader033.fdocuments.us/reader033/viewer/2022043002/5f80362268e70a28a8418971/html5/thumbnails/17.jpg)
Dev
Day
s 201
9
#devdays2019 @JLouisMonteiro @tomitribe
Who is involved in MicroProfile?
![Page 18: Lightweight Enterprise Java · • Microservices! • What is ... • OpenTracing is a distributed tracing standard for applicaons ... Zipkin Demo. 2019 #devdays2019 @JLouisMonteiro](https://reader033.fdocuments.us/reader033/viewer/2022043002/5f80362268e70a28a8418971/html5/thumbnails/18.jpg)
Dev
Day
s 201
9
#devdays2019 @JLouisMonteiro @tomitribe
MicroProfile Implementations
![Page 19: Lightweight Enterprise Java · • Microservices! • What is ... • OpenTracing is a distributed tracing standard for applicaons ... Zipkin Demo. 2019 #devdays2019 @JLouisMonteiro](https://reader033.fdocuments.us/reader033/viewer/2022043002/5f80362268e70a28a8418971/html5/thumbnails/19.jpg)
Dev
Day
s 201
9
#devdays2019 @JLouisMonteiro @tomitribe
My first MicroProfile App
![Page 20: Lightweight Enterprise Java · • Microservices! • What is ... • OpenTracing is a distributed tracing standard for applicaons ... Zipkin Demo. 2019 #devdays2019 @JLouisMonteiro](https://reader033.fdocuments.us/reader033/viewer/2022043002/5f80362268e70a28a8418971/html5/thumbnails/20.jpg)
@dblevins @tomitribe
Dev
Day
s 201
9
#devdays2019 @JLouisMonteiro @tomitribe
CDI• Contexts and Dependency InjecLon
• Bean Lifecycle and Typesafe InjecLon
• Producers
• Interceptors
• Observers
![Page 21: Lightweight Enterprise Java · • Microservices! • What is ... • OpenTracing is a distributed tracing standard for applicaons ... Zipkin Demo. 2019 #devdays2019 @JLouisMonteiro](https://reader033.fdocuments.us/reader033/viewer/2022043002/5f80362268e70a28a8418971/html5/thumbnails/21.jpg)
@dblevins @tomitribe
Dev
Day
s 201
9
#devdays2019 @JLouisMonteiro @tomitribe
JAX-RS• RESTful Web Services
• AnnotaLon based
• HTTP Centric
![Page 22: Lightweight Enterprise Java · • Microservices! • What is ... • OpenTracing is a distributed tracing standard for applicaons ... Zipkin Demo. 2019 #devdays2019 @JLouisMonteiro](https://reader033.fdocuments.us/reader033/viewer/2022043002/5f80362268e70a28a8418971/html5/thumbnails/22.jpg)
@dblevins @tomitribe
Dev
Day
s 201
9
#devdays2019 @JLouisMonteiro @tomitribe
JSON-P• Parse, Generate Transform and Query JSON
• Streaming API
• Object Model API
![Page 23: Lightweight Enterprise Java · • Microservices! • What is ... • OpenTracing is a distributed tracing standard for applicaons ... Zipkin Demo. 2019 #devdays2019 @JLouisMonteiro](https://reader033.fdocuments.us/reader033/viewer/2022043002/5f80362268e70a28a8418971/html5/thumbnails/23.jpg)
Dev
Day
s 201
9
#devdays2019 @JLouisMonteiro @tomitribe
Putting it all together@ApplicationScoped @Path("books") public class BookResource { @Inject private BookBean bookBean;
@GET @Path("{id}") public Response findById(@PathParam("id") final Long id) { final Book book = bookBean.find(id); final JsonObjectBuilder builder = Json.createObjectBuilder() .add(“id", book.getId()) .add("name", book.getTitle());
return Response.ok(builder.build().toString()).build();
} }
![Page 24: Lightweight Enterprise Java · • Microservices! • What is ... • OpenTracing is a distributed tracing standard for applicaons ... Zipkin Demo. 2019 #devdays2019 @JLouisMonteiro](https://reader033.fdocuments.us/reader033/viewer/2022043002/5f80362268e70a28a8418971/html5/thumbnails/24.jpg)
Dev
Day
s 201
9
#devdays2019 @JLouisMonteiro @tomitribe
Evolving your MicroProfile App
![Page 25: Lightweight Enterprise Java · • Microservices! • What is ... • OpenTracing is a distributed tracing standard for applicaons ... Zipkin Demo. 2019 #devdays2019 @JLouisMonteiro](https://reader033.fdocuments.us/reader033/viewer/2022043002/5f80362268e70a28a8418971/html5/thumbnails/25.jpg)
Dev
Day
s 201
9
#devdays2019 @JLouisMonteiro @tomitribe
number-api
book-api
Architecture
![Page 26: Lightweight Enterprise Java · • Microservices! • What is ... • OpenTracing is a distributed tracing standard for applicaons ... Zipkin Demo. 2019 #devdays2019 @JLouisMonteiro](https://reader033.fdocuments.us/reader033/viewer/2022043002/5f80362268e70a28a8418971/html5/thumbnails/26.jpg)
@dblevins @tomitribe
Dev
Day
s 201
9
#devdays2019 @JLouisMonteiro @tomitribe
Runtime• Raspberry PI v3 (HypriotOS)
• Package everything with Docker
• Local Docker Registry
• Push Docker Images with Ansible
![Page 27: Lightweight Enterprise Java · • Microservices! • What is ... • OpenTracing is a distributed tracing standard for applicaons ... Zipkin Demo. 2019 #devdays2019 @JLouisMonteiro](https://reader033.fdocuments.us/reader033/viewer/2022043002/5f80362268e70a28a8418971/html5/thumbnails/27.jpg)
Dev
Day
s 201
9
#devdays2019 @JLouisMonteiro @tomitribe
Deployment
docker-repo Router
Microservices
![Page 28: Lightweight Enterprise Java · • Microservices! • What is ... • OpenTracing is a distributed tracing standard for applicaons ... Zipkin Demo. 2019 #devdays2019 @JLouisMonteiro](https://reader033.fdocuments.us/reader033/viewer/2022043002/5f80362268e70a28a8418971/html5/thumbnails/28.jpg)
Dev
Day
s 201
9
#devdays2019 @JLouisMonteiro @tomitribe
MicroProfile Configuration
![Page 29: Lightweight Enterprise Java · • Microservices! • What is ... • OpenTracing is a distributed tracing standard for applicaons ... Zipkin Demo. 2019 #devdays2019 @JLouisMonteiro](https://reader033.fdocuments.us/reader033/viewer/2022043002/5f80362268e70a28a8418971/html5/thumbnails/29.jpg)
@dblevins @tomitribe
Dev
Day
s 201
9
#devdays2019 @JLouisMonteiro @tomitribe
Configuration• ApplicaLons need configuraLon based on their running
environment
• It must be possible to change configuraLon without repacking the applicaLon
• Based on DeltaSpike Config, Apache Tamaya and Sabot
![Page 30: Lightweight Enterprise Java · • Microservices! • What is ... • OpenTracing is a distributed tracing standard for applicaons ... Zipkin Demo. 2019 #devdays2019 @JLouisMonteiro](https://reader033.fdocuments.us/reader033/viewer/2022043002/5f80362268e70a28a8418971/html5/thumbnails/30.jpg)
@dblevins @tomitribe
Dev
Day
s 201
9
#devdays2019 @JLouisMonteiro @tomitribe
Configuration• Standalone or in a CDI Container
• Default Values
• Supports the most common Java Type (including OpLonal)
![Page 31: Lightweight Enterprise Java · • Microservices! • What is ... • OpenTracing is a distributed tracing standard for applicaons ... Zipkin Demo. 2019 #devdays2019 @JLouisMonteiro](https://reader033.fdocuments.us/reader033/viewer/2022043002/5f80362268e70a28a8418971/html5/thumbnails/31.jpg)
Dev
Day
s 201
9
#devdays2019 @JLouisMonteiro @tomitribe
Configuration
@Inject@ConfigProperty(name="NUMBER_TARGET_API", defaultValue=“http://localhost:8081/number-api/numbers/generate")
private String numberApiTargetUrl;
![Page 32: Lightweight Enterprise Java · • Microservices! • What is ... • OpenTracing is a distributed tracing standard for applicaons ... Zipkin Demo. 2019 #devdays2019 @JLouisMonteiro](https://reader033.fdocuments.us/reader033/viewer/2022043002/5f80362268e70a28a8418971/html5/thumbnails/32.jpg)
Dev
Day
s 201
9
#devdays2019 @JLouisMonteiro @tomitribe
Configuration
Config config = ConfigProvider.getConfig();
final String url = config.getValue("NUMBER_TARGET_API",
String.class);
![Page 33: Lightweight Enterprise Java · • Microservices! • What is ... • OpenTracing is a distributed tracing standard for applicaons ... Zipkin Demo. 2019 #devdays2019 @JLouisMonteiro](https://reader033.fdocuments.us/reader033/viewer/2022043002/5f80362268e70a28a8418971/html5/thumbnails/33.jpg)
@dblevins @tomitribe
Dev
Day
s 201
9
#devdays2019 @JLouisMonteiro @tomitribe
Config Sources• META-INF/microprofile-config.properLes
• System properLes
• Environment variables
• Pluggable to allow custom config sources and providers through the ServiceLoader mechanism
![Page 34: Lightweight Enterprise Java · • Microservices! • What is ... • OpenTracing is a distributed tracing standard for applicaons ... Zipkin Demo. 2019 #devdays2019 @JLouisMonteiro](https://reader033.fdocuments.us/reader033/viewer/2022043002/5f80362268e70a28a8418971/html5/thumbnails/34.jpg)
Dev
Day
s 201
9
#devdays2019 @JLouisMonteiro @tomitribe
MicroProfile Fault Tolerance
![Page 35: Lightweight Enterprise Java · • Microservices! • What is ... • OpenTracing is a distributed tracing standard for applicaons ... Zipkin Demo. 2019 #devdays2019 @JLouisMonteiro](https://reader033.fdocuments.us/reader033/viewer/2022043002/5f80362268e70a28a8418971/html5/thumbnails/35.jpg)
@dblevins @tomitribe
Dev
Day
s 201
9
#devdays2019 @JLouisMonteiro @tomitribe
Fault Tolerance• Different strategies to guide the execuLon and result of some
logic
• Inspired by Hystrix and Failsafe
• Supports Sync and Async execuLon
![Page 36: Lightweight Enterprise Java · • Microservices! • What is ... • OpenTracing is a distributed tracing standard for applicaons ... Zipkin Demo. 2019 #devdays2019 @JLouisMonteiro](https://reader033.fdocuments.us/reader033/viewer/2022043002/5f80362268e70a28a8418971/html5/thumbnails/36.jpg)
@dblevins @tomitribe
Dev
Day
s 201
9
#devdays2019 @JLouisMonteiro @tomitribe
Fault Tolerance• Depends on CDI
• Interceptor bindings
• Business method invocaLon
• Integrates with MP Config and Metrics
![Page 37: Lightweight Enterprise Java · • Microservices! • What is ... • OpenTracing is a distributed tracing standard for applicaons ... Zipkin Demo. 2019 #devdays2019 @JLouisMonteiro](https://reader033.fdocuments.us/reader033/viewer/2022043002/5f80362268e70a28a8418971/html5/thumbnails/37.jpg)
@dblevins @tomitribe
Dev
Day
s 201
9
#devdays2019 @JLouisMonteiro @tomitribe
Timeout• Prevents the execuLon from waiLng forever
• Fail the execuLon if the Lmeout is hit
• Useful when calling other services
![Page 38: Lightweight Enterprise Java · • Microservices! • What is ... • OpenTracing is a distributed tracing standard for applicaons ... Zipkin Demo. 2019 #devdays2019 @JLouisMonteiro](https://reader033.fdocuments.us/reader033/viewer/2022043002/5f80362268e70a28a8418971/html5/thumbnails/38.jpg)
@dblevins @tomitribe
Dev
Day
s 201
9
#devdays2019 @JLouisMonteiro @tomitribe
Retry• Invoke the same operaLon again
• Specify criteria on when to retry
• Recover from network glitchs
![Page 39: Lightweight Enterprise Java · • Microservices! • What is ... • OpenTracing is a distributed tracing standard for applicaons ... Zipkin Demo. 2019 #devdays2019 @JLouisMonteiro](https://reader033.fdocuments.us/reader033/viewer/2022043002/5f80362268e70a28a8418971/html5/thumbnails/39.jpg)
@dblevins @tomitribe
Dev
Day
s 201
9
#devdays2019 @JLouisMonteiro @tomitribe
Fallback• Invoked when the original execuLon fails
• Specify when it fails
• Fallback to some other execuLon to prevent failures
![Page 40: Lightweight Enterprise Java · • Microservices! • What is ... • OpenTracing is a distributed tracing standard for applicaons ... Zipkin Demo. 2019 #devdays2019 @JLouisMonteiro](https://reader033.fdocuments.us/reader033/viewer/2022043002/5f80362268e70a28a8418971/html5/thumbnails/40.jpg)
@dblevins @tomitribe
Dev
Day
s 201
9
#devdays2019 @JLouisMonteiro @tomitribe
Circuit Breaker• Prevent repeated failures
• Fail fast
• Can be open, half-open or closed
• Protect services
![Page 41: Lightweight Enterprise Java · • Microservices! • What is ... • OpenTracing is a distributed tracing standard for applicaons ... Zipkin Demo. 2019 #devdays2019 @JLouisMonteiro](https://reader033.fdocuments.us/reader033/viewer/2022043002/5f80362268e70a28a8418971/html5/thumbnails/41.jpg)
@dblevins @tomitribe
Dev
Day
s 201
9
#devdays2019 @JLouisMonteiro @tomitribe
Bulkhead• Limit number of concurrent requests
• Access from mulLple contexts
• Prevent failures from cascading
![Page 42: Lightweight Enterprise Java · • Microservices! • What is ... • OpenTracing is a distributed tracing standard for applicaons ... Zipkin Demo. 2019 #devdays2019 @JLouisMonteiro](https://reader033.fdocuments.us/reader033/viewer/2022043002/5f80362268e70a28a8418971/html5/thumbnails/42.jpg)
Dev
Day
s 201
9
#devdays2019 @JLouisMonteiro @tomitribe
MicroProfile Healthchecks
![Page 43: Lightweight Enterprise Java · • Microservices! • What is ... • OpenTracing is a distributed tracing standard for applicaons ... Zipkin Demo. 2019 #devdays2019 @JLouisMonteiro](https://reader033.fdocuments.us/reader033/viewer/2022043002/5f80362268e70a28a8418971/html5/thumbnails/43.jpg)
@dblevins @tomitribe
Dev
Day
s 201
9
#devdays2019 @JLouisMonteiro @tomitribe
Healthchecks• Probe the state of a computer node
• Primary target cloud infrastructure
• Automated processes to maintain the state of nodes
![Page 44: Lightweight Enterprise Java · • Microservices! • What is ... • OpenTracing is a distributed tracing standard for applicaons ... Zipkin Demo. 2019 #devdays2019 @JLouisMonteiro](https://reader033.fdocuments.us/reader033/viewer/2022043002/5f80362268e70a28a8418971/html5/thumbnails/44.jpg)
@dblevins @tomitribe
Dev
Day
s 201
9
#devdays2019 @JLouisMonteiro @tomitribe
Healthchecks• Simple API to specify health status
• /health JAX-RS endpoint reporLng server health
• Response status indicates if the health check passed
• Payload can include more detail
![Page 45: Lightweight Enterprise Java · • Microservices! • What is ... • OpenTracing is a distributed tracing standard for applicaons ... Zipkin Demo. 2019 #devdays2019 @JLouisMonteiro](https://reader033.fdocuments.us/reader033/viewer/2022043002/5f80362268e70a28a8418971/html5/thumbnails/45.jpg)
Dev
Day
s 201
9
#devdays2019 @JLouisMonteiro @tomitribe
Healthchecks
@Health@ApplicationScopedpublic class CheckDiskSpace implements HealthCheck { public HealthCheckResponse call() { }}
![Page 46: Lightweight Enterprise Java · • Microservices! • What is ... • OpenTracing is a distributed tracing standard for applicaons ... Zipkin Demo. 2019 #devdays2019 @JLouisMonteiro](https://reader033.fdocuments.us/reader033/viewer/2022043002/5f80362268e70a28a8418971/html5/thumbnails/46.jpg)
Dev
Day
s 201
9
#devdays2019 @JLouisMonteiro @tomitribe
HealthchecksGET /health{ "outcome": "UP", "checks": [{ "name": "diskspace", "state": "UP", "data": { "key": "freebytes", "freebytes": "126000000000" } }]}
![Page 47: Lightweight Enterprise Java · • Microservices! • What is ... • OpenTracing is a distributed tracing standard for applicaons ... Zipkin Demo. 2019 #devdays2019 @JLouisMonteiro](https://reader033.fdocuments.us/reader033/viewer/2022043002/5f80362268e70a28a8418971/html5/thumbnails/47.jpg)
Dev
Day
s 201
9
#devdays2019 @JLouisMonteiro @tomitribe
Healthcheck Demo
![Page 48: Lightweight Enterprise Java · • Microservices! • What is ... • OpenTracing is a distributed tracing standard for applicaons ... Zipkin Demo. 2019 #devdays2019 @JLouisMonteiro](https://reader033.fdocuments.us/reader033/viewer/2022043002/5f80362268e70a28a8418971/html5/thumbnails/48.jpg)
Dev
Day
s 201
9
#devdays2019 @JLouisMonteiro @tomitribe
MicroProfile Metrics
![Page 49: Lightweight Enterprise Java · • Microservices! • What is ... • OpenTracing is a distributed tracing standard for applicaons ... Zipkin Demo. 2019 #devdays2019 @JLouisMonteiro](https://reader033.fdocuments.us/reader033/viewer/2022043002/5f80362268e70a28a8418971/html5/thumbnails/49.jpg)
@dblevins @tomitribe
Dev
Day
s 201
9
#devdays2019 @JLouisMonteiro @tomitribe
Metrics• Monitor essenLal System Parameters
• Ensure reliable operaLon of soiware
• Monitoring endpoints to collect data
![Page 50: Lightweight Enterprise Java · • Microservices! • What is ... • OpenTracing is a distributed tracing standard for applicaons ... Zipkin Demo. 2019 #devdays2019 @JLouisMonteiro](https://reader033.fdocuments.us/reader033/viewer/2022043002/5f80362268e70a28a8418971/html5/thumbnails/50.jpg)
@dblevins @tomitribe
Dev
Day
s 201
9
#devdays2019 @JLouisMonteiro @tomitribe
Metrics• Accessible via REST interface
• /metrics/base for MP compliant servers
• /metrics/applicaLon for ApplicaLon specific Metrics
• /metrics/vendor for Server specific metrics
• OPTIONS provides metadata, such as Unit of measure
![Page 51: Lightweight Enterprise Java · • Microservices! • What is ... • OpenTracing is a distributed tracing standard for applicaons ... Zipkin Demo. 2019 #devdays2019 @JLouisMonteiro](https://reader033.fdocuments.us/reader033/viewer/2022043002/5f80362268e70a28a8418971/html5/thumbnails/51.jpg)
Dev
Day
s 201
9
#devdays2019 @JLouisMonteiro @tomitribe
GET /metrics/base
{ "thread.count" : 33, "thread.max.count" : 47, "memory.maxHeap" : 3817863211, "memory.usedHeap" : 16859081, "memory.committedHeap" : 64703546}
![Page 52: Lightweight Enterprise Java · • Microservices! • What is ... • OpenTracing is a distributed tracing standard for applicaons ... Zipkin Demo. 2019 #devdays2019 @JLouisMonteiro](https://reader033.fdocuments.us/reader033/viewer/2022043002/5f80362268e70a28a8418971/html5/thumbnails/52.jpg)
Dev
Day
s 201
9
#devdays2019 @JLouisMonteiro @tomitribe
OPTIONS /metrics/base{ "fooVal": { "unit": "milliseconds", "type": "gauge", "description": "The average duration of foo requests during last 5 minutes", "displayName": "Duration of foo", "tags": "app=webshop" }, "barVal": { "unit": "megabytes", "type": "gauge", "tags": "component=backend,app=webshop" }}
![Page 53: Lightweight Enterprise Java · • Microservices! • What is ... • OpenTracing is a distributed tracing standard for applicaons ... Zipkin Demo. 2019 #devdays2019 @JLouisMonteiro](https://reader033.fdocuments.us/reader033/viewer/2022043002/5f80362268e70a28a8418971/html5/thumbnails/53.jpg)
@dblevins @tomitribe
Dev
Day
s 201
9
#devdays2019 @JLouisMonteiro @tomitribe
Metrics• @Counted
• @Metered
• @Timed
• @Gauge
• Histogram
![Page 54: Lightweight Enterprise Java · • Microservices! • What is ... • OpenTracing is a distributed tracing standard for applicaons ... Zipkin Demo. 2019 #devdays2019 @JLouisMonteiro](https://reader033.fdocuments.us/reader033/viewer/2022043002/5f80362268e70a28a8418971/html5/thumbnails/54.jpg)
Dev
Day
s 201
9
#devdays2019 @JLouisMonteiro @tomitribe
Application Metrics
@GET @Path(“/{id}“) @Metered(name = “BookResource.findById_meter”) @Timed(name = “BookResource.findById_timer”, unit = MetricUnits.MILLISECONDS, absolute = true) public Response findById(@PathParam(“id") final Long id) { ... }
![Page 55: Lightweight Enterprise Java · • Microservices! • What is ... • OpenTracing is a distributed tracing standard for applicaons ... Zipkin Demo. 2019 #devdays2019 @JLouisMonteiro](https://reader033.fdocuments.us/reader033/viewer/2022043002/5f80362268e70a28a8418971/html5/thumbnails/55.jpg)
Dev
Day
s 201
9
#devdays2019 @JLouisMonteiro @tomitribe
GET /metrics/application/{meter}
Meter
{ "{meter}": { "count": 1, "fifteenMinRate": 0.2, "fiveMinRate": 0.2, "meanRate": 0.015384615384615385, "oneMinRate": 0.2, "unit": "per_second" }}
![Page 56: Lightweight Enterprise Java · • Microservices! • What is ... • OpenTracing is a distributed tracing standard for applicaons ... Zipkin Demo. 2019 #devdays2019 @JLouisMonteiro](https://reader033.fdocuments.us/reader033/viewer/2022043002/5f80362268e70a28a8418971/html5/thumbnails/56.jpg)
Dev
Day
s 201
9
#devdays2019 @JLouisMonteiro @tomitribe
GET /metrics/application/{timer}
Timed
{ "{timer}": { "count": 1, "fifteenMinRate": 0.2, "fiveMinRate": 0.2, "max": 13644163, "mean": 13644163, "meanRate": 0.015384615384615385, "min": 13644163, "oneMinRate": 0.2, "p50": 13644163, "p75": 13644163, "p95": 13644163, "p98": 13644163, "p99": 13644163, "p999": 13644163, "stddev": 0 }}
![Page 57: Lightweight Enterprise Java · • Microservices! • What is ... • OpenTracing is a distributed tracing standard for applicaons ... Zipkin Demo. 2019 #devdays2019 @JLouisMonteiro](https://reader033.fdocuments.us/reader033/viewer/2022043002/5f80362268e70a28a8418971/html5/thumbnails/57.jpg)
Dev
Day
s 201
9
#devdays2019 @JLouisMonteiro @tomitribe
GET /metrics/application/{counter}
Counted
{ "{counter}": 156825}
![Page 58: Lightweight Enterprise Java · • Microservices! • What is ... • OpenTracing is a distributed tracing standard for applicaons ... Zipkin Demo. 2019 #devdays2019 @JLouisMonteiro](https://reader033.fdocuments.us/reader033/viewer/2022043002/5f80362268e70a28a8418971/html5/thumbnails/58.jpg)
Dev
Day
s 201
9
#devdays2019 @JLouisMonteiro @tomitribe
Gauge
public class BookResource {
private AtomicLong booksAdded = new AtomicLong(); @Gauge(name="booksadded", unit = MetricUnits.NONE) public long count() { return booksAdded.get(); }}
![Page 59: Lightweight Enterprise Java · • Microservices! • What is ... • OpenTracing is a distributed tracing standard for applicaons ... Zipkin Demo. 2019 #devdays2019 @JLouisMonteiro](https://reader033.fdocuments.us/reader033/viewer/2022043002/5f80362268e70a28a8418971/html5/thumbnails/59.jpg)
Dev
Day
s 201
9
#devdays2019 @JLouisMonteiro @tomitribe
GET /metrics/application/{gauge}
Gauge
{ "{gauge}": 156825}
![Page 60: Lightweight Enterprise Java · • Microservices! • What is ... • OpenTracing is a distributed tracing standard for applicaons ... Zipkin Demo. 2019 #devdays2019 @JLouisMonteiro](https://reader033.fdocuments.us/reader033/viewer/2022043002/5f80362268e70a28a8418971/html5/thumbnails/60.jpg)
Dev
Day
s 201
9
#devdays2019 @JLouisMonteiro @tomitribe
Histogram
public class BookResource { @Inject @Metric(name = "bookcount") private Histogram histo;
public void update(long count) { histo.update(count); }}
![Page 61: Lightweight Enterprise Java · • Microservices! • What is ... • OpenTracing is a distributed tracing standard for applicaons ... Zipkin Demo. 2019 #devdays2019 @JLouisMonteiro](https://reader033.fdocuments.us/reader033/viewer/2022043002/5f80362268e70a28a8418971/html5/thumbnails/61.jpg)
Dev
Day
s 201
9
#devdays2019 @JLouisMonteiro @tomitribe
MicroProfile OpenTracing
![Page 62: Lightweight Enterprise Java · • Microservices! • What is ... • OpenTracing is a distributed tracing standard for applicaons ... Zipkin Demo. 2019 #devdays2019 @JLouisMonteiro](https://reader033.fdocuments.us/reader033/viewer/2022043002/5f80362268e70a28a8418971/html5/thumbnails/62.jpg)
@dblevins @tomitribe
Dev
Day
s 201
9
#devdays2019 @JLouisMonteiro @tomitribe
OpenTracing• Trace the flow of a request across services
• OpenTracing is a distributed tracing standard for applicaLons
• Java Binding to OpenTracing ImplementaLon
![Page 63: Lightweight Enterprise Java · • Microservices! • What is ... • OpenTracing is a distributed tracing standard for applicaons ... Zipkin Demo. 2019 #devdays2019 @JLouisMonteiro](https://reader033.fdocuments.us/reader033/viewer/2022043002/5f80362268e70a28a8418971/html5/thumbnails/63.jpg)
@dblevins @tomitribe
Dev
Day
s 201
9
#devdays2019 @JLouisMonteiro @tomitribe
OpenTracing• JAX-RS calls are traced
• Context propagated to services called with REST client • X-B3-TraceId, X-B3-ParentSpanId, X-B3-SpanId
• Traces are collected and pushed to a database
![Page 64: Lightweight Enterprise Java · • Microservices! • What is ... • OpenTracing is a distributed tracing standard for applicaons ... Zipkin Demo. 2019 #devdays2019 @JLouisMonteiro](https://reader033.fdocuments.us/reader033/viewer/2022043002/5f80362268e70a28a8418971/html5/thumbnails/64.jpg)
@dblevins @tomitribe
Dev
Day
s 201
9
#devdays2019 @JLouisMonteiro @tomitribe
OpenTracing• OperaLons are measured in Spans
• Spans are grouped together into Traces
![Page 65: Lightweight Enterprise Java · • Microservices! • What is ... • OpenTracing is a distributed tracing standard for applicaons ... Zipkin Demo. 2019 #devdays2019 @JLouisMonteiro](https://reader033.fdocuments.us/reader033/viewer/2022043002/5f80362268e70a28a8418971/html5/thumbnails/65.jpg)
Dev
Day
s 201
9
#devdays2019 @JLouisMonteiro @tomitribe
@Traced@GET@Path(“/books")public Response findBooks() { }
Tracing CDI Calls
![Page 66: Lightweight Enterprise Java · • Microservices! • What is ... • OpenTracing is a distributed tracing standard for applicaons ... Zipkin Demo. 2019 #devdays2019 @JLouisMonteiro](https://reader033.fdocuments.us/reader033/viewer/2022043002/5f80362268e70a28a8418971/html5/thumbnails/66.jpg)
Dev
Day
s 201
9
#devdays2019 @JLouisMonteiro @tomitribe
@ApplicationScopedpublic class BookBean {
@Inject private Tracer tracer;
public Book create(final Book book) { final Span activeSpan = tracer.activeSpan(); final Tracer.SpanBuilder spanBuilder = tracer.buildSpan("create");
if (activeSpan != null) { spanBuilder.asChildOf(activeSpan.context()); }
final Span span = spanBuilder.withTag("created", true).start(); tracer.scopeManager().activate(span, true);
// do work span.finish();
return book; }}
OpenTracing
![Page 67: Lightweight Enterprise Java · • Microservices! • What is ... • OpenTracing is a distributed tracing standard for applicaons ... Zipkin Demo. 2019 #devdays2019 @JLouisMonteiro](https://reader033.fdocuments.us/reader033/viewer/2022043002/5f80362268e70a28a8418971/html5/thumbnails/67.jpg)
Dev
Day
s 201
9
#devdays2019 @JLouisMonteiro @tomitribe
Zipkin Demo
![Page 68: Lightweight Enterprise Java · • Microservices! • What is ... • OpenTracing is a distributed tracing standard for applicaons ... Zipkin Demo. 2019 #devdays2019 @JLouisMonteiro](https://reader033.fdocuments.us/reader033/viewer/2022043002/5f80362268e70a28a8418971/html5/thumbnails/68.jpg)
Dev
Day
s 201
9
#devdays2019 @JLouisMonteiro @tomitribe
MicroProfile JWT Propagation
![Page 69: Lightweight Enterprise Java · • Microservices! • What is ... • OpenTracing is a distributed tracing standard for applicaons ... Zipkin Demo. 2019 #devdays2019 @JLouisMonteiro](https://reader033.fdocuments.us/reader033/viewer/2022043002/5f80362268e70a28a8418971/html5/thumbnails/69.jpg)
@dblevins @tomitribe
Dev
Day
s 201
9
#devdays2019 @JLouisMonteiro @tomitribe
Challenges in security• Who is the caller?
• What can he do?
• How to propagate the security context?
![Page 70: Lightweight Enterprise Java · • Microservices! • What is ... • OpenTracing is a distributed tracing standard for applicaons ... Zipkin Demo. 2019 #devdays2019 @JLouisMonteiro](https://reader033.fdocuments.us/reader033/viewer/2022043002/5f80362268e70a28a8418971/html5/thumbnails/70.jpg)
@dblevins @tomitribe
Dev
Day
s 201
9
#devdays2019 @JLouisMonteiro @tomitribe
JWT Propagation• Security Tokens
• Most common: OAuth2, OpenID Connect JWT
• Lightweight way to propagate idenLLes across different services
![Page 71: Lightweight Enterprise Java · • Microservices! • What is ... • OpenTracing is a distributed tracing standard for applicaons ... Zipkin Demo. 2019 #devdays2019 @JLouisMonteiro](https://reader033.fdocuments.us/reader033/viewer/2022043002/5f80362268e70a28a8418971/html5/thumbnails/71.jpg)
@dblevins @tomitribe
Dev
Day
s 201
9
#devdays2019 @JLouisMonteiro @tomitribe
JWT Propagation• Role based access control
• Keys (JWKS)
• Standard configuraLon (MP Config)
![Page 72: Lightweight Enterprise Java · • Microservices! • What is ... • OpenTracing is a distributed tracing standard for applicaons ... Zipkin Demo. 2019 #devdays2019 @JLouisMonteiro](https://reader033.fdocuments.us/reader033/viewer/2022043002/5f80362268e70a28a8418971/html5/thumbnails/72.jpg)
@dblevins @tomitribe
Dev
Day
s 201
9
#devdays2019 @JLouisMonteiro @tomitribe
Goals• Extract and verify the token
• IdenLfy the caller
• Enforce authorizaLon policies
![Page 73: Lightweight Enterprise Java · • Microservices! • What is ... • OpenTracing is a distributed tracing standard for applicaons ... Zipkin Demo. 2019 #devdays2019 @JLouisMonteiro](https://reader033.fdocuments.us/reader033/viewer/2022043002/5f80362268e70a28a8418971/html5/thumbnails/73.jpg)
@dblevins @tomitribe
Dev
Day
s 201
9
#devdays2019 @JLouisMonteiro @tomitribe
What is a JWT?• Pronounced “JOT”
• SAML like but less verbose
• Fancy JSON map
• BASE 64 URL encoded
• Digitally signed (RSA-SHA256, HMAC-SHA512, etc)
• Possibly encrypted
• Built-in expiraLon
![Page 74: Lightweight Enterprise Java · • Microservices! • What is ... • OpenTracing is a distributed tracing standard for applicaons ... Zipkin Demo. 2019 #devdays2019 @JLouisMonteiro](https://reader033.fdocuments.us/reader033/viewer/2022043002/5f80362268e70a28a8418971/html5/thumbnails/74.jpg)
Dev
Day
s 201
9
#devdays2019 @JLouisMonteiro @tomitribe
@LoginConfig(authMethod = "MP-JWT")public class ApplicationConfig extends Application { // let the server discover the endpoints}
——@Injectprivate JsonWebToken jwtPrincipal;
@Contextprivate SecurityContext securityContext;
@Inject@Claim("username")private ClaimValue<String> username;
@Inject@Claim("email")private ClaimValue<String> email;
——@RolesAllowed("create")public Response create(final Book book, @Context UriInfo uriInfo) {...}
![Page 75: Lightweight Enterprise Java · • Microservices! • What is ... • OpenTracing is a distributed tracing standard for applicaons ... Zipkin Demo. 2019 #devdays2019 @JLouisMonteiro](https://reader033.fdocuments.us/reader033/viewer/2022043002/5f80362268e70a28a8418971/html5/thumbnails/75.jpg)
Dev
Day
s 201
9
#devdays2019 @JLouisMonteiro @tomitribe
MicroProfile OpenAPI
![Page 76: Lightweight Enterprise Java · • Microservices! • What is ... • OpenTracing is a distributed tracing standard for applicaons ... Zipkin Demo. 2019 #devdays2019 @JLouisMonteiro](https://reader033.fdocuments.us/reader033/viewer/2022043002/5f80362268e70a28a8418971/html5/thumbnails/76.jpg)
@dblevins @tomitribe
Dev
Day
s 201
9
#devdays2019 @JLouisMonteiro @tomitribe
Open API• Java API for the OpenAPI v3 specificaLon
• OpenAPI v3 is based on Swagger v2
• AnnotaLons should be similar
![Page 77: Lightweight Enterprise Java · • Microservices! • What is ... • OpenTracing is a distributed tracing standard for applicaons ... Zipkin Demo. 2019 #devdays2019 @JLouisMonteiro](https://reader033.fdocuments.us/reader033/viewer/2022043002/5f80362268e70a28a8418971/html5/thumbnails/77.jpg)
Dev
Day
s 201
9
#devdays2019 @JLouisMonteiro @tomitribe
Configuration@GET@Path("/{id}")@Operation(summary = "Find a Book by Id")@APIResponse(responseCode = "200", content = {@Content(schema =
@Schema(implementation = Book.class))})public Response findById(@PathParam("id") final Long id) { return bookBean.findById(id) .map(Response::ok) .orElse(status(NOT_FOUND)) .build();}
![Page 78: Lightweight Enterprise Java · • Microservices! • What is ... • OpenTracing is a distributed tracing standard for applicaons ... Zipkin Demo. 2019 #devdays2019 @JLouisMonteiro](https://reader033.fdocuments.us/reader033/viewer/2022043002/5f80362268e70a28a8418971/html5/thumbnails/78.jpg)
Dev
Day
s 201
9
#devdays2019 @JLouisMonteiro @tomitribe
paths: /books/{id}: get: parameters: - name: "id" required: true style: "simple" schema: readOnly: false deprecated: false description: "The id of the Book" writeOnly: false deprecated: false summary: "Find a Book by Id" responses: 200: content: application/json: schema:
… description: "" operationId: "findById"
GET /openapi
![Page 79: Lightweight Enterprise Java · • Microservices! • What is ... • OpenTracing is a distributed tracing standard for applicaons ... Zipkin Demo. 2019 #devdays2019 @JLouisMonteiro](https://reader033.fdocuments.us/reader033/viewer/2022043002/5f80362268e70a28a8418971/html5/thumbnails/79.jpg)
Dev
Day
s 201
9
#devdays2019 @JLouisMonteiro @tomitribe
OpenAPI Demo
![Page 80: Lightweight Enterprise Java · • Microservices! • What is ... • OpenTracing is a distributed tracing standard for applicaons ... Zipkin Demo. 2019 #devdays2019 @JLouisMonteiro](https://reader033.fdocuments.us/reader033/viewer/2022043002/5f80362268e70a28a8418971/html5/thumbnails/80.jpg)
Dev
Day
s 201
9
#devdays2019 @JLouisMonteiro @tomitribe
MicroProfile REST Client
![Page 81: Lightweight Enterprise Java · • Microservices! • What is ... • OpenTracing is a distributed tracing standard for applicaons ... Zipkin Demo. 2019 #devdays2019 @JLouisMonteiro](https://reader033.fdocuments.us/reader033/viewer/2022043002/5f80362268e70a28a8418971/html5/thumbnails/81.jpg)
@dblevins @tomitribe
Dev
Day
s 201
9
#devdays2019 @JLouisMonteiro @tomitribe
REST Client• Microservices typically talk REST to other services
• Several JAX-RS implementaLons already support interface definiLon
• Consistent and easy to reuse
![Page 82: Lightweight Enterprise Java · • Microservices! • What is ... • OpenTracing is a distributed tracing standard for applicaons ... Zipkin Demo. 2019 #devdays2019 @JLouisMonteiro](https://reader033.fdocuments.us/reader033/viewer/2022043002/5f80362268e70a28a8418971/html5/thumbnails/82.jpg)
@dblevins @tomitribe
Dev
Day
s 201
9
#devdays2019 @JLouisMonteiro @tomitribe
REST Client• Type safe REST Service over HTTP
• Extends JAX-RS 2.0 API’s
• More natural code style
• Similar to Feign
![Page 83: Lightweight Enterprise Java · • Microservices! • What is ... • OpenTracing is a distributed tracing standard for applicaons ... Zipkin Demo. 2019 #devdays2019 @JLouisMonteiro](https://reader033.fdocuments.us/reader033/viewer/2022043002/5f80362268e70a28a8418971/html5/thumbnails/83.jpg)
Dev
Day
s 201
9
#devdays2019 @JLouisMonteiro @tomitribe
Configuration@RegisterRestClient@Path(“/books")public interface BookService {@GET@Path("/{id}")Response findById(@PathParam("id") final Long id);
}
@ApplicationScopedpublic class BookStore { @Inject @RestClient private BookService client;}
![Page 84: Lightweight Enterprise Java · • Microservices! • What is ... • OpenTracing is a distributed tracing standard for applicaons ... Zipkin Demo. 2019 #devdays2019 @JLouisMonteiro](https://reader033.fdocuments.us/reader033/viewer/2022043002/5f80362268e70a28a8418971/html5/thumbnails/84.jpg)
Dev
Day
s 201
9
#devdays2019 @JLouisMonteiro @tomitribe
MicroProfile Starter
https://start.microprofile.io
![Page 85: Lightweight Enterprise Java · • Microservices! • What is ... • OpenTracing is a distributed tracing standard for applicaons ... Zipkin Demo. 2019 #devdays2019 @JLouisMonteiro](https://reader033.fdocuments.us/reader033/viewer/2022043002/5f80362268e70a28a8418971/html5/thumbnails/85.jpg)
Dev
Day
s 201
9
#devdays2019 @JLouisMonteiro @tomitribe
Future
![Page 86: Lightweight Enterprise Java · • Microservices! • What is ... • OpenTracing is a distributed tracing standard for applicaons ... Zipkin Demo. 2019 #devdays2019 @JLouisMonteiro](https://reader033.fdocuments.us/reader033/viewer/2022043002/5f80362268e70a28a8418971/html5/thumbnails/86.jpg)
@dblevins @tomitribe
Dev
Day
s 201
9
#devdays2019 @JLouisMonteiro @tomitribe
MicroProfile Roadmap• MicroProfile 3.0 by June 2019
• Major updates to Health and Metrics
• GraphQl, Long Running AcLons, Concurrency, ReacLve Messaging, Event Data, ReacLve RelaLonal DB Access
![Page 87: Lightweight Enterprise Java · • Microservices! • What is ... • OpenTracing is a distributed tracing standard for applicaons ... Zipkin Demo. 2019 #devdays2019 @JLouisMonteiro](https://reader033.fdocuments.us/reader033/viewer/2022043002/5f80362268e70a28a8418971/html5/thumbnails/87.jpg)
Dev
Day
s 201
9
#devdays2019 @JLouisMonteiro @tomitribe
Get Involved
![Page 88: Lightweight Enterprise Java · • Microservices! • What is ... • OpenTracing is a distributed tracing standard for applicaons ... Zipkin Demo. 2019 #devdays2019 @JLouisMonteiro](https://reader033.fdocuments.us/reader033/viewer/2022043002/5f80362268e70a28a8418971/html5/thumbnails/88.jpg)
@dblevins @tomitribe
Dev
Day
s 201
9
#devdays2019 @JLouisMonteiro @tomitribe
Resources• hCp://microprofile.io/
• hCp://tomee.apache.org
• hCps://github.com/radcortez/microprofile-samples
![Page 89: Lightweight Enterprise Java · • Microservices! • What is ... • OpenTracing is a distributed tracing standard for applicaons ... Zipkin Demo. 2019 #devdays2019 @JLouisMonteiro](https://reader033.fdocuments.us/reader033/viewer/2022043002/5f80362268e70a28a8418971/html5/thumbnails/89.jpg)
Dev
Day
s 201
9
#devdays2019 @JLouisMonteiro @tomitribe
Thank you!