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鈥檚 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 (鈥淕enerate 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 鈥淕enerate 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 nuestro curso completo Desarrollo de Microservicios 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 鈥淐loud 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

17 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?

  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 *