SlideShare a Scribd company logo
1 of 28
Download to read offline
Iván López @ilopmar
Iván López (@ilopmar)
Iván López @ilopmar
Serverless
Iván López @ilopmar
- Framework para microservicios en la JVM
- Ultra-ligero & reactive (basado en Netty)
- Java, Groovy & Kotlin
- Ahead of Time compilation (AoT)
- Sin reflection ni runtime proxies
- Arranque muy rápido
- Consumo de memoria bajo
- Natively Cloud Native
- Soporte para Serverless: AWS, Azure, Google Cloud, Oracle Cloud
- Soporte para GraalVM (mejorado en Micronaut 2.0)
Micronaut
Iván López @ilopmar
Serverless en Micronaut
Tipo aplicación Triggers
Application o
Serverless function
HTTP request a un único
endpoint
Application HTTP requests a múltiples
endpoints
Serverless function Eventos: S3, queue,
scheduled
Iván López @ilopmar
AWS Lambda
Iván López @ilopmar
Problema “cold start”
- AWS Lambda creas instancias bajo demanada
- Inicialización en primera petición
- En siguientes peticiones se reutiliza
- No sólo problema en Servless,
también con contenedores
Iván López @ilopmar
Inicialización
- AWS Lambda arranca JVM
- Java runtime carga e inicializa handler class
- Lambda llama al método handler
Iván López @ilopmar
Soluciones
- Aumentar la memoria de la Lambda
- Más memoria –> Más CPU
- Más memoria –> Más coste
- Usar static initizaliers para cargar clases
- Evitar reflection
- Evitar classpath scanning
- Eliminar dependencies no utilizadas
- Usar AWS SDK v2 (más modular)
- Evitar AWS auto-discovery
Iván López @ilopmar
- Substrate VM: compilar aplicaciones Java a binarios nativos
- https://www.graalvm.org
GraalVM
Iván López @ilopmar
Demo
- Misma app de ejemplo
- ICNDB API (Internet Chuck Norris DB)
- https://github.com/ilopmar/codemotion-madrid-2020-micronaut-aws
- joke-function-jvm
- joke-function-graalvm
- joke-app-jvm
- joke-app-graalvm
Show me
the code
Iván López @ilopmar
Joke-app JVM – Cold start
Iván López @ilopmar
Joke-app JVM – Cold start
RequestId: 3576dc46-98bf-453e-b9d8-5ea6ecb54789
Duration: 4308.04 ms
Billed Duration: 4400 ms
Memory Size: 512 MB Max
Memory Used: 226 MB
Init Duration: 4434.35 ms
Iván López @ilopmar
Joke-app JVM – Warm request
Iván López @ilopmar
Joke-app JVM – Warm request
RequestId: f6f6b28e-6cd6-4818-9fa8-88aabc6e8170
Duration: 542.91 ms
Billed Duration: 600 ms
Memory Size: 512 MB
Max Memory Used: 271 MB
Iván López @ilopmar
Joke-app JVM
$ time curl $API_ENDPOINT/jokes/category/nerdy
# Cold start
real 0m9,000s
# Warm
real 0m0,823s
real 0m0,785s
real 0m0,726s
real 0m0,341s
Iván López @ilopmar
Joke-app GraalVM – Cold start
Iván López @ilopmar
Joke-app GraalVM – Cold start
RequestId: b0a719a7-e570-41a2-add6-422e3c0c599e
Duration: 774.41 ms
Billed Duration: 1300 ms
Memory Size: 512 MB
Max Memory Used: 201 MB
Init Duration: 479.62 ms
Iván López @ilopmar
Joke-app GraalVM – Warm request
Iván López @ilopmar
Joke-app GraalVM – Warm request
RequestId: dff7db10-46b7-4825-a0ad-96abca5066f7
Duration: 463.04 ms
Billed Duration: 500 ms
Memory Size: 512 MB Max
Memory Used: 273 MB
Iván López @ilopmar
Joke-app GraalVM
$ time curl $API_ENDPOINT/jokes/category/nerdy
# Cold start
real 0m1,656s
# Warm
real 0m0,383s
real 0m0,460s
real 0m0,419s
real 0m0,261s
Iván López @ilopmar
Comparativa
Runtime Cold start Warm request
9 seg ~ 0,6 seg
1,6 seg ~ 0,3 seg
Iván López @ilopmar
Resumen
- Uso de Java y JVM
- Triggers
- Serverless function vs Application
- Micronaut hace muy sencilla la integración
- GraalVM mejora mucho el cold start
Iván López @ilopmar
Recursos
- @micronautfw
- https://gitter.im/micronautfw
- https://docs.micronaut.io
- https://guides.micronaut.io (*AWS guides)
- https://micronaut.io/launch
- https://github.com/micronaut-projects/micronaut-core
- https://github.com/micronaut-projects/micronaut-aws
¡Gracias!
@ilopmar
lopez.ivan@gmail.com
https://github.com/ilopmar
Iván López
https://bit.ly/codemotion-mn-aws
¿Preguntas?

