Que es Spring Boot y su relación con los microservicios

Dada la creciente tendencia de migrar nuestras aplicaciones a una arquitectura de microservicios, es cada vez más importante contar con tecnologías que nos ayuden a agilizar el desarrollo, pero sobre todo, que nos permita crear aplicaciones muy ligeras que consuman el menor número de recursos y es justo allí cuando entra Spring Boot.

Es posible que te pueda interesa mi artículo “Que son los microservicios”, donde explico los explico a detalle.

Que es Spring Boot:

Para los que no están familiarizados con esta tecnología, podríamos decir que Spring Boot es una herramienta que nace con la finalidad de simplificar aun más el desarrollo de aplicaciones basadas en el ya popular framework Spring Core. Spring Boot busca que el desarrollador solo si centre en el desarrollo de la solución, olvidándose por completo de la compleja configuración que actualmente tiene Spring Core para poder funcionar.

Spring Boot centra su éxito en las siguientes características que lo hacen extremadamente fácil de utilizar:

  • Configuración: Spring Boot cuenta con un complejo módulo que autoconfigura todos los aspectos de nuestra aplicación para poder simplemente ejecutar la aplicación, sin tener que definir absolutamente nada.
  • Resolución de dependencias: Con Spring Boot solo hay que determinar que tipo de proyecto estaremos utilizando y el se encarga de resolver todas las librerías/dependencias para que la aplicación funcione.
  • Despliegue: Spring Boot se puede ejecutar como una aplicación Stand-alone, pero también es posible ejecutar aplicaciones web, ya que es posible desplegar las aplicaciones mediante un servidor web integrado, como es el caso de Tomcat, Jetty o Undertow.
  • Métricas: Por defecto, Spring Boot cuenta con servicios que permite consultar el estado de salud de la aplicación, permitiendo saber si la aplicación está prendida o apagada, memoria utilizada y disponible, número y detalle de los Bean’s creado por la aplicación, controles para el prendido y apagado, etc.
  • Extensible: Spring Boot permite la creación de complementos, los cuales ayudan a que la comunidad de Software Libre cree nuevos módulos que faciliten aún más el desarrollo.

Como funciona Spring Boot:

La mejor forma de entender cómo funciona Spring Boot es con un poco de código, por lo que veremos como es que se crea una aplicación. Básicamente existe dos formas de crear una aplicación, mediante ayuda del IDE o con ayuda de la página de Spring Boot:

Spring Start:

Spring Start es una página web que provee Spring para crear un proyecto por nosotros, para lo cual, nos solicitará los datos básicos del proyecto:

Como podremos observar, es posible crear un proyecto basado en Maven o en Gradle, también podemos definir si el lenguaje será Java, Kotlin o Grovy, también nos pedirá la versión de Spring Boot y el grupo (namespace) y nombre del artefacto (nombre del proyecto), finalmente nos pedirá las que selecciones las dependencias, en nuestro caso, solo seleccionaremos Web.

Si desconoces los módulos disponibles, puedes presionar el texto que dice “ Switch to the full versión.” Que se encuentra justo de bajo del botón para generar el proyecto (“Generate Project“), para que desplegará todos los módulos disponibles, los cuales son muchísimos para mostrarlos en una imagen.

Una vez configurado el proyecto, solo nos resta presionar el botón “Generate Project” e iniciará la descarga del proyecto preconfigurado, el cual podrás importar en cualquier IDE que soporte Maven o Gladle.

Spring Boot Suite:

La segunda y más recomendable opción es utilizar Spring Boot Suite, el IDE por excelencia para el desarrollo de aplicaciones basadas en cualquier producto de Spring, el cual ellos mismo desarrollan y lo puedes descargar desde aquí.

Spring Boot Suite es un IDE basado en Eclipse, por lo que no tendrás problemas en utilizarlos rápidamente. Para crear un proyecto tan solo es necesario dirigirse al menú principal y dar click en File => New => Spring Starter Project, el cual desplegará la siguiente pantalla:

Como podemos ver, nos pedirá los mismos datos que la página web, como grupo, nombre, type de proyecto (Maven Gladle), etc. Presionamos Next para continuar:

En esta nueva pantalla nos pedirá que selecciones las dependencias, en nuestro caso, solo seleccionaremos el módulo Web y damos en finalizar.

Con este último paso tendremos el proyecto creado y nos creará la clase HelloWorldApplication, la cual es lo único necesario para ejecutar nuestra aplicación:

package com.example.demo;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class HelloWorldApplication {
	public static void main(String[] args) {
		SpringApplication.run(HelloWorldApplication.class, args);
	}
}

En este momento podríamos ejecutar nuestra aplicación Web, pero no tendría mucho sentido, pues no hemos desarrollado nada, por ese motivo, vamos a crear un servicio REST para poder probarlo desde el navegador. Para ello, crearemos una nueva clase llamada HelloRest en el mismo paquete que la clase anterior:

package com.example.demo;

import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class HelloRest {
	@RequestMapping("/hello")
	public String helloWorld() {
		return "Hello World";
	}
}

Una vez creada, ejecutamos la aplicación dando click derecho sobre el proyecto y seleccionando Run As => Spring Boot App, lo que iniciará el despliegue de la aplicación sobre un Tomcat embebido:

Lo siguiente será ir al navegador y entrar a la URL http://localhost:8080/hello para ver lo siguiente:



Te invito a ver mi curso Mastering API REST con Spring Boot

Conclusiones

Como hemos podido observar, mediante Spring Boot es posible crear aplicaciones completas que se ejecuten en un entorno reducido, pues no es necesario tener un servidor de aplicaciones completo que nos consumirá una gran cantidad de recursos, además, Spring boot tiene complementos muy interesantes como Spring Cloud, el cual nos permite crear aplicaciones “Cloud Native”, es decir, aplicaciones diseñadas desde el inicio para ser ejecutadas en la nube.

Todas estas ventajas que hemos analizado son clave para crear microservicios, pues ya no es necesario instalar servidores de aplicaciones o tener configuraciones muy complejas para poder

24 thoughts to “Que es Spring Boot y su relación con los microservicios”

  1. Hola
    Tengo una duda, a grandes rasgos y tomando en cuenta que una persona es novato en el desarrollo de servicios y framework de java, cual sería el framework mas sencillo de implementar.

    Saludos.

      1. En pocas palabras, spring boot es una herramienta para crear aplicaciones orientadas al framework spring, que nos ayuda a crear servicios rest, microservicios e interasarnos solo en el desarrollo ya que spring boot se encarga de las configuraciones, dependencias con maven y permite ejecutar con el servidor interno de maven, sin preocuparnos en crear un servidor apache tomcat, glassfish, etc.
        Cierto?

          1. por defecto ya nos provee un tomcat, pero en el mismo STS se puede cambiar de server, para nuestra app springboot, por ejemplo a jetty ?

          2. Hola, podrías exportar la aplicación como un WAR application, y de allí tu desplegarlo en el servidor que concideres mejor.

  2. Saludos
    Gracias por la entrada en tu blog; un año después y funciona!
    Pregunta:
    Es posible utilizar SpringBoot con otro servidor, distinto al embebido (Tomcat)? Por supuesto, me parece que esto contradice un poco la filosofía original de Spring Boot, pero quisiera saber si es posible.
    De antemano gracias

    1. Hola Andres, es posible exportar el proyecto como WAR y luego desplegarlo de forma independiente en otro servidor de aplicaciones, pero eso sería un suicidio tecnológico, estarías matando todas las virtudes de Spring boot al ser auto suficiente y tener todas las dependencias para poder ser ejecutado, no te lo recomendaría para nada.
      saludos.

      1. Por qué lo consideras como un error hacer el despliegue en un servidor externo? yo lo he hecho con un servidor glassfish 5.0 y me ha funcionado correctamente, me llama la atención y me gustaría que me compartieras tu experiencia, saludos.

        1. Hola Jesús, la idea de los Microservicios es que sean componentes autosificientes y que contengan contengan el runtime incrustado para no depender de un servidor de aplicaciones, al hacerlo por separado, creas una dependencia al servidor e impiden explotar al máximo la capacidad de los microservicios.

  3. Hola Oscar,
    en primer lugar gracias. Al correr tu ejemplo no me dejaba arrancar el tomcat:

    Unable to start embedded Tomcat

    Lo he solucionado borrando el pom.xml generado automaticamente y sustituyendolo por este customizado:

    Así ya me arranca y me funciona el ejemplo bien.
    Un saludo.

    1. No entiendo por que tendría que haber una alternativa a JasperReport en Spring boot, al final es una librería para generar reportes que se puede usar perfectamente desde Spring.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *