SlideShare una empresa de Scribd logo
1 de 54
Descargar para leer sin conexión
Empaquetado de aplicaciones Java con Docker y Kubernetes
Víctor Orozco - @tuxtor
21 de febrero de 2020
Academik
1
Monólito
Figura 1: Monólito
2
ESB
Figura 2: ESB 3
Microservicios
Figura 3: Microservicios
4
Monolito vs. Microservicios
5
Introducción a Docker
Linux
6
VMs
7
Hipervisores
8
Despliegue contenedores
9
Contenedor
Contenedor = bibliotecas + app + shell
10
Contenedor
Contenedor = bibliotecas + app + shell
Ideas generales:
• Distribución
• Volatilidad
• Automatización
11
Docker
• Cgroups + Namespace: Isolamiento de recursos de un grupo y visibilidad
entre procesos
• libcontainer (LXC/Libvirt/systemd-nspawn)
• SELinux, AppArmor, Netfilter
12
Docker
• Cgroups + Namespace: Isolamiento de recursos de un grupo y visibilidad
entre procesos
• libcontainer (LXC/Libvirt/systemd-nspawn)
• SELinux, AppArmor, Netfilter
• Ventajas: Boot time, menos overhead
12
Docker
• Cgroups + Namespace: Isolamiento de recursos de un grupo y visibilidad
entre procesos
• libcontainer (LXC/Libvirt/systemd-nspawn)
• SELinux, AppArmor, Netfilter
• Ventajas: Boot time, menos overhead
• Desventajas: OCI, Linux
12
Docker
• Cgroups + Namespace: Isolamiento de recursos de un grupo y visibilidad
entre procesos
• libcontainer (LXC/Libvirt/systemd-nspawn)
• SELinux, AppArmor, Netfilter
• Ventajas: Boot time, menos overhead
• Desventajas: OCI, Linux (meh!)
12
Demo 1
• Imagen base (ubuntu)
• Ejecución
• Agregar paquete
• Commit
• Ejecución
13
Demo 1
• docker pull ubuntu
• docker run ubuntu echo ”Hola ubuntu”
• docker run -it ubuntu /bin/bash
• apt-get update&&apt-get install nginx
• docker ps
• docker commit -id- tuxtor/nginx
• docker run -d -p 81:80 tuxtor/nginx
14
 
Docker y Java
14
Aplicaciones Java
15
Aplicaciones Java
• War sobre un contenedor o app server
• Microservicio como UberJar o FatJar
• Microservicio en Docker
16
 
17
War sobre app server
• Todos los app servers tienen imagenes listas
• Configuración debe ser externalizada
• Archivos descriptores (en imagen)
• Archivos de configuración de dominio (en imagen)
• Archivos properties (en war)
17
 
18
Microservicio como UberJar/FatJar
• El jar no requiere entorno para ejecutarse, solo JVM
• Configuración debe ser externalizada
• Archivos de configuración de dominio (en imagen)
• Archivos descriptores (en war)
• Configuración mediante archivos properties (en war)
18
 
19
Demo 2
Microservicio como FatJar + Docker + Config + Oracle Helidon
19
Microservicio en Docker
• ThinJar
• ThinJar - Mi código
• Container - Dependencias/runtime
• Archivos de configuración de dominio (en imagen)
• Archivos descriptores (en war)
• Configuración mediante archivos properties (en war)
20
 
21
Demo 3
Microservicio como ThinJar + Docker + Payara Micro
21
Límites de memoria
22
Límites de memoria - JVM
23
Límites de memoria - JVM
24
Límites de memoria - JVM
25
Límites de memoria
26
Java Options
1 CMD java -XX:+PrintFlagsFinal -XX:+PrintGCDetails
$JAVA_OPTIONS -jar java-container.jar
27
APIs vs Service Mesh
APIs
28
APIs
29
APIs
• REST API
• Configuration
• Discovery
• REST Client
• Monitoring
• Authentication
• Logging
• Resilience
30
APIs - Spring
• REST API - Spring Rest
• Configuration - Spring Config
• Discovery - Eureka, Zuul
• REST Client - Spring RestTemkplate
• Monitoring y tracing - Zipkin
• Authentication - Spring security
• Logging - Kibana
• Resilience - Hystrix
31
APIs - Basadas en Java/Jakarta EE
• REST API - JAX-RS
• Configuration - MicroProfile Config
• Discovery - Ad-hoc/Zookeeper
• REST Client - MicroProfile Client
• Monitoring y tracing - MicroProfile Healthcheck
• Authentication - MicroProfile JWT
• Logging - Kibana
• Resilience - MicroProfile Fault Tolerance
32
El camino a Kubernetes
33
El camino a Kubernetes
Créditos: Rafael Benevides
34
Kubernetes
Créditos: Rafael Benevides
35
Kubernetes
Créditos: Rafael Benevides 36
Kubernetes
Créditos: Rafael Benevides 37
Kubernetes
38
Kubernetes - Pod
¿Que es un pod?
• Uno o más contenedores
• IP Compartida
• Caen todos o ninguno (ciclo de vida)
• Storage compartido
• Recursos compartidos
39
Kubernetes - Deployment
¿Que es un deployment?
Descriptor que mantiene el número de PODs replicas en ejecución. Describe un
estado
40
Kubernetes - Servicios
¿Que es un servicio?
Agrupación de PODs, -e.g. una IP estable virtual y un nombre de DNS si se requiere-
41
Víctor Orozco
• vorozco@nabenik.com
• @tuxtor
• http://vorozco.com
• http://tuxtor.shekalug.org
This work is licensed under
Creative Commons Attribution-
NonCommercial-ShareAlike 3.0
Guatemala (CC BY-NC-SA 3.0 GT).
42
43

