En este tema, aprenderás cómo desplegar una aplicación Spring Boot en Heroku, una plataforma como servicio (PaaS) que permite a los desarrolladores construir, ejecutar y operar aplicaciones completamente en la nube.
- ¿Qué es Heroku?
Heroku es una plataforma en la nube que permite a los desarrolladores desplegar, gestionar y escalar aplicaciones sin preocuparse por la infraestructura subyacente. Ofrece soporte para múltiples lenguajes de programación, incluyendo Java, y es especialmente popular por su facilidad de uso y su integración con Git.
- Prerrequisitos
Antes de comenzar, asegúrate de tener lo siguiente:
- Una cuenta en Heroku (puedes registrarte en Heroku).
- Git instalado en tu máquina.
- Heroku CLI (Command Line Interface) instalado. Puedes descargarlo desde Heroku CLI.
- Configuración del Proyecto Spring Boot
3.1. Crear un Proyecto Spring Boot
Si aún no tienes un proyecto Spring Boot, puedes crear uno utilizando Spring Initializr:
curl https://start.spring.io/starter.zip -d dependencies=web -d name=heroku-demo -d packageName=com.example.heroku -o heroku-demo.zip unzip heroku-demo.zip -d heroku-demo cd heroku-demo
3.2. Configurar el pom.xml
Asegúrate de que tu archivo pom.xml
tenga las siguientes dependencias básicas:
<dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> </dependencies>
3.3. Crear un Controlador Simple
Crea un controlador simple para verificar que tu aplicación funciona correctamente:
package com.example.heroku; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RestController; @RestController public class HelloController { @GetMapping("/") public String hello() { return "Hello, Heroku!"; } }
- Desplegar en Heroku
4.1. Iniciar Sesión en Heroku
Abre una terminal y ejecuta el siguiente comando para iniciar sesión en Heroku:
4.2. Crear una Aplicación en Heroku
Navega al directorio raíz de tu proyecto y ejecuta el siguiente comando para crear una nueva aplicación en Heroku:
4.3. Configurar el Procfile
Crea un archivo llamado Procfile
en el directorio raíz de tu proyecto. Este archivo le dice a Heroku cómo ejecutar tu aplicación. Añade la siguiente línea:
4.4. Construir el Proyecto
Construye tu proyecto utilizando Maven:
4.5. Desplegar la Aplicación
Añade, confirma y empuja tu código a Heroku utilizando Git:
4.6. Verificar el Despliegue
Una vez que el despliegue se haya completado, puedes abrir tu aplicación en el navegador:
Deberías ver el mensaje "Hello, Heroku!".
- Ejercicio Práctico
Ejercicio
- Crea un nuevo proyecto Spring Boot con un controlador que devuelva un mensaje personalizado.
- Configura el proyecto para desplegarlo en Heroku.
- Despliega la aplicación en Heroku y verifica que funcione correctamente.
Solución
- Crear el proyecto Spring Boot:
curl https://start.spring.io/starter.zip -d dependencies=web -d name=heroku-exercise -d packageName=com.example.herokuexercise -o heroku-exercise.zip unzip heroku-exercise.zip -d heroku-exercise cd heroku-exercise
- Añadir un controlador:
package com.example.herokuexercise; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RestController; @RestController public class CustomController { @GetMapping("/") public String customMessage() { return "Welcome to Heroku!"; } }
- Crear el
Procfile
:
- Construir y desplegar:
./mvnw clean package git init git add . git commit -m "Initial commit" heroku create git push heroku master heroku open
- Conclusión
Desplegar aplicaciones Spring Boot en Heroku es un proceso sencillo que puede ser realizado en pocos pasos. Heroku se encarga de la infraestructura, permitiéndote concentrarte en el desarrollo de tu aplicación. En el siguiente tema, aprenderemos cómo desplegar aplicaciones Spring Boot en AWS, otra plataforma popular para el despliegue en la nube.
Curso de Spring Boot
Módulo 1: Introducción a Spring Boot
- ¿Qué es Spring Boot?
- Configuración de tu Entorno de Desarrollo
- Creando tu Primera Aplicación Spring Boot
- Entendiendo la Estructura del Proyecto Spring Boot
Módulo 2: Conceptos Básicos de Spring Boot
- Anotaciones de Spring Boot
- Inyección de Dependencias en Spring Boot
- Configuración de Spring Boot
- Propiedades de Spring Boot
Módulo 3: Construyendo Servicios Web RESTful
- Introducción a los Servicios Web RESTful
- Creando Controladores REST
- Manejo de Métodos HTTP
- Manejo de Excepciones en REST
Módulo 4: Acceso a Datos con Spring Boot
- Introducción a Spring Data JPA
- Configuración de Fuentes de Datos
- Creación de Entidades JPA
- Uso de Repositorios de Spring Data
- Métodos de Consulta en Spring Data JPA
Módulo 5: Seguridad en Spring Boot
- Introducción a Spring Security
- Configuración de Spring Security
- Autenticación y Autorización de Usuarios
- Implementación de Autenticación JWT
Módulo 6: Pruebas en Spring Boot
- Introducción a las Pruebas
- Pruebas Unitarias con JUnit
- Pruebas de Integración
- Simulación con Mockito
Módulo 7: Funciones Avanzadas de Spring Boot
Módulo 8: Despliegue de Aplicaciones Spring Boot
Módulo 9: Rendimiento y Monitoreo
- Ajuste de Rendimiento
- Monitoreo con Spring Boot Actuator
- Uso de Prometheus y Grafana
- Gestión de Registros y Logs