SlideShare a Scribd company logo
1 of 50
Download to read offline
Microservicios funcionales con Java 8 y Java EE
Víctor Orozco - @tuxtor
31 de agosto de 2017
Java Cloud Day Mexico 2017
1
Acerca de
2
Advertencia 0
3
Advertencia 1
Esta presentación se basa
exclusivamente en mi búsqueda
diaria por trabajar menos,
proyectos fracasados, lecciones
aprendidas, poco capital y
mucho código ;-)
4
Motivación
¿Estado zen del arquitecto de software?
5
Motivación
Estado zen del arquitecto de software
• Productividad
• Recurso humano
• Predictibilidad y estabilidad
• Escalabilidad
• Costos
6
Motivación
Estado zen del arquitecto de software
• Productividad - Java 8
• Recurso humano - POO -> Funcional
• Predictibilidad y estabilidad - Java EE 7
• Escalabilidad - Microservicios
• Costos - Todas las anteriores
7
Motivación
Estado zen del arquitecto de software
• Productividad - Java 8
• Recurso humano - POO -> Funcional
• Predictibilidad y estabilidad - Java EE 7
• Escalabilidad - Microservicios
• Costos - Todas las anteriores
8
Microservicio funcional
TL;DR Microservicio creado con
programación funcional
9
Microservicio funcional . . . con Payara Micro
TL;DR Microservicio creado con
Java 8, algunas APIs de JavaEE y
Payara Micro
10
Java 8
Java 8
• Nashorn
• Date/Time API
• Compact Profiles
• Type Annotations
• Default methods
• Streams
• Lambda Expressions
11
Paradigmas (Simplificación)
Paradigmas
Imperativo
Estructurado
Pascal
OOP
Java
Declarativo
Funcional
Clojure
Logico
Prolog
12
Programación funcional
• Computación = Evaluación de funciones matemáticas
(calculo de lambdas)
• NO cambios en estado
• NO mutar datos
• Declarativo → Expresiones
13
Java 8
Un lenguaje de programación orientada a objetos con
características funcionales.
14
¿Porque programación funcional?
• Paralelismo
• Multicore, multicpu
• Elegancia
15
Programación funcional en Java 8
• Java no es un lenguaje funcional puro (Clojure)
• Otras opciones JVM (Scala, Kotlin, Ceylon)
• Java soporta programación funcional a través de
bibliotecas
16
Código funcional
PF en Java (Consecuencias)
17
PF en Java (Consecuencias)
Java 8 generó un nuevo
ecosistema de bibliotecas
funcionales, declarativas y
reactivas . . .
18
PF en Java (Consecuencias)
Google: Como me vuelvo el champion de la programación
funcional
19
PF en Java (Consecuencias)
Google: Como me vuelvo el champion de la programación
funcional
19
El cielo de la arquitectura Java
Pregunta - ¿Como lo alcanzo?
20
El cielo de la arquitectura Java
Respuesta - Construyendo una
escalera
21
1 - Bloques
22
1 - Java 8
• Lambda expressions
• Functional interface
• High order functions
• Complements (predicates, method reference)
23
2 - Java Developer Kit Funcional
24
2 - Java Developer Kit Funcional
• Funciones predefinidas en Java 8 (java.util.function)
• Más de 40 interfaces funcionales
• Streams API
25
3 - Bibliotecas
26
3 - Bibliotecas
Catedral
• Java EE (Reactivos)
• Spring (Reactivos)
• Lagom (Reactivos)
Bazar
• Funcionalidad: vavr, jOOQ/jOOL, EclipseCollections,
FunctionalJava
• Arquitectura: RxJava, Akka, Vert.x (Interactions -
Architecture)
27
Solución
Solución
Estado zen del arquitecto de software
• Productividad - Java 8
• Recurso humano - POO -> Funcional
• ¿Predictibilidad y estabilidad?
• ¿Escalabilidad?
• App Server - Vertical y luego horizontal
• Microservicios - Horizontal
• Costos - Todas las anteriores
28
Solución
29
Monolito
Figura 1: Arquitectura monolitica - Creditos: Markus Eisele
30
ESB
Figura 2: Arquitectura Esb - Creditos: Markus Eisele
31
Microservicios
Figura 3: Arquitectura Microservicio - Creditos: Markus Eisele
32
Microservicios
Ventajas
• Bases de código pequeñas
• Buenas practicas de programación
• Tolerancia a fallas
• Escalabilidad
Desventajas
• Tooling overhead
• Debug
• Transacciones distribuidas
• Latencia
• Interdependencia
• Falacias de la computación distribuida
33
Microservicios
Desventaja
Hype Driven Development
34
Microservicios funcionales con
JavaEE
Microservicios - JavaEE
JavaEE el framework más anti-hype de la tierra
J2EE 1.2 (Diciembre 12, 1999)
35
Microservicios - JavaEE
Implementación
• Refactoring iterativo
• Refactoring practico
• Nuevos servicios
36
Microservicios - JavaEE
Implementación
• Refactoring iterativo
• Refactoring practico
• Nuevos servicios
37
Microservicios - JavaEE
Subset de Api en JavaEE
• JAX-RS
• JSON-P
• CDI, EJB
• JCache, JPA
Nuevas formas de despliegue
• Versiones micro JavaEE (CLI)
• Uber-Jar/Fat-Jar/Serverless
38
Microservicios - JavaEE
Opciones
• Wildfly Swarm
• KumuluzEE
• Dropwizard
• WebSphere Liberty
• Payara Micro
39
Microservicios - Payara Micro
• Glassfish Embedded (Web Profile)
• Container friendly
• War en CLI
• FatJar en main()
• Compatible con Microprofile (JAX-RS, CDI, Config, JSON-P)
• JCache y clustering - Hazelcast
40
Motivación
Estado zen del arquitecto de software
• Productividad - Java 8
• Recurso humano - POO -> Funcional
• Predictibilidad y estabilidad - Payara Micro
• Escalabilidad brutal - Microservicios
• Costos - Todas las anteriores
41
Demo
Payara Micro - Demo
Java 8, JAX-RS, CDI, EJB
https://github.com/tuxtor/payara-demo
42
Fin
Gracias
• me@vorozco.com
• http://vorozco.com
• http://github.com/tuxtor/slides
This work is licensed under a Creative Commons
Attribution-ShareAlike 3.0 Guatemala License.
43