Más contenido relacionado

La actualidad más candente

Docker como la máxima expresión de Devops - WISIT 2015
Docker como la máxima expresión de Devops - WISIT 2015Docker como la máxima expresión de Devops - WISIT 2015
Docker como la máxima expresión de Devops - WISIT 2015
Gustavo Andres Brey
 

La actualidad más candente (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
 
Introducción a Kubernetes
Introducción a KubernetesIntroducción a Kubernetes
Introducción a Kubernetes
 
Introducción a Kotlin para desarrolladores Java
Introducción a Kotlin para desarrolladores JavaIntroducción a Kotlin para desarrolladores Java
Introducción a Kotlin para desarrolladores Java
 
Meetup de kubernetes, conceptos básicos.
Meetup  de kubernetes, conceptos básicos.Meetup  de kubernetes, conceptos básicos.
Meetup de kubernetes, conceptos básicos.
 
Presentación Docker
Presentación DockerPresentación Docker
Presentación Docker
 
Java EE, Microprofile y Payara Micro
Java EE, Microprofile y Payara MicroJava EE, Microprofile y Payara Micro
Java EE, Microprofile y Payara Micro
 
Docker como la máxima expresión de Devops - WISIT 2015
Docker como la máxima expresión de Devops - WISIT 2015Docker como la máxima expresión de Devops - WISIT 2015
Docker como la máxima expresión de Devops - WISIT 2015
 
Cloud Native Mexico - Introducción a Kubernetes
Cloud Native Mexico - Introducción a KubernetesCloud Native Mexico - Introducción a Kubernetes
Cloud Native Mexico - Introducción a Kubernetes
 
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
 
Overview atlas (1)
Overview atlas (1)Overview atlas (1)
Overview atlas (1)
 
Kubernetes technical overview and our experience at Restorando :: Buenos Aire...
Kubernetes technical overview and our experience at Restorando :: Buenos Aire...Kubernetes technical overview and our experience at Restorando :: Buenos Aire...
Kubernetes technical overview and our experience at Restorando :: Buenos Aire...
 
Solapas principales Ver(solapa activa) Editar Gestionar present...
 Solapas principales      Ver(solapa activa)     Editar     Gestionar present... Solapas principales      Ver(solapa activa)     Editar     Gestionar present...
Solapas principales Ver(solapa activa) Editar Gestionar present...
 
Microservicios funcionales con Java 8, Java EE y Payara Micro
Microservicios funcionales con Java 8, Java EE y Payara MicroMicroservicios funcionales con Java 8, Java EE y Payara Micro
Microservicios funcionales con Java 8, Java EE y Payara Micro
 
¿Cómo se despliega y autoescala Couchbase en Cloud? ¡Aprende de manera práctica!
¿Cómo se despliega y autoescala Couchbase en Cloud? ¡Aprende de manera práctica!¿Cómo se despliega y autoescala Couchbase en Cloud? ¡Aprende de manera práctica!
¿Cómo se despliega y autoescala Couchbase en Cloud? ¡Aprende de manera práctica!
 
Docker meetup :: Kubernetes en Restorando
Docker meetup :: Kubernetes en RestorandoDocker meetup :: Kubernetes en Restorando
Docker meetup :: Kubernetes en Restorando
 
Docker y todo eso... más o menos
Docker y todo eso... más o menosDocker y todo eso... más o menos
Docker y todo eso... más o menos
 
Kubernetes - #dockerconlima
Kubernetes  - #dockerconlimaKubernetes  - #dockerconlima
Kubernetes - #dockerconlima
 
Workshop 1 - Introducción a los Microservicios y Contenedores (@TechHub - Goo...
Workshop 1 - Introducción a los Microservicios y Contenedores (@TechHub - Goo...Workshop 1 - Introducción a los Microservicios y Contenedores (@TechHub - Goo...
Workshop 1 - Introducción a los Microservicios y Contenedores (@TechHub - Goo...
 
Introducción a Docker
Introducción a DockerIntroducción a Docker
Introducción a Docker
 
Kubernetes - Container Orchestration, Deployment and Scaling
Kubernetes - Container Orchestration, Deployment and ScalingKubernetes - Container Orchestration, Deployment and Scaling
Kubernetes - Container Orchestration, Deployment and Scaling
 

Similar a Empaquetando aplicaciones Java con Docker y Kubernetes

Similar a Empaquetando aplicaciones Java con Docker y Kubernetes (20)

Game of pods - Kubernetes
Game of pods - KubernetesGame of pods - Kubernetes
Game of pods - Kubernetes
 
La nube, tu app y tu
La nube, tu app y tuLa nube, tu app y tu
La nube, tu app y tu
 
Docker para Data Scientist - Master en Data Science URJC
Docker para Data Scientist - Master en Data Science URJCDocker para Data Scientist - Master en Data Science URJC
Docker para Data Scientist - Master en Data Science URJC
 
Curso gratuito de Docker
Curso gratuito de DockerCurso gratuito de Docker
Curso gratuito de Docker
 
Docker Compose para el Docker Lima Meetup Mayo
Docker Compose para el Docker Lima Meetup MayoDocker Compose para el Docker Lima Meetup Mayo
Docker Compose para el Docker Lima Meetup Mayo
 
Elias Grande - Dagda [rootedvlc4]
Elias Grande - Dagda [rootedvlc4]Elias Grande - Dagda [rootedvlc4]
Elias Grande - Dagda [rootedvlc4]
 
Primeros pasos con Docker
Primeros pasos con DockerPrimeros pasos con Docker
Primeros pasos con Docker
 
Docker: de principante a pro
Docker: de principante a proDocker: de principante a pro
Docker: de principante a pro
 
Dockeriza tu SQL Server
Dockeriza tu SQL ServerDockeriza tu SQL Server
Dockeriza tu SQL Server
 
Devopsconf2015- Marcos y Jonathan Mantika
Devopsconf2015- Marcos y Jonathan MantikaDevopsconf2015- Marcos y Jonathan Mantika
Devopsconf2015- Marcos y Jonathan Mantika
 
Introduccion a SQL Server 2017 en Docker
Introduccion a SQL Server 2017 en Docker Introduccion a SQL Server 2017 en Docker
Introduccion a SQL Server 2017 en Docker
 
Orquestación de contenedores con Kubernetes
Orquestación de contenedores con KubernetesOrquestación de contenedores con Kubernetes
Orquestación de contenedores con Kubernetes
 
Orquestación de contenedores con Kubernetes SGNext
Orquestación de contenedores con Kubernetes SGNextOrquestación de contenedores con Kubernetes SGNext
Orquestación de contenedores con Kubernetes SGNext
 
VLCSofting 2021 - HARD AS A POD 落. HARDENING DE DESPLIEGUES EN KUBERNETES CON...
VLCSofting 2021 - HARD AS A POD 落. HARDENING DE DESPLIEGUES EN KUBERNETES CON...VLCSofting 2021 - HARD AS A POD 落. HARDENING DE DESPLIEGUES EN KUBERNETES CON...
VLCSofting 2021 - HARD AS A POD 落. HARDENING DE DESPLIEGUES EN KUBERNETES CON...
 
Curso Kubernetes CodeURJC
Curso Kubernetes CodeURJCCurso Kubernetes CodeURJC
Curso Kubernetes CodeURJC
 
Diseño de centros de computo multi sitio con vmware NSX - vforum 2014
Diseño de centros de computo multi sitio con vmware NSX - vforum 2014Diseño de centros de computo multi sitio con vmware NSX - vforum 2014
Diseño de centros de computo multi sitio con vmware NSX - vforum 2014
 
Docker
DockerDocker
Docker
 
Docker y Kubernetes, en busca de la alta disponibilidad
Docker y Kubernetes, en busca de la alta disponibilidadDocker y Kubernetes, en busca de la alta disponibilidad
Docker y Kubernetes, en busca de la alta disponibilidad
 
Migrando CI a Docker
Migrando CI a DockerMigrando CI a Docker
Migrando CI a Docker
 
Iniciando con containers en azure
Iniciando con containers en azureIniciando con containers en azure
Iniciando con containers en azure
 

Más de Víctor Leonel Orozco López

Más de 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...
 
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
 
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
 
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
 
Introducción a JakartaEE 8
Introducción a JakartaEE 8Introducción a JakartaEE 8
Introducción a JakartaEE 8
 
OWASP Top 10 101 en Java EE
OWASP Top 10 101 en Java EEOWASP Top 10 101 en Java EE
OWASP Top 10 101 en Java EE
 

Último

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

Último (12)

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.
 
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptxEL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
 
Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21
 
Buenos_Aires_Meetup_Redis_20240430_.pptx
Buenos_Aires_Meetup_Redis_20240430_.pptxBuenos_Aires_Meetup_Redis_20240430_.pptx
Buenos_Aires_Meetup_Redis_20240430_.pptx
 
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptxPROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
 
pruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITpruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNIT
 
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
 
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...
 
redes informaticas en una oficina administrativa
redes informaticas en una oficina administrativaredes informaticas en una oficina administrativa
redes informaticas en una oficina administrativa
 
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
 
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
 
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
 

Empaquetando aplicaciones Java con Docker y Kubernetes