More Related Content

What's hot

What's hot (10)

JVM Reactive Programming
JVM Reactive ProgrammingJVM Reactive Programming
JVM Reactive Programming
 
.NET Memoria y Rendimiento
.NET Memoria y Rendimiento.NET Memoria y Rendimiento
.NET Memoria y Rendimiento
 
Aplicaciones en tiempo real con nodejs y html5
Aplicaciones en tiempo real con nodejs y html5Aplicaciones en tiempo real con nodejs y html5
Aplicaciones en tiempo real con nodejs y html5
 
Distributed Task Processing with Celery - PyZH
Distributed Task Processing with Celery - PyZHDistributed Task Processing with Celery - PyZH
Distributed Task Processing with Celery - PyZH
 
Alta disponibilidad con Replicas de MySQL en AWS
Alta disponibilidad con Replicas de MySQL en AWSAlta disponibilidad con Replicas de MySQL en AWS
Alta disponibilidad con Replicas de MySQL en AWS
 
App en tiempo real con HTML5+Node.js+Socket.IO
App en tiempo real con HTML5+Node.js+Socket.IOApp en tiempo real con HTML5+Node.js+Socket.IO
App en tiempo real con HTML5+Node.js+Socket.IO
 
Apache, getting the best version
Apache, getting the best versionApache, getting the best version
Apache, getting the best version
 
Optimización Servidor Web
Optimización Servidor WebOptimización Servidor Web
Optimización Servidor Web
 
Aws Elastic Beanstalk + Docker
Aws Elastic Beanstalk + DockerAws Elastic Beanstalk + Docker
Aws Elastic Beanstalk + Docker
 
Magallanes - PHPmvd Meet Up - Mayo 2014
Magallanes - PHPmvd Meet Up - Mayo 2014Magallanes - PHPmvd Meet Up - Mayo 2014
Magallanes - PHPmvd Meet Up - Mayo 2014
 

Similar to Codemotion Madrid 2020 - Serverless con Micronaut

Nodejs.introduccion
Nodejs.introduccionNodejs.introduccion
Nodejs.introduccion
killfill
 
AWS Presentacion Universidad de los Andes "Escalando para sus primeros 10 Mil...
AWS Presentacion Universidad de los Andes "Escalando para sus primeros 10 Mil...AWS Presentacion Universidad de los Andes "Escalando para sus primeros 10 Mil...
AWS Presentacion Universidad de los Andes "Escalando para sus primeros 10 Mil...
Amazon Web Services
 
David López Paz - Global Warfare [RootedCON 2011]
David López Paz - Global Warfare [RootedCON 2011]David López Paz - Global Warfare [RootedCON 2011]
David López Paz - Global Warfare [RootedCON 2011]
RootedCON
 
Scripting para Pentesters v1.0
Scripting para Pentesters v1.0Scripting para Pentesters v1.0
Scripting para Pentesters v1.0
wcuestas
 

Similar to Codemotion Madrid 2020 - Serverless con Micronaut (20)

Codemotion Madrid 2019 - ¡GraalVM y Micronaut: compañeros perfectos!
Codemotion Madrid 2019 - ¡GraalVM y Micronaut: compañeros perfectos!Codemotion Madrid 2019 - ¡GraalVM y Micronaut: compañeros perfectos!
Codemotion Madrid 2019 - ¡GraalVM y Micronaut: compañeros perfectos!
 
CommitConf 2019 - Micronaut y GraalVm: La combinación perfecta
CommitConf 2019 - Micronaut y GraalVm: La combinación perfectaCommitConf 2019 - Micronaut y GraalVm: La combinación perfecta
CommitConf 2019 - Micronaut y GraalVm: La combinación perfecta
 
Tuning Lamp
Tuning LampTuning Lamp
Tuning Lamp
 
JConf México 2020 - Micronaut + GraalVM = <3
JConf México 2020 - Micronaut + GraalVM = <3JConf México 2020 - Micronaut + GraalVM = <3
JConf México 2020 - Micronaut + GraalVM = <3
 