More Related Content

Similar to Microservicios funcionales con Java 8, Java EE y Payara Micro

Tecnologias de java usando netbeans por gio
Tecnologias de java usando netbeans por gioTecnologias de java usando netbeans por gio
Tecnologias de java usando netbeans por gio
Robert Wolf
 
Sistemas gestores de base de datos (sgbd)
Sistemas gestores de base de datos (sgbd)Sistemas gestores de base de datos (sgbd)
Sistemas gestores de base de datos (sgbd)
Henry Cumbicus Rivera
 
Software Líbre con respaldo de Oracle ~ OTN Tour 2013
Software Líbre con respaldo de Oracle ~ OTN Tour 2013Software Líbre con respaldo de Oracle ~ OTN Tour 2013
Software Líbre con respaldo de Oracle ~ OTN Tour 2013
Mysql Latinoamérica
 
Introducción al proceso unificado de desarrollo de software en Curso de Anali...
Introducción al proceso unificado de desarrollo de software en Curso de Anali...Introducción al proceso unificado de desarrollo de software en Curso de Anali...
Introducción al proceso unificado de desarrollo de software en Curso de Anali...
Educagratis
 

Similar to Microservicios funcionales con Java 8, Java EE y Payara Micro (20)

Java EE moderno, de monolitos a Payara Micro
Java EE moderno, de monolitos a Payara MicroJava EE moderno, de monolitos a Payara Micro
Java EE moderno, de monolitos a Payara Micro
 
Microservicios con Jakarta EE y Eclipse MicroProfile
Microservicios con Jakarta EE y Eclipse MicroProfileMicroservicios con Jakarta EE y Eclipse MicroProfile
Microservicios con Jakarta EE y Eclipse MicroProfile
 
Java EE, Microprofile y Payara Micro
Java EE, Microprofile y Payara MicroJava EE, Microprofile y Payara Micro
Java EE, Microprofile y Payara Micro
 
Oracle-Developer-Day-Colombia_MySQL-Feb27_12
Oracle-Developer-Day-Colombia_MySQL-Feb27_12Oracle-Developer-Day-Colombia_MySQL-Feb27_12
Oracle-Developer-Day-Colombia_MySQL-Feb27_12
 
Introduccion Java.ppt
Introduccion Java.pptIntroduccion Java.ppt
Introduccion Java.ppt
 
Tecnologias de java usando netbeans por gio
Tecnologias de java usando netbeans por gioTecnologias de java usando netbeans por gio
Tecnologias de java usando netbeans por gio
 
