BE REACTIVE AND MICRO
WITH A MICROPROFILE
STACK
Ondrej Mihályi
@omihalyi
Slide 2
Slide 2 text
WHAT DO WE WANT?
@OMihalyi
Slide 3
Slide 3 text
there should be a
PROBLEM to solve
WHY DO WE WANT IT?
@OMihalyi
Slide 4
Slide 4 text
BETTER USER EXPERIENCE
updates when ready, reduced
waiting
errors raised ASAP
users can react faster
avoids unnecessary user retries
@OMihalyi
Slide 5
Slide 5 text
HANDLE HIGH LOADS
utilize resources at maximum (CPU)
threads aren't wasted by blocking
avoid blocking of new requests
@OMihalyi
Slide 6
Slide 6 text
HANDLE MASSIVE LOADS
scale to more nodes
messaging to distribute the load
@OMihalyi
Slide 7
Slide 7 text
DON'T FORGET ABOUT FAILURES
fail fast and avoid waste
make sure failures are handled
failures happen a lot more in
distributed systems
@OMihalyi
Slide 8
Slide 8 text
WHAT IS MICROPROFILE?
open-source specification for Java
microservices ( )
microprofile.io
@OMihalyi
Slide 9
Slide 9 text
REACTIVE SUPPORT IN
MICROPROFILE
Asynchronous REST (JAX-RS)
CDI events
Monitoring via Metrics
@OMihalyi
Slide 10
Slide 10 text
MORE TO COME IN MICROPROFILE
Reactive REST & SSE (Java EE 8)
Async CDI events (Java EE 8)
Async Fault Tolerance interceptors
Reactive streams
@OMihalyi
Slide 11
Slide 11 text
WE'LL ADD WHAT'S MISSING
RxJava (Reactive Streams)
handle callbacks and data streams
asynchronous Fault Tolerance
React.js
easy updates on events
@OMihalyi
WE'LL ADD MORE
Java EE 8
reactive REST client (JAX-RS)
Server-Sent Events
Kafka JCA connector
Hazelcast
distributed cache and other structures
NoSQL distributed datastore
@OMihalyi
Slide 15
Slide 15 text
DEMO
@OMihalyi
Slide 16
Slide 16 text
PAYARA SERVER
MicroProfile, Java EE, Hazelcast, Cloud JCA
Connectors, CDI event bus
dynamic clustering (suitable for cloud)
fast development
admin console
monitoring
@OMihalyi
Slide 17
Slide 17 text
PAYARA MICRO
APIs as in Server (except SOAP, remote EJB)
most of features of the Server
executable JAR, <70 MB
easier to install and run apps
command line, maven plugin
build uber JAR
@OMihalyi
Slide 18
Slide 18 text
WHAT TO AVOID
relying on request scope
relying on thread local
using synchronous CDI interceptors
@OMihalyi