TRAININGS 2021
SpringBoot + Gradle
Hay un mundo más fácil.
¡Y es gratis!
Acerca de mi
Spring Boot + Gradle
Acerca de quién da esta charla
Me llamo Silvestre
Tengo 37 años
Casado, con 2 hijos
Me sumé a IncluIT en plena pandemia (2020)
Trabajo en IT desde hace más de 10 años
Entusiasta de la tecnología.
Estoy dando esta charla porque me gusta.
Temario
Spring Boot
Historia
Ben efic io s : ¿ Po r q ué u s a r lo ?
Gradle
Conceptos básicos
Ah, pero es parecido a....
Proyecto de ejemplo
Un BFF con Spring Initializr
Spring Boot
S p r i n g B o o t v s . S p r i n g Fr a m e w o r k
Spring Boot
Diferencias entre SpringBoot y Spring
Framework
!=
Herramienta Marco de trabajo
Spring Boot
Un poco de historia
Abril de 2014
Aparece el release de
Spring Boot 1.0.
Habilita el desarrollo más
rápido en aplicaciones
Spring debido a que
integra la configuración
automática en los
proyectos.
https://spring.io/blog/2014/04/01/spring-boot-1-0-ga-released
¿Qué licuado tiene mejor sabor?
SpringBoot o
¿Qué licuado hacemos más rápido?
Diferencias entre SpringBoot y Spring
Framework
Usuar
io
Beneficios de Spring Boot
SpringBoot
Beneficios
Crear aplicaciones con facilidad y mucho menos
trabajo.
Obtención de métricas de salud y monitoreo
de API Rest.
Dependencias automáticas(Starter).
Autoconfiguración basada en dependencias.
Servidores Web embebidos (como Jetty y
Tomcat).
Vamos a hacer un ejemplo!
Construcción de una aplicación
Spring Boot
Construyendo una aplicación
Pasos fundamentales
Construcción clásica 1. Crear un proyecto Maven/Gradle y
descargar las dependencias necesarias.
2. Desarrollamos la aplicación.
3. Desplegamos en un servidor.
Si nos ponemos a pensar, únicamente
el paso dos es
una tarea de desarrollo.
Los otros pasos están más orientados a infraestruct
ura.
No deberíamos tener que estar eligiendo continuam
ente las dependencias y el servidor de despliegue.
S t a r t e r, u n c o n c e p t o f u n d a m e n t a l
Spring Boot
Starter, un concepto fundamental
Gestión manual de dependencias
• Cuando el Proyecto crece, aparecen
conflictos de integración entre
frameworks.
• Se torna complejo gestionar las
dependencias, cuando algunas de
ellas están compartidas entre varios
frameworks.
• Se complica el versionado y
ocurre por ejemplo, que una
versión de Hibernate no sea
compatible con una versión de Spring
ya que necesiten dependencias
diferentes.
Spring Boot
Starter, un concepto fundamental
AH, pero con Starter....
Ya no tenemos que generar dependencias que estén
ligadas con Spring de forma directa.
Es decir, por ejemplo, ya no tenemos que instalar JPA
o Thymeleaf como dependencias, bastaría con instalar
Spring Boot JPA o Spring Boot ThymeLeaf.
Al instalar estos Starters Spring Boot
se encargará de hacer encajar las
dependencias de tal forma que
ambos proyectos puedan encajar de
forma natural en nuestra solución con
sus versiones correspondientes.
Spring Boot
Starter, un concepto fundamental
https://docs.spring.io/spring-boot/docs/current/reference/html/using.html
Gradle
Gradle: ¿Qué es? ¿Para qué sirve?
Gradle
¿Qué es? ¿Para qué sirve?
Es una herramienta que permite la automatización de
compilación de código abierto.
Se centra en flexibilidad y el rendimiento. Soporta
otros lenguajes, no solo Java.
Rápido por que completa las tareas reutilizando las
salidas de las ejecuciones anteriores, sólo procesar
las entradas que presentan cambios en paralelo.
Los scripts de compilación de Gradle se escriben
utilizando Groovy o Kotlin DSL (Domain Specific
Language).
Sistema de compilación oficial para Android.
Gradle Performance
Características principales
Builds incrementales: Si se ejecuta una
tarea, si su entrada y salida no han cambiado
desde la ejecución anterior, Gradle pensará
que esta tarea está actualizada y no la
ejecutará.
Build cache: La caché de compilación
reutiliza los resultados de las tareas
localmente y comparte los resultados de las
tareas entre las máquinas. En muchos casos,
esto acelerará el tiempo promedio de
construcción.
Daemon: Proceso de larga vida, que
almacena información “caliente” en memoria
(sobre compilaciones anteriores, estructura
de archivos, etc).
Ah, pero es parecido a…
Gradle
Ah, pero es parecido a …Maven!
Gradle mejora principalmente las siguientes funcionalidades de
Maven:
Lenguaje: No emplea el lenguaje XML, sino que se basa en DSL ya
que se focaliza en la resolución de un problema específico,
colaborando en construcciones sumamente estructuradas, eficientes y
mantenibles para múltiples proyectos.
Gestión del ciclo de vida: Añade la capacidad de soportar todo el
proceso de vida del software (desde la compilación, pruebas, análisis
estadístico e implementación).
Gradle
Ah, pero es parecido a …Maven!
El tiempo de construcción es corto y
El rendimiento es lento.
rápido.
Los scripts son mucho más cortos y
Los scripts son un poco largos.
limpios.
Utiliza lenguaje específico de dominio (DSL). Utiliza XML
Se basa en la tarea mediante la cual se realiza En Maven se definen objetivos vinculados al
el trabajo. proyecto.
Admite compilaciones incrementales de
No admite compilaciones incrementales.
la clase java.
Soporte en la mayoría de herramientas de Soporte en la mayoría de herramientas de
Integración continua. Integración continua.
Proyecto de ejemplo
El proyecto de ejemplo, será un pequeño Backend for Frontend.
El proyecto debe ser creado con Spring Boot Initializr, para Java 11,
con Gradle.
Seleccionar los Starters necesarios: Spring Web, Jersey (para cliente Rest)
Publicará una API Rest, con un método que recibirá una dirección IP por
GET.
El Backend invocará una API de geolocalización externa, libre y gratuita (
https://ip-api.com/docs/api:json), que consultará para obtener la
información y retornarla.
Conclusiones
Podríamos decir que SpringBoot está recomendado para proyectos
nuevos (Microservicios) por que disminuye los tiempos de configuración.
En SpringBoot la gestión de dependencias usando Starters evita
colisiones de nombres y versiones.
Gradle es mejor que Maven, es mas performante porque permite builds
incrementales y no ejecuta tareas de manera innecesaria. Los scripts son
mas cortos.
Gradle es compatible con repositorios Maven, y permite soportar tareas
de Ant, pero no hace falta salir corriendo a migrar pipelines.
¡MUCHAS GRACIAS!
incluit software |
www.incluit.com
Silvestre.Cerrato@inclui
t.com
Córdoba | Mina Clavero | Buenos Aires | Rosario | Miami | Bay
Area | CDMX
¡THANKS!
incluit software |
www.incluit.com
Silvestre.Cerrato@inclui
t.com
Córdoba | Mina Clavero | Buenos Aires | Rosario | Miami | Bay
Area | CDMX