MySQL de 1995 a 5.5
MySQL de 1995 a 5.5MySQL de 1995 a 5.5
MySQL de 1995 a 5.5
 
Web Day Devops - Plain Concepts
Web Day Devops - Plain ConceptsWeb Day Devops - Plain Concepts
Web Day Devops - Plain Concepts
 
Experiencia de ESADE implantando ORACLE SOA Suite - Congreso CUORE Octubre 2011
Experiencia de ESADE implantando ORACLE SOA Suite - Congreso CUORE Octubre 2011Experiencia de ESADE implantando ORACLE SOA Suite - Congreso CUORE Octubre 2011
Experiencia de ESADE implantando ORACLE SOA Suite - Congreso CUORE Octubre 2011
 
MySQL Team – Open Day Oracle 2013
MySQL Team – Open Day Oracle 2013MySQL Team – Open Day Oracle 2013
MySQL Team – Open Day Oracle 2013
 
Metacoretex
MetacoretexMetacoretex
Metacoretex
 
JRuby al Rescate de J2EE
JRuby al Rescate de J2EEJRuby al Rescate de J2EE
JRuby al Rescate de J2EE
 
Mejoras a la predictibilidad de la tecnología Java EE
Mejoras a la predictibilidad de la tecnología Java EEMejoras a la predictibilidad de la tecnología Java EE
Mejoras a la predictibilidad de la tecnología Java EE
 
SQL Server sobre Linux - Open Source & Azure
SQL Server sobre Linux - Open Source & AzureSQL Server sobre Linux - Open Source & Azure
SQL Server sobre Linux - Open Source & Azure
 
Sistemas gestores de base de datos (sgbd)
Sistemas gestores de base de datos (sgbd)Sistemas gestores de base de datos (sgbd)
Sistemas gestores de base de datos (sgbd)
 
Un "TFS" para gobernarlos a todos
Un "TFS" para gobernarlos a todosUn "TFS" para gobernarlos a todos
Un "TFS" para gobernarlos a todos
 
Software Líbre con respaldo de Oracle ~ OTN Tour 2013
Software Líbre con respaldo de Oracle ~ OTN Tour 2013Software Líbre con respaldo de Oracle ~ OTN Tour 2013
Software Líbre con respaldo de Oracle ~ OTN Tour 2013
 
Software Open Source – Open Day Oracle 2013
Software Open Source – Open Day Oracle 2013Software Open Source – Open Day Oracle 2013
Software Open Source – Open Day Oracle 2013
 
Netbeans Osum
Netbeans OsumNetbeans Osum
Netbeans Osum
 
Introducción al proceso unificado de desarrollo de software en Curso de Anali...
Introducción al proceso unificado de desarrollo de software en Curso de Anali...Introducción al proceso unificado de desarrollo de software en Curso de Anali...
Introducción al proceso unificado de desarrollo de software en Curso de Anali...
 

More from Víctor Leonel Orozco López

More from Víctor Leonel Orozco López (20)

Introducción al análisis de datos
Introducción al análisis de datosIntroducción al análisis de datos
Introducción al análisis de datos
 
From traditional to GitOps
From traditional to GitOpsFrom traditional to GitOps
From traditional to GitOps
 
De Java 8 a Java 17
De Java 8 a Java 17De Java 8 a Java 17
De Java 8 a Java 17
 
Desde la TV, hasta la nube, el ecosistema de Java en 26 años
Desde la TV, hasta la nube, el ecosistema de Java en 26 añosDesde la TV, hasta la nube, el ecosistema de Java en 26 años
Desde la TV, hasta la nube, el ecosistema de Java en 26 años
 
Bootstraping real world Jakarta EE/MicroProfile microservices with Maven Arch...
Bootstraping real world Jakarta EE/MicroProfile microservices with Maven Arch...Bootstraping real world Jakarta EE/MicroProfile microservices with Maven Arch...
Bootstraping real world Jakarta EE/MicroProfile microservices with Maven Arch...
 
Tolerancia a fallas, service mesh y chassis
Tolerancia a fallas, service mesh y chassisTolerancia a fallas, service mesh y chassis
Tolerancia a fallas, service mesh y chassis
 
Explorando los objetos centrales de Kubernetes con Oracle Cloud
Explorando los objetos centrales de Kubernetes con Oracle CloudExplorando los objetos centrales de Kubernetes con Oracle Cloud
Explorando los objetos centrales de Kubernetes con Oracle Cloud
 
