SpringBoot: Microservicios con Spring Cloud

Aprende a implementar microservicios con Spring Cloud en Spring Boot 3. Tutorial detallado y ejemplos prácticos para desarrolladores de software.

Spring Boot 3 y Spring Cloud son dos herramientas fundamentales para la creación de microservicios en el ecosistema Java. Este módulo se centra en cómo utilizar Spring Cloud para desarrollar y gestionar microservicios eficientemente con Spring Boot 3.

Configuración inicial

Para comenzar, necesitamos configurar nuestro proyecto de Spring Boot 3. Utilizaremos Spring Initializr para generar la estructura básica del proyecto.

spring init --dependencies=web,cloud-config-client,cloud-eureka spring-cloud-microservices

Dependencias en build.gradle

Asegúrate de incluir las siguientes dependencias en tu archivo build.gradle:

dependencies {
    implementation 'org.springframework.boot:spring-boot-starter-web'
    implementation 'org.springframework.cloud:spring-cloud-starter-config'
    implementation 'org.springframework.cloud:spring-cloud-starter-netflix-eureka-client'
}

Configuración del servidor de configuración

Spring Cloud Config Server permite centralizar la configuración de tus microservicios. Primero, crea un nuevo proyecto para el servidor de configuración.

Configuración de application.yml

server:
  port: 8888

spring:
  cloud:
    config:
      server:
        git:
          uri: https://github.com/tu-repositorio/config-repo

Clase principal del servidor de configuración

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

Registro de microservicios con Eureka

Eureka es un servicio de descubrimiento que facilita la comunicación entre microservicios.

Configuración de application.yml en el cliente Eureka

eureka:
  client:
    serviceUrl:
      defaultZone: http://localhost:8761/eureka/

Clase principal del cliente Eureka

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

Balanceo de carga con Ribbon

Ribbon se utiliza para balancear la carga entre instancias de microservicios.

Configuración de Ribbon en application.yml

ribbon:
  eureka:
    enabled: true
  listOfServers: localhost:8081,localhost:8082

Clase principal

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

Comunicación entre microservicios con Feign

Feign simplifica la comunicación entre microservicios al proporcionar una interfaz RESTful.

Configuración de Feign en application.yml

feign:
  hystrix:
    enabled: true

Interfaz Feign

@FeignClient(name = "service-name")
public interface ServiceClient {
    @GetMapping("/endpoint")
    String getData();
}

Clase principal

@SpringBootApplication
@EnableFeignClients
public class FeignApplication {
    public static void main(String[] args) {
        SpringApplication.run(FeignApplication.class, args);
    }
}
Certifícate en SpringBoot con CertiDevs PLUS

Lecciones de este módulo de SpringBoot

Lecciones de programación del módulo Microservicios con Spring Cloud del curso de SpringBoot.

Ejercicios de programación en este módulo de SpringBoot

Evalúa tus conocimientos en Microservicios con Spring Cloud con ejercicios de programación Microservicios con Spring Cloud de tipo Test, Puzzle, Código y Proyecto con VSCode.