JConf Perú 2020 - Micronaut + GraalVM = <3
JConf Perú 2020 - Micronaut + GraalVM = <3JConf Perú 2020 - Micronaut + GraalVM = <3
JConf Perú 2020 - Micronaut + GraalVM = <3
 
Nodejs.introduccion
Nodejs.introduccionNodejs.introduccion
Nodejs.introduccion
 
Rendimiento extremo en php
Rendimiento extremo en phpRendimiento extremo en php
Rendimiento extremo en php
 
AWS Summit Mexico City 2018 - Usando Elastic Beanstalk
AWS Summit Mexico City 2018 - Usando Elastic BeanstalkAWS Summit Mexico City 2018 - Usando Elastic Beanstalk
AWS Summit Mexico City 2018 - Usando Elastic Beanstalk
 
AWS Presentacion Universidad de los Andes "Escalando para sus primeros 10 Mil...
AWS Presentacion Universidad de los Andes "Escalando para sus primeros 10 Mil...AWS Presentacion Universidad de los Andes "Escalando para sus primeros 10 Mil...
AWS Presentacion Universidad de los Andes "Escalando para sus primeros 10 Mil...
 
LaCoctelera.com y The Shaker - Conferencia Rails Hispana 2006
LaCoctelera.com y The Shaker - Conferencia Rails Hispana 2006LaCoctelera.com y The Shaker - Conferencia Rails Hispana 2006
LaCoctelera.com y The Shaker - Conferencia Rails Hispana 2006
 
Ajax reverse (Comet) con ASP.NET MVC - JUTI 2011
Ajax reverse (Comet) con ASP.NET MVC - JUTI 2011Ajax reverse (Comet) con ASP.NET MVC - JUTI 2011
Ajax reverse (Comet) con ASP.NET MVC - JUTI 2011
 
Why Apache Flink is better than Spark by Rubén Casado
Why Apache Flink is better than Spark by Rubén CasadoWhy Apache Flink is better than Spark by Rubén Casado
Why Apache Flink is better than Spark by Rubén Casado
 
J hipster
J hipsterJ hipster
J hipster
 
Docker y PostgreSQL
Docker y PostgreSQLDocker y PostgreSQL
Docker y PostgreSQL
 
David López Paz - Global Warfare [RootedCON 2011]
David López Paz - Global Warfare [RootedCON 2011]David López Paz - Global Warfare [RootedCON 2011]
David López Paz - Global Warfare [RootedCON 2011]
 
Manual de uso_de_squid
Manual de uso_de_squidManual de uso_de_squid
Manual de uso_de_squid
 
Apache
Apache Apache
Apache
 
Web Performance para Magento
Web Performance para MagentoWeb Performance para Magento
Web Performance para Magento
 
Escalando para sus primeros 10 millones de usuarios
Escalando para sus primeros 10 millones de usuariosEscalando para sus primeros 10 millones de usuarios
Escalando para sus primeros 10 millones de usuarios
 
Scripting para Pentesters v1.0
Scripting para Pentesters v1.0Scripting para Pentesters v1.0
Scripting para Pentesters v1.0
 

More from Iván López Martín

More from Iván López Martín (20)

SalmorejoTech 2024 - Spring Boot <3 Testcontainers
SalmorejoTech 2024 - Spring Boot <3 TestcontainersSalmorejoTech 2024 - Spring Boot <3 Testcontainers
SalmorejoTech 2024 - Spring Boot <3 Testcontainers
 
CommitConf 2024 - Spring Boot <3 Testcontainers
CommitConf 2024 - Spring Boot <3 TestcontainersCommitConf 2024 - Spring Boot <3 Testcontainers
CommitConf 2024 - Spring Boot <3 Testcontainers
 
Voxxed Days CERN 2024 - Spring Boot <3 Testcontainers.pdf
Voxxed Days CERN 2024 - Spring Boot <3 Testcontainers.pdfVoxxed Days CERN 2024 - Spring Boot <3 Testcontainers.pdf
Voxxed Days CERN 2024 - Spring Boot <3 Testcontainers.pdf
 
VMware - Testcontainers y Spring Boot
VMware - Testcontainers y Spring BootVMware - Testcontainers y Spring Boot
VMware - Testcontainers y Spring Boot
 
Spring IO 2023 - Dynamic OpenAPIs with Spring Cloud Gateway
Spring IO 2023 - Dynamic OpenAPIs with Spring Cloud GatewaySpring IO 2023 - Dynamic OpenAPIs with Spring Cloud Gateway
Spring IO 2023 - Dynamic OpenAPIs with Spring Cloud Gateway
 