Design Patterns para Microsserviços com MicroProfile
 Design Patterns para Microsserviços com MicroProfile Design Patterns para Microsserviços com MicroProfile
Design Patterns para Microsserviços com MicroProfile
 
MicroProfile benefits for your monolithic applications
MicroProfile benefits for your monolithic applicationsMicroProfile benefits for your monolithic applications
MicroProfile benefits for your monolithic applications
 
Consejos y el camino del desarrollador de software
Consejos y el camino del desarrollador de softwareConsejos y el camino del desarrollador de software
Consejos y el camino del desarrollador de software
 
Seguridad de aplicaciones Java/JakartaEE con OWASP Top 10
Seguridad de aplicaciones Java/JakartaEE con OWASP Top 10Seguridad de aplicaciones Java/JakartaEE con OWASP Top 10
Seguridad de aplicaciones Java/JakartaEE con OWASP Top 10
 
De Java 8 ate Java 14
De Java 8 ate Java 14De Java 8 ate Java 14
De Java 8 ate Java 14
 
Programación con ECMA6 y TypeScript
Programación con ECMA6 y TypeScriptProgramación con ECMA6 y TypeScript
Programación con ECMA6 y TypeScript
 
De Java 8 a Java 11 y 14
De Java 8 a Java 11 y 14De Java 8 a Java 11 y 14
De Java 8 a Java 11 y 14
 
MicroProfile benefits for monolitic applications
MicroProfile benefits for monolitic applicationsMicroProfile benefits for monolitic applications
MicroProfile benefits for monolitic applications
 
Kotlin+MicroProfile: Enseñando trucos de 20 años a un nuevo lenguaje
Kotlin+MicroProfile: Enseñando trucos de 20 años a un nuevo lenguajeKotlin+MicroProfile: Enseñando trucos de 20 años a un nuevo lenguaje
Kotlin+MicroProfile: Enseñando trucos de 20 años a un nuevo lenguaje
 
Kotlin+MicroProfile: Ensinando 20 anos para uma linguagem nova
Kotlin+MicroProfile: Ensinando 20 anos para uma linguagem novaKotlin+MicroProfile: Ensinando 20 anos para uma linguagem nova
Kotlin+MicroProfile: Ensinando 20 anos para uma linguagem nova
 
Eclipse MicroProfile para el desarrollador ocupado
Eclipse MicroProfile para el desarrollador ocupadoEclipse MicroProfile para el desarrollador ocupado
Eclipse MicroProfile para el desarrollador ocupado
 
Eclipse MicroProfile para o desenvolvedor ocupado
Eclipse MicroProfile para o desenvolvedor ocupadoEclipse MicroProfile para o desenvolvedor ocupado
Eclipse MicroProfile para o desenvolvedor ocupado
 
Eclipse MicroProfile metrics: Practical use cases
Eclipse MicroProfile metrics: Practical use casesEclipse MicroProfile metrics: Practical use cases
Eclipse MicroProfile metrics: Practical use cases
 

Recently uploaded

redes informaticas en una oficina administrativa
redes informaticas en una oficina administrativaredes informaticas en una oficina administrativa
redes informaticas en una oficina administrativa
nicho110
 

Recently uploaded (10)

Avances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvanaAvances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvana
 
Avances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estosAvances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estos
 
Guia Basica para bachillerato de Circuitos Basicos
Guia Basica para bachillerato de Circuitos BasicosGuia Basica para bachillerato de Circuitos Basicos
Guia Basica para bachillerato de Circuitos Basicos
 
Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21
 
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptxEVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
 
redes informaticas en una oficina administrativa
redes informaticas en una oficina administrativaredes informaticas en una oficina administrativa
redes informaticas en una oficina administrativa
 
How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.
 
Buenos_Aires_Meetup_Redis_20240430_.pptx
Buenos_Aires_Meetup_Redis_20240430_.pptxBuenos_Aires_Meetup_Redis_20240430_.pptx
Buenos_Aires_Meetup_Redis_20240430_.pptx
 
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
 
investigación de los Avances tecnológicos del siglo XXI
investigación de los Avances tecnológicos del siglo XXIinvestigación de los Avances tecnológicos del siglo XXI
investigación de los Avances tecnológicos del siglo XXI
 

Microservicios funcionales con Java 8, Java EE y Payara Micro