SlideShare una empresa de Scribd logo
Cómo leer una licencia de
software y no morir en el intento
Pablo Chico
Organizador Docker Madrid Meetup
MAD · NOV 22-23 · 2019
Micael Gallego
Profesor Universidad Rey Juan Carlos
About Us
Micael Gallego
● @micael_gallego
● Java Developer
● Laboratorio software CodeURJC
● Director Máster Cloud Apps en la
Universidad Rey Juan Carlos
About Us
Pablo Chico de Guzmán
● @pchico83
● Docker & Cloud Native Madrid
● 4 years working @Docker
● Kubernetes for Developers
● https://cloud.okteto.com
¿Qué es Kubernetes?
● Docker: Construcción y distribución de aplicaciones
● Kubernetes: Despliegue en producción en cluster
● Abstracción de cloud para developers
¿Desplegar en Kubernetes durante el desarrollo?
● Aplicaciones nativas de Kubernetes
● Acceso a la Kubernetes API
● Aplicaciones que dependen de Kubernetes para funcionar
● Acoplada con Config Maps, Secretos, Volúmenes
● Microservices, Service Discovery de Kubernetes
● Networking, Service mesh
¿Cómo desplegar en Kubernetes durante el desarrollo?
¿Cómo acelerar el ciclo de build/push/redeploy?
FROM python:3-alpine
ADD requirements.txt requirements.txt
RUN pip install -r requirements.txt
ADD . /src
CMD ["python", "app.py"]
Desarrollo Java en un IDE (sin Kubernetes)
● Java es un lenguaje que necesita compilación
● Los IDEs permiten compilación incremental (muy rápida):
● Durante la edición: Para ayudar al developer (autocompletar y errores)
● Al guardar el fichero: Genera los binarios (.class) en disco
Desarrollo Java en un IDE (sin Kubernetes)
● Si se usa un IDE la experiencia es “similar” a los lenguajes de script
● Se guarda el fichero y está compilado de forma inmediata
● No hay esperas por el proceso de compilación
● Los frameworks se recargan automáticamente ante cambios (Hot Reload)
https://github.com/micaelgallego/k8s-dev-tools-commitconf19
Desarrollo Java en un IDE (sin Kubernetes)
Desarrollo Java con despliegue en Kubernetes
● Compilación y construcción del contenedor
FROM maven:3.6-jdk-8 as builder
COPY . /code/
WORKDIR /code
RUN mvn package
FROM openjdk:8-jre
COPY --from=builder /code/target/*.jar /usr/app/
WORKDIR /usr/app
CMD [ "java", "-jar", "demoservice-0.0.1-SNAPSHOT.jar" ]
Dockerfile
$ docker build . -t micaelgallego/demoservice-k8s1
$ docker push micaelgallego/demoservice-k8s1:latest
demoservice-k8s1
Desarrollo Java con despliegue en Kubernetes
● Despliegue en Kubernetes
$ kubectl apply -f k8s
$ kubectl get deployments,services
NAME READY UP-TO-DATE AVAILABLE AGE
deployment.extensions/demoservice-dply 0/1 1 0 3m1s
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
service/demoservice-service NodePort 10.104.15.250 <none> 8080:31236/TCP 31s
service/kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 98d
demoservice-k8s1
Desarrollo Java con despliegue en Kubernetes
● Añadir un cambio en el servicio
● Compilación del código Java
● Descarga librerías Maven
● Construye el fat jar desde cero
● Construcción del contenedor con un nuevo fichero de 16Mb
● Publicación del contenedor en un registro (transferencia de red)
● Reinicio del deployment en Kubernetes (si el tag es latest)
$ kubectl rollout restart deployment demoservice-dply
demoservice-k8s1
Desarrollo Java con despliegue en Kubernetes
¿Se pueden optimizar las capas de la imagen con Java?
● No crear un fat jar con aplicación y librerías
● Separar librerías y aplicación en capas diferentes
● Cuando cambia la aplicación se transfieren los .class de la aplicación
● Extra bonus! La aplicación arrancará más rápido
https://spring.io/blog/2018/12/12/how-fast-is-spring
Optimización de capas con Dockerfile en SpringBoot
https://spring.io/guides/gs/spring-boot-docker/
Dockerfile
Optimización de capas con Jib
● Jib
● Dockeriza y publica cualquier aplicación Java
● No es necesario el Docker daemon
● Imagen con capas optimizadas (libs vs app)
● Imagen base ligera (distroless)
● Integrado con Maven y Gradle
● Desarrollado por Google
https://github.com/GoogleContainerTools/jib
Optimización de capas con Jib
<project ...>
...
<build>
<plugins>
<plugin>
<groupId>com.google.cloud.tools</groupId>
<artifactId>jib-maven-plugin</artifactId>
<version>1.6.1</version>
</plugin>
</plugins>
</build>
</project>
pom.xml
$ ./mvnw compile jib:build -Dimage=micaelgallego/demoservice-k8s2:latest
$ kubectl apply -f k8s
demoservice-k8s2
Optimización de capas con Jib
● Añadir un cambio en el servicio
$ kubectl rollout restart deployment demoservice-dply
$ ./mvnw compile jib:build -Dimage=micaelgallego/demoservice-k8s2:latest
demoservice-k8s2
Optimización de capas con Jib
¿Podemos optimizar más el proceso?
● Si tuviéramos un
compilador Java en el pod
podríamos enviar los
cambios en los ficheros
fuente que han sido
actualizados
● Con hot reload el cambio
en el fuente lanzaría la
compilación y la
actualización del servicio
en el pod
Okteto: Envía tu código del laptop al pod del cluster
● Sustituye el pod de la aplicación por otro pod con Maven (compilador)
● Ejecuta la aplicación de nuevo en ese contenedor (mvn spring-boot:run)
● Sincroniza los ficheros del laptop a ese pod de forma automática
Okteto: Envía tu código del laptop al pod del cluster
$ okteto up
$ kubectl apply -f k8s
demoservice-k8s3
Okteto: Envía tu código del laptop al pod del cluster
name: demoservice-dply
image: maven:3.6-jdk-8
command:
- mvn
- spring-boot:run
volumes:
- /root/.m2
forward:
- 8080:8080
okteto.yml
demoservice-k8s3
name: demoservice-dply
image: maven:3.6-jdk-8
command:
- mvn
- spring-boot:run
volumes:
- /root/.m2
forward:
- 8080:8080
Okteto: Envía tu código del laptop al pod del cluster
okteto.yml
Sustituye el pod del deployment
demoservice-dply...
...por una imagen con maven
Ejecuta la aplicación
Expone la app en localhost
Guarda la caché de maven en volúmen
demoservice-k8s3
Okteto: Depuración y LiveReload
Eclipse se puede conectar a una JVM
para hacer depuración remota
demoservice-k8s4
La extensión del navegador
LiveReload recarga la página cuando
detecta un cambio
Okteto: Depuración y LiveReload
name: demoservice-dply
image: maven:3.6-jdk-8
command:
- mvn
- spring-boot:run
volumes:
- /root/.m2
forward:
- 8080:8080
- 8000:8000
- 35729:35729
okteto.yml
● Podemos configurar la aplicación para que exporte el puerto 8000 para
depuración remota desde Eclipse
● Con las dev-tools expone el puerto 35729 para el plugin Remote LiveReload
del navegador
...
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<jvmArguments>
-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=8000
</jvmArguments>
</configuration>
</plugin>
...
pom.xml
demoservice-k8s4
Okteto: Envía tu código del laptop al pod del cluster
+
2
demoservice-k8s4
Okteto: Envía tu código del laptop al pod del cluster
demoservice-k8s4
Otros Tools de Desarrollo en Kubernetes
Despliegue de pods y sincronización de ficheros
Otros Tools de Desarrollo en Kubernetes
Tu laptop “conectado” a los servicios del cluster
Otros Tools de Desarrollo en Kubernetes
IDE ejecutado en el pod con interfaz remota / web
VS Code Remote
Development
Conclusiones
● Puedes evitar los 5
minutos en el ciclo de
build/push/redeploy
● Muchas herramientas
para desarrollo cloud
native eficiente
● Elige la más adecuada
para tu tecnología / flujo
de trabajo
Cómo leer una licencia de
software y no morir en el intento
Pablo Chico MAD · NOV 22-23 · 2019
Micael Gallego
Gracias!

Más contenido relacionado

PDF
Curso Angular 9 - CodeURJC - Marzo 2020
PDF
Node para Javeros: Conoce a tu enemigo
PDF
Dev Tools para Kubernetes - Codemotion 2019
PDF
TypeScript - Angular 2 - ionic 2
PDF
¿Cómo poner software de calidad en manos del usuario de forma rápida?
PPTX
WebRTC y Kurento en el T3cgFest 2015
PDF
Software libre para videoconferencias
PDF
Concurrencia y asincronía: Lenguajes, modelos y rendimiento: GDG Toledo Enero...
Curso Angular 9 - CodeURJC - Marzo 2020
Node para Javeros: Conoce a tu enemigo
Dev Tools para Kubernetes - Codemotion 2019
TypeScript - Angular 2 - ionic 2
¿Cómo poner software de calidad en manos del usuario de forma rápida?
WebRTC y Kurento en el T3cgFest 2015
Software libre para videoconferencias
Concurrencia y asincronía: Lenguajes, modelos y rendimiento: GDG Toledo Enero...

La actualidad más candente (20)

PDF
TypeScript para Javeros. Por fin un lenguaje 'de verdad' en el browser
PDF
Testeando aplicaciones Kubernetes: escalabilidad y tolerancia a fallos
PDF
T3chFest 2016 - De Java a Groovy: ¡Hora de Aventuras!
PDF
Curso Kubernetes CodeURJC
PDF
Angular 6
PDF
Docker para Data Scientist - Master en Data Science URJC
PDF
Desarrollo con Java y metodologías agiles
PDF
Jobsket Spring 2GX Madrid
PPTX
Aplicaciones Web SPA con WebAPI y TypeScript
ODP
Taller Grails
PDF
Desarrollo web front-end con TypeScript, Angular 2 e Ionic
PDF
Introducción a Angular
KEY
Java poliglota
PDF
Kubernetes: Caso de uso real con mememtum y Taniwa
PDF
Mejorando la productividad en proyectos java EE con CI y CD - OTN 2015
PPTX
Python gui-mvc-pyqt
PPTX
React, Flux y React native
PPTX
Proyect Evenge. Event manager
PDF
Gradle vs Maven
TypeScript para Javeros. Por fin un lenguaje 'de verdad' en el browser
Testeando aplicaciones Kubernetes: escalabilidad y tolerancia a fallos
T3chFest 2016 - De Java a Groovy: ¡Hora de Aventuras!
Curso Kubernetes CodeURJC
Angular 6
Docker para Data Scientist - Master en Data Science URJC
Desarrollo con Java y metodologías agiles
Jobsket Spring 2GX Madrid
Aplicaciones Web SPA con WebAPI y TypeScript
Taller Grails
Desarrollo web front-end con TypeScript, Angular 2 e Ionic
Introducción a Angular
Java poliglota
Kubernetes: Caso de uso real con mememtum y Taniwa
Mejorando la productividad en proyectos java EE con CI y CD - OTN 2015
Python gui-mvc-pyqt
React, Flux y React native
Proyect Evenge. Event manager
Gradle vs Maven
Publicidad

Similar a Herramientas y plugins para el desarrollo de aplicaciones cloud native para Kubernetes - CommitConf 2019 (20)

PDF
Despliegue de aplicaciones Java con Docker y Kubernetes
PDF
Empaquetando aplicaciones Java con Docker y Kubernetes
PDF
El camino de Java a Kubernetes
PPTX
Kubernetes workshop
PPTX
Game of pods - Kubernetes
PPTX
Kubernetes 101
PDF
Kubernetes para developers
PPTX
Microservicios con Quarkus
PDF
Cloud Native Mexico - Introducción a Kubernetes
PPTX
Google Cloud Storage ambiente en desarrollo en la nube
PDF
Kubernetes technical overview and our experience at Restorando :: Buenos Aire...
PPTX
Devops episodio 1. devOpsTnf
PPTX
Jug málaga docker 101 - final
PDF
Commit conf arquitectura-microservicios_v1.0
PPTX
Esos contenedores, ¡a producción! (Commit Conf 2018)
PDF
JBCNConf 2022: Go vs Java (Kubernetes)
PDF
Proyectos JAVA con maven
PDF
Proyectos java-con-maven
Despliegue de aplicaciones Java con Docker y Kubernetes
Empaquetando aplicaciones Java con Docker y Kubernetes
El camino de Java a Kubernetes
Kubernetes workshop
Game of pods - Kubernetes
Kubernetes 101
Kubernetes para developers
Microservicios con Quarkus
Cloud Native Mexico - Introducción a Kubernetes
Google Cloud Storage ambiente en desarrollo en la nube
Kubernetes technical overview and our experience at Restorando :: Buenos Aire...
Devops episodio 1. devOpsTnf
Jug málaga docker 101 - final
Commit conf arquitectura-microservicios_v1.0
Esos contenedores, ¡a producción! (Commit Conf 2018)
JBCNConf 2022: Go vs Java (Kubernetes)
Proyectos JAVA con maven
Proyectos java-con-maven
Publicidad

Más de Micael Gallego (17)

PDF
Modernizando el desarrollo de decenas de mini-apps web con Kubernetes - TechF...
PDF
La evaluación con realimentación y posibilidad de recuperación para evitar el...
PDF
WebRTC en tu web con OpenVidu
PDF
Testing cloud and kubernetes applications - ElasTest
PDF
OpenVidu Commitconf 2018
PDF
Introducción a las Pruebas Software
PDF
Testing fácil con Docker: Gestiona dependencias y unifica entornos
PDF
Using Docker to build and test in your laptop and Jenkins
PDF
Desarrollo centrado en tareas en Eclipse con Mylyn 2009
PDF
Como ser mas productivo en el desarrollo de aplicaciones
PDF
TypeScript: Un lenguaje aburrido para programadores torpes y tristes
PDF
El Aprendizaje Basado en Proyectos y la Clase Invertida para acercar el mundo...
PDF
El mundo real en el aula, con la ayuda del profesor
PDF
Angular 2 Campus Madrid Septiembre 2016
PDF
GRASP con PR para el SRFLP en el MAEB 2016
PDF
TypeScript para Javeros: Cómo programar web front-end y sentirse como en casa
PDF
JavaScript para Javeros. ¿Cómo ser moderno y no morir en el intento?
Modernizando el desarrollo de decenas de mini-apps web con Kubernetes - TechF...
La evaluación con realimentación y posibilidad de recuperación para evitar el...
WebRTC en tu web con OpenVidu
Testing cloud and kubernetes applications - ElasTest
OpenVidu Commitconf 2018
Introducción a las Pruebas Software
Testing fácil con Docker: Gestiona dependencias y unifica entornos
Using Docker to build and test in your laptop and Jenkins
Desarrollo centrado en tareas en Eclipse con Mylyn 2009
Como ser mas productivo en el desarrollo de aplicaciones
TypeScript: Un lenguaje aburrido para programadores torpes y tristes
El Aprendizaje Basado en Proyectos y la Clase Invertida para acercar el mundo...
El mundo real en el aula, con la ayuda del profesor
Angular 2 Campus Madrid Septiembre 2016
GRASP con PR para el SRFLP en el MAEB 2016
TypeScript para Javeros: Cómo programar web front-end y sentirse como en casa
JavaScript para Javeros. ¿Cómo ser moderno y no morir en el intento?

Último (6)

DOCX
trabajo programacion.docxxdxxxddxdxxdxdxxxdxxdxdxd
PPTX
sistemas de informacion.................
PPTX
Conceptos basicos de Base de Datos y sus propiedades
PDF
AutoCAD Herramientas para el futuro, Juan Fandiño
PPTX
Derechos_de_Autor_y_Creative_Commons.pptx
PDF
Su punto de partida en la IA: Microsoft 365 Copilot Chat
trabajo programacion.docxxdxxxddxdxxdxdxxxdxxdxdxd
sistemas de informacion.................
Conceptos basicos de Base de Datos y sus propiedades
AutoCAD Herramientas para el futuro, Juan Fandiño
Derechos_de_Autor_y_Creative_Commons.pptx
Su punto de partida en la IA: Microsoft 365 Copilot Chat

Herramientas y plugins para el desarrollo de aplicaciones cloud native para Kubernetes - CommitConf 2019

  • 1. Cómo leer una licencia de software y no morir en el intento Pablo Chico Organizador Docker Madrid Meetup MAD · NOV 22-23 · 2019 Micael Gallego Profesor Universidad Rey Juan Carlos
  • 2. About Us Micael Gallego ● @micael_gallego ● Java Developer ● Laboratorio software CodeURJC ● Director Máster Cloud Apps en la Universidad Rey Juan Carlos
  • 3. About Us Pablo Chico de Guzmán ● @pchico83 ● Docker & Cloud Native Madrid ● 4 years working @Docker ● Kubernetes for Developers ● https://cloud.okteto.com
  • 4. ¿Qué es Kubernetes? ● Docker: Construcción y distribución de aplicaciones ● Kubernetes: Despliegue en producción en cluster ● Abstracción de cloud para developers
  • 5. ¿Desplegar en Kubernetes durante el desarrollo? ● Aplicaciones nativas de Kubernetes ● Acceso a la Kubernetes API ● Aplicaciones que dependen de Kubernetes para funcionar ● Acoplada con Config Maps, Secretos, Volúmenes ● Microservices, Service Discovery de Kubernetes ● Networking, Service mesh
  • 6. ¿Cómo desplegar en Kubernetes durante el desarrollo?
  • 7. ¿Cómo acelerar el ciclo de build/push/redeploy? FROM python:3-alpine ADD requirements.txt requirements.txt RUN pip install -r requirements.txt ADD . /src CMD ["python", "app.py"]
  • 8. Desarrollo Java en un IDE (sin Kubernetes) ● Java es un lenguaje que necesita compilación ● Los IDEs permiten compilación incremental (muy rápida): ● Durante la edición: Para ayudar al developer (autocompletar y errores) ● Al guardar el fichero: Genera los binarios (.class) en disco
  • 9. Desarrollo Java en un IDE (sin Kubernetes) ● Si se usa un IDE la experiencia es “similar” a los lenguajes de script ● Se guarda el fichero y está compilado de forma inmediata ● No hay esperas por el proceso de compilación ● Los frameworks se recargan automáticamente ante cambios (Hot Reload) https://github.com/micaelgallego/k8s-dev-tools-commitconf19
  • 10. Desarrollo Java en un IDE (sin Kubernetes)
  • 11. Desarrollo Java con despliegue en Kubernetes ● Compilación y construcción del contenedor FROM maven:3.6-jdk-8 as builder COPY . /code/ WORKDIR /code RUN mvn package FROM openjdk:8-jre COPY --from=builder /code/target/*.jar /usr/app/ WORKDIR /usr/app CMD [ "java", "-jar", "demoservice-0.0.1-SNAPSHOT.jar" ] Dockerfile $ docker build . -t micaelgallego/demoservice-k8s1 $ docker push micaelgallego/demoservice-k8s1:latest demoservice-k8s1
  • 12. Desarrollo Java con despliegue en Kubernetes ● Despliegue en Kubernetes $ kubectl apply -f k8s $ kubectl get deployments,services NAME READY UP-TO-DATE AVAILABLE AGE deployment.extensions/demoservice-dply 0/1 1 0 3m1s NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE service/demoservice-service NodePort 10.104.15.250 <none> 8080:31236/TCP 31s service/kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 98d demoservice-k8s1
  • 13. Desarrollo Java con despliegue en Kubernetes ● Añadir un cambio en el servicio ● Compilación del código Java ● Descarga librerías Maven ● Construye el fat jar desde cero ● Construcción del contenedor con un nuevo fichero de 16Mb ● Publicación del contenedor en un registro (transferencia de red) ● Reinicio del deployment en Kubernetes (si el tag es latest) $ kubectl rollout restart deployment demoservice-dply demoservice-k8s1
  • 14. Desarrollo Java con despliegue en Kubernetes
  • 15. ¿Se pueden optimizar las capas de la imagen con Java? ● No crear un fat jar con aplicación y librerías ● Separar librerías y aplicación en capas diferentes ● Cuando cambia la aplicación se transfieren los .class de la aplicación ● Extra bonus! La aplicación arrancará más rápido https://spring.io/blog/2018/12/12/how-fast-is-spring
  • 16. Optimización de capas con Dockerfile en SpringBoot https://spring.io/guides/gs/spring-boot-docker/ Dockerfile
  • 17. Optimización de capas con Jib ● Jib ● Dockeriza y publica cualquier aplicación Java ● No es necesario el Docker daemon ● Imagen con capas optimizadas (libs vs app) ● Imagen base ligera (distroless) ● Integrado con Maven y Gradle ● Desarrollado por Google https://github.com/GoogleContainerTools/jib
  • 18. Optimización de capas con Jib <project ...> ... <build> <plugins> <plugin> <groupId>com.google.cloud.tools</groupId> <artifactId>jib-maven-plugin</artifactId> <version>1.6.1</version> </plugin> </plugins> </build> </project> pom.xml $ ./mvnw compile jib:build -Dimage=micaelgallego/demoservice-k8s2:latest $ kubectl apply -f k8s demoservice-k8s2
  • 19. Optimización de capas con Jib ● Añadir un cambio en el servicio $ kubectl rollout restart deployment demoservice-dply $ ./mvnw compile jib:build -Dimage=micaelgallego/demoservice-k8s2:latest demoservice-k8s2
  • 21. ¿Podemos optimizar más el proceso? ● Si tuviéramos un compilador Java en el pod podríamos enviar los cambios en los ficheros fuente que han sido actualizados ● Con hot reload el cambio en el fuente lanzaría la compilación y la actualización del servicio en el pod
  • 22. Okteto: Envía tu código del laptop al pod del cluster ● Sustituye el pod de la aplicación por otro pod con Maven (compilador) ● Ejecuta la aplicación de nuevo en ese contenedor (mvn spring-boot:run) ● Sincroniza los ficheros del laptop a ese pod de forma automática
  • 23. Okteto: Envía tu código del laptop al pod del cluster $ okteto up $ kubectl apply -f k8s demoservice-k8s3
  • 24. Okteto: Envía tu código del laptop al pod del cluster name: demoservice-dply image: maven:3.6-jdk-8 command: - mvn - spring-boot:run volumes: - /root/.m2 forward: - 8080:8080 okteto.yml demoservice-k8s3
  • 25. name: demoservice-dply image: maven:3.6-jdk-8 command: - mvn - spring-boot:run volumes: - /root/.m2 forward: - 8080:8080 Okteto: Envía tu código del laptop al pod del cluster okteto.yml Sustituye el pod del deployment demoservice-dply... ...por una imagen con maven Ejecuta la aplicación Expone la app en localhost Guarda la caché de maven en volúmen demoservice-k8s3
  • 26. Okteto: Depuración y LiveReload Eclipse se puede conectar a una JVM para hacer depuración remota demoservice-k8s4 La extensión del navegador LiveReload recarga la página cuando detecta un cambio
  • 27. Okteto: Depuración y LiveReload name: demoservice-dply image: maven:3.6-jdk-8 command: - mvn - spring-boot:run volumes: - /root/.m2 forward: - 8080:8080 - 8000:8000 - 35729:35729 okteto.yml ● Podemos configurar la aplicación para que exporte el puerto 8000 para depuración remota desde Eclipse ● Con las dev-tools expone el puerto 35729 para el plugin Remote LiveReload del navegador ... <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <configuration> <jvmArguments> -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=8000 </jvmArguments> </configuration> </plugin> ... pom.xml demoservice-k8s4
  • 28. Okteto: Envía tu código del laptop al pod del cluster + 2 demoservice-k8s4
  • 29. Okteto: Envía tu código del laptop al pod del cluster demoservice-k8s4
  • 30. Otros Tools de Desarrollo en Kubernetes Despliegue de pods y sincronización de ficheros
  • 31. Otros Tools de Desarrollo en Kubernetes Tu laptop “conectado” a los servicios del cluster
  • 32. Otros Tools de Desarrollo en Kubernetes IDE ejecutado en el pod con interfaz remota / web VS Code Remote Development
  • 33. Conclusiones ● Puedes evitar los 5 minutos en el ciclo de build/push/redeploy ● Muchas herramientas para desarrollo cloud native eficiente ● Elige la más adecuada para tu tecnología / flujo de trabajo
  • 34. Cómo leer una licencia de software y no morir en el intento Pablo Chico MAD · NOV 22-23 · 2019 Micael Gallego Gracias!