Codemotion Madrid 2023 - Testcontainers y Spring Boot
Codemotion Madrid 2023 - Testcontainers y Spring BootCodemotion Madrid 2023 - Testcontainers y Spring Boot
Codemotion Madrid 2023 - Testcontainers y Spring Boot
 
CommitConf 2023 - Spring Framework 6 y Spring Boot 3
CommitConf 2023 - Spring Framework 6 y Spring Boot 3CommitConf 2023 - Spring Framework 6 y Spring Boot 3
CommitConf 2023 - Spring Framework 6 y Spring Boot 3
 
Construyendo un API REST con Spring Boot y GraalVM
Construyendo un API REST con Spring Boot y GraalVMConstruyendo un API REST con Spring Boot y GraalVM
Construyendo un API REST con Spring Boot y GraalVM
 
jLove 2020 - Micronaut and graalvm: The power of AoT
jLove 2020 - Micronaut and graalvm: The power of AoTjLove 2020 - Micronaut and graalvm: The power of AoT
jLove 2020 - Micronaut and graalvm: The power of AoT
 
Developing Micronaut Applications With IntelliJ IDEA
Developing Micronaut Applications With IntelliJ IDEADeveloping Micronaut Applications With IntelliJ IDEA
Developing Micronaut Applications With IntelliJ IDEA
 
Greach 2019 - Creating Micronaut Configurations
Greach 2019 - Creating Micronaut ConfigurationsGreach 2019 - Creating Micronaut Configurations
Greach 2019 - Creating Micronaut Configurations
 
VoxxedDays Bucharest 2019 - Alexa, nice to meet you
VoxxedDays Bucharest 2019 - Alexa, nice to meet youVoxxedDays Bucharest 2019 - Alexa, nice to meet you
VoxxedDays Bucharest 2019 - Alexa, nice to meet you
 
JavaDay Lviv 2019 - Micronaut in action!
JavaDay Lviv 2019 - Micronaut in action!JavaDay Lviv 2019 - Micronaut in action!
JavaDay Lviv 2019 - Micronaut in action!
 
CrossDvlup Madrid 2019 - Alexa, encantado de conocerte
CrossDvlup Madrid 2019 - Alexa, encantado de conocerteCrossDvlup Madrid 2019 - Alexa, encantado de conocerte
CrossDvlup Madrid 2019 - Alexa, encantado de conocerte
 
Madrid-GUG - ¡Micronaut en acción!
Madrid-GUG - ¡Micronaut en acción!Madrid-GUG - ¡Micronaut en acción!
Madrid-GUG - ¡Micronaut en acción!
 
Codemotion Madrid 2018 - Microservicios Reactivos con Micronaut
Codemotion Madrid 2018 - Microservicios Reactivos con MicronautCodemotion Madrid 2018 - Microservicios Reactivos con Micronaut
Codemotion Madrid 2018 - Microservicios Reactivos con Micronaut
 
Commit Conf 2018 - Alexa, encantado de conocerte
Commit Conf 2018 - Alexa, encantado de conocerteCommit Conf 2018 - Alexa, encantado de conocerte
Commit Conf 2018 - Alexa, encantado de conocerte
 
Devoxx Belgium 2018 - Micronaut in Action!
Devoxx Belgium 2018 - Micronaut in Action!Devoxx Belgium 2018 - Micronaut in Action!
Devoxx Belgium 2018 - Micronaut in Action!
 
Heisenbug 2018 - Test your Java applications with Spock
Heisenbug 2018 - Test your Java applications with SpockHeisenbug 2018 - Test your Java applications with Spock
Heisenbug 2018 - Test your Java applications with Spock
 
Codemotion Rome 2018 - Functional Java with Vavr
Codemotion Rome 2018 - Functional Java with VavrCodemotion Rome 2018 - Functional Java with Vavr
Codemotion Rome 2018 - Functional Java with Vavr
 

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 (11)

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...
 
Buenos_Aires_Meetup_Redis_20240430_.pptx
Buenos_Aires_Meetup_Redis_20240430_.pptxBuenos_Aires_Meetup_Redis_20240430_.pptx
Buenos_Aires_Meetup_Redis_20240430_.pptx
 
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
 
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.
 
Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21
 
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
 
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
 
redes informaticas en una oficina administrativa
redes informaticas en una oficina administrativaredes informaticas en una oficina administrativa
redes informaticas en una oficina administrativa
 
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
 
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
 

Codemotion Madrid 2020 - Serverless con Micronaut