Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
1
Java EE - MicroProfile - Spring Boot - Docker
2
¿Microservicios?
¿Microservicios?
3
Reactive applications
Aplicaciones reactivas
4
Monolito - Escalabilidad
Figura 1: Monólito
5
ESB
Figura 2: ESB
6
Microservicios
Figura 3: Microservicios
7
Java EE 8
Java EE 8
8
Java EE 8
Java EE 8
• Integración JSF-CDI
• Integración JMS-CDI
• HTTP/2
• JSON-B
• Security
• JAX-RS Reactivo
9
Java EE 8 - Comunidad Java EE
10
Eclipse MicroProfile
Eclipse MicroProfile
11
Eclipse MicroProfile
12
Eclipse MicroProfile
13
Eclipse MicroProfile - Implementaciones
Bibliotecas
• SmallRye (Red Hat)
• Hammock
• Apache Geronimo
• Fujitsu Launcher
JEAS - Fat Jar
• Dropwizard
• KumuluzEE
• Helidon (Oracle)
• Open Liberty (IBM)
• Apache Meecrowave
• Thorntail (Red Hat)
• Quarkus (Red Hat)
14
Eclipse MicroProfile - Implementaciones
Micro server
• Payara Micro
• TomEE Plume
Full server
https://wiki.eclipse.org/MicroProfile/Implementation
15
Eclipse MicroProfile on Payara 5
16
Config
17
Config
@Inject
@ConfigProperty(name = "omdbservice.url")
String o m d b D a e m o n ServiceUrl ;
18
Fault Tolerance
19
Metrics
20
Fault Tolerance + Metrics
21
Fault tolerance
• Circuit Breaker
• Bulkhead
• Retry
• Timeout
• Fallback
22
Fault tolerance - Fallback, Timeout
@GET
@Path ( " /{ id :[ a - z ]*[0 -9][0 -9]*} " )
@Fallback(fallbackMethod = "findByIdFallBack")
@Timeout(TIMEOUT)
public Response findById ( @PathParam ( " id " )
final String imdbId ) {
...
}
23
Métricas
¿Cuales?
• Counted
• Gauge
• Metered
• Timed
• Histogram
24
Metrics - Counted
@Inject
@Metric
Counter failedQueries ;
@GET
@Path ( " /{ id :[ a - z ]*[0 -9][0 -9]*} " )
@Fallback(fallbackMethod = "findByIdFallBack")
@Timeout(TIMEOUT)
public Response findById ( @PathParam ( " id " )
final String imdbId ) {
...
}
/metrics/application/movieDatabases
26
Metrics - Metered
Events rate
@Metered ( name = " moviesRetrieved " ,
unit = MetricUnits . MINUTES ,
description = " Metrics to monitor movies " ,
absolute = true )
public Response findExpandedById (
@PathParam ( " id " ) final Long id )
/metrics/application/movieDatabases
27
Metrics- Timed
Desempeño y retraso
@Timed ( name = " moviesDelay " ,
description = " Time to retrieve a movie " ,
unit = MetricUnits . MINUTES ,
absolute = true )
public Response findExpandedById (
@PathParam ( " id " ) final Long id )
/metrics/application/moviesDelay
28
Metrics - Histogram
Distribuciones
@Inject
MetricRegistry registry ;
@POST
@Path ( " / add /{ attendees } " )
public Response addAttendees (
@PathParam ( " attendees " ) Long attendees ) {
Metadata metadata =
new Metadata ( " matrix attendees " ,
MetricType . HISTOGRAM );
Histogram histogram =
registry . histogram ( metadata );
histogram . update ( attendees );
return Response . ok (). build ();
}
29
Health Check
30
Health Check
¿Estas vivo?
@Override
public H ea l t hC h e ckResponse call () {
return He althCheckResponse . named ( " TaVivoAinda " )
. withData ( " key1 " , " val1 " )
. withData ( " key2 " , " val2 " )
. up ()
. build ();
31
JWT
32
JWT
@LoginConfig(authMethod = "MP-JWT")
public class Ap plicationConfig extends Application {
}
@Inject
private JsonWebToken jwtPrincipal ;
@Inject
@Claim("email")
private String email ;
33
TypeSafe
34
TypeSafe
@GET
List < String > getPlaylistNames ();
@PUT
@Path ( " /{ playlistName } " )
long updatePlayList ( @PathParam ( " playlistName " )
String name ,
List < Song > playlist )
throws U nk n o w nP l a y li s t E xc e p t io n ;
}
35
Demo
EE + MicroProfile - Demo
36
Payara Micro - Java EE 8
Stacks tradicionales
• EJB
• JTA
• JAX-RS
• CDI
37
EE + MicroProfile - Demo
MicroProfile: JAX-RS, CDI, Config, Fault Tolerance, Metrics
Payara Micro: EJB, JTA
Fatores externos: Location, Deployment, Orchestation, Balancing, Consistency
38
12 factores cloud native (Heroku)
Microprofile Cloud
• Config • Codebase (Git-Flow)
• Backing service • Dependencies (Maven)
• Disposability • Build, Release, Run
• Processes (Pipelines)
• Port binding
• Concurrency (Docker - k8s)
• Dev / Prod parity
• Logs
• Admin process
39
Oracle Cloud
40
Oracle Cloud
41
Oracle Cloud
42
Oracle Cloud
43
Vı́ctor Orozco
• me@vorozco.com
• @tuxtor
• http://vorozco.com
• http://tuxtor.shekalug.org
44