Microservicios con Jakarta EE y Eclipse MicroProfile
Vı́ctor Orozco - @tuxtor
August 28, 2018
GuateJUG
1
Vı́ctor Orozco
• Developer (JVM/Open
Source Advocate)
• JUG Leader
• Oracle Certified,
Lightbend Certified
• @tuxtor
• [Link]
• [Link]
2
Java EE 7
Java EE 7
3
Java EE 7
Java EE 7
• Nuevo JMS
• WebSockets
• JSON Support
• Concurrency
• Nuevo JAX-RS
• Batch apps
4
Java EE 7 - La rebelión de los Dukes
Java EE 7 - La rebelión
5
Java EE 8
Java EE 8
6
Java EE 8
Java EE 8
• Mejor integración de JSF con CDI
• Mejor integración de JMS con CDI
• HTTP/2
• JSON-B
• Security
• JAX-RS Reactivo
7
Java EE 8
8
Eclipse Jakarta EE
9
El mundo micro y sus lecciones
Lección 0: Lo que la gente realmente
quiere no son microservicios, son
sistemas reactivos
Reactive Manifesto
Figure 1: [Link]
10
Microservicios
Ventajas
• Bases de código pequeñas
• Buenas practicas
• Tolerancia a fallas
• Escalabilidad
Desventajas
• Tooling overhead
• Depuración
• Transacciones distribuidas
• Latencia
• Dependencia
11
Microservicios
Desventaja principal
Hype Driven Development
12
Lección 1: Los microservicios son una
revolución de pensamiento
Monolito
Figure 2: Monolito regular
13
ESB
Figure 3: ESB
14
Microservicios
Figure 4: Microservicios
15
Lección 2: Microservicios no son lo
mismo para todos
Como
Pruebas de concepto de Sr. a Jr.
• Vert.x
• Spring Boot
• DropWizard
• Akka
• NodeJS . . .
• Java EE
16
J2EE
Trabajos J2EE Guatemala 2018
17
Recursos humanos
• De las universidades ”top” en Guatemala solo 3 enseñan Java
realmente bien
• Las otras dos enseñan .NET
• Las Sillicon Valley off-shores se llevan a los mejores devs
18
Lección 3: No es necesario ser 100%
”microservicios”
Microservicios - Java EE
Java EE es el framework más anti-hype
J2EE 1.2 (Diciembre 12, 1999)
19
Microservicios - Java EE
Implementación
• Refactoring iterativo - Por oleadas
• Refactoring practico - Extraer solo los servicios necesarios
• Nuevos servicios - Nuevos servicios le hablan a monolitos
20
Microservicios - Java EE
Figure 5: Tecnologı́as Java EE - Créditos: Reza Rahman
21
Microservicios - Java EE
22
Microservicios - Java EE
23
Microservicios - Java EE
24
Microservicios - Java EE
25
Microservicios - Java EE
26
Microservicios - Implementaciones
• Thorntail (Red Hat)
• KumuluzEE
• Open Liberty (IBM)
• TomEE
• Helidon (Oracle)
• Hammock
• Payara Micro
27
Microservicios - Payara
Target actual: Microprofile 1.3
• Microprofile 1.3
• Jakarta EE Web Profile
• JCache - Hazelcast
Despliegues
• Micro Java EE server (CLI)
• Uber-Jar/Fat-Jar
28
Demo
Jakarta EE Micro - Demo
Java 8, JAX-RS, CDI, EJB,
Microprofile
[Link]
[Link]
29
Payara Micro - Jakarta EE tradicional
Asumimos
• EJB
• JTA
• JAX-RS
• CDI
30
Payara Micro - Micro Java EE
MicroProfile: JAX-RS, CDI (Por servicio), Config, Fault Tolerance, Metrics
Implementación: EJB, JTA (Por servicio)
Por hacer: Location, Deployment, Orchestation, Balancing, Consistency,
Patterns
31
Config
@Inject
@ConfigProperty ( name = " omdbservice . url " )
String o m d b D a e m o n ServiceUrl ;
32
Fault tolerance
• Circuit Breaker
• Bulkhead
• Fallback
• Retry
• Timeout
33
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 ) {
...
}
public Response findByIdFallBack ( @PathParam ( " id " )
final String imdbId ) {
...
}
34
Metrics
• Vendor
• Base
• Application
35
Metric
@Inject
@Metric
Counter failedQueries ;
36
Gracias
• me@[Link]
• [Link]
• [Link]
This work is licensed under a Creative Commons
Attribution-ShareAlike 3.0 Guatemala License.
37