Curso de Spring Boot

Una vez que nuestra aplicación funciona, debemos publicarla en un servidor para que otras personas puedan usarla.

Este proceso se llama despliegue (deployment).

En este capítulo veremos:

  • generar el archivo ejecutable
  • ejecutar la aplicación en un servidor
  • usar Docker
  • desplegar en plataformas cloud

19.1 Crear archivo ejecutable (JAR)

Spring Boot permite generar un archivo JAR ejecutable.

Esto significa que la aplicación incluye:

  • servidor web
  • dependencias
  • configuración

Generar el JAR

En la terminal del proyecto:

1mvn clean package

Esto genera el archivo:

1target/app.jar

19.2 Ejecutar la aplicación

Para ejecutar el JAR:

1java -jar target/app.jar

La aplicación arrancará.

Ejemplo en consola:

1Tomcat started on port 8080
2Started Application

Ahora la API estará disponible en:

1http://localhost:8080

19.3 Ejecutar en servidor Linux

Supongamos un servidor Linux.

Pasos:

1 subir el archivo

1scp target/app.jar usuario@servidor:/home/app

2 ejecutar aplicación

1java -jar app.jar

19.4 Ejecutar en segundo plano

Para que el servidor no se detenga al cerrar la terminal:

1nohup java -jar app.jar &

19.5 Ejecutar como servicio

En servidores Linux es común usar systemd.


Crear servicio

Archivo:

1/etc/systemd/system/app.service

Ejemplo

1[Unit]
2Description=Spring Boot App
3After=network.target
4
5[Service]
6User=ubuntu
7ExecStart=/usr/bin/java -jar /home/app/app.jar
8SuccessExitStatus=143
9
10[Install]
11WantedBy=multi-user.target

Activar servicio

1systemctl start app
2systemctl enable app

19.6 Usar Docker

Docker permite ejecutar la aplicación en un contenedor aislado.

Ventajas:

  • portabilidad
  • facilidad de despliegue
  • mismo entorno en todos los servidores

19.7 Crear Dockerfile

Archivo:

1Dockerfile

Ejemplo

1FROM openjdk:21-jdk
2
3COPY target/app.jar app.jar
4
5ENTRYPOINT ["java","-jar","/app.jar"]

19.8 Crear imagen Docker

1docker build -t spring-app .

19.9 Ejecutar contenedor

1docker run -p 8080:8080 spring-app

Ahora la aplicación está disponible en:

1http://localhost:8080

19.10 Despliegue en Railway

Railway es una plataforma sencilla para desplegar aplicaciones.

Pasos:

1 crear cuenta en Railway 2 subir proyecto a GitHub 3 conectar repositorio 4 Railway detecta Spring Boot automáticamente

La aplicación se desplegará automáticamente.


19.11 Despliegue en Render

Otra plataforma popular es Render.

Pasos:

1 crear cuenta 2 conectar repositorio 3 elegir tipo Web Service 4 configurar comando:

1java -jar app.jar

19.12 Despliegue en VPS

También podemos usar un servidor propio.

Ejemplo:

1DigitalOcean
2AWS EC2
3Hetzner
4OVH

Pasos:

1 crear servidor Linux 2 instalar Java 3 subir JAR 4 ejecutar aplicación


19.13 Usar base de datos remota

En producción normalmente usamos bases de datos externas.

Ejemplos:

1PostgreSQL
2MySQL
3MongoDB

Configuración:

1spring.datasource.url=jdbc:postgresql://host:5432/db
2spring.datasource.username=user
3spring.datasource.password=password

19.14 Variables de entorno en producción

Nunca guardar contraseñas en el código.

Ejemplo:

1spring.datasource.password=${DB_PASSWORD}

El servidor definirá:

1export DB_PASSWORD=1234

19.15 Configuración de puerto

Algunas plataformas usan puertos dinámicos.

Ejemplo:

1server.port=${PORT:8080}

19.16 Arquitectura de producción típica

1Internet
23Load Balancer
45Spring Boot App
67Database

En aplicaciones grandes puede haber múltiples instancias.


19.17 Monitorización

En producción es importante monitorizar la aplicación.

Herramientas comunes:

1Prometheus
2Grafana
3ELK Stack

También se puede usar Spring Boot Actuator.


19.18 Spring Boot Actuator

Añadir dependencia:

1<dependency>
2 <groupId>org.springframework.boot</groupId>
3 <artifactId>spring-boot-starter-actuator</artifactId>
4</dependency>

Endpoint útil

1/actuator/health

Devuelve estado del servidor.

Ejemplo:

1{
2 "status": "UP"
3}
  • Loading...