En aquest tema, explorarem com utilitzar Spring Boot per crear i gestionar microserveis. Els microserveis són una arquitectura de programari que estructura una aplicació com un conjunt de serveis petits i independents, cadascun executant en el seu propi procés i comunicant-se amb mecanismes lleugers, sovint una API HTTP.
Continguts
Introducció als microserveis
Els microserveis ofereixen diversos avantatges:
- Escalabilitat independent: Cada servei es pot escalar de manera independent segons les necessitats.
- Desplegament independent: Els serveis es poden desplegar de manera independent, permetent actualitzacions més ràpides.
- Resiliència: Un error en un servei no afecta tota l'aplicació.
- Flexibilitat tecnològica: Cada servei pot utilitzar diferents tecnologies i llenguatges de programació.
Creant un microservei amb Spring Boot
Pas 1: Configuració del projecte
- Crea un nou projecte Spring Boot utilitzant Spring Initializr (https://start.spring.io/).
- Selecciona les dependències següents:
- Spring Web
- Spring Boot Actuator
- Spring Data JPA (opcional, si necessites accés a dades)
- H2 Database (opcional, per a proves)
Pas 2: Estructura del projecte
L'estructura del projecte serà similar a la següent:
src
└── main
├── java
│ └── com
│ └── exemple
│ └── microservei
│ ├── MicroserveiApplication.java
│ ├── controlador
│ │ └── SalutacioControlador.java
│ └── servei
│ └── SalutacioServei.java
└── resources
├── application.properties
└── data.sql (opcional)Pas 3: Implementació del microservei
MicroserveiApplication.java
package com.exemple.microservei;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class MicroserveiApplication {
public static void main(String[] args) {
SpringApplication.run(MicroserveiApplication.class, args);
}
}SalutacioControlador.java
package com.exemple.microservei.controlador;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class SalutacioControlador {
@GetMapping("/salutacio")
public String salutacio() {
return "Hola, món!";
}
}Pas 4: Executar el microservei
Executa la classe MicroserveiApplication per iniciar el microservei. Pots accedir a l'endpoint http://localhost:8080/salutacio per veure la resposta "Hola, món!".
Comunicació entre microserveis
Utilitzant RestTemplate
Spring Boot proporciona RestTemplate per a la comunicació sincrònica entre microserveis.
Exemple d'ús de RestTemplate
package com.exemple.microservei.servei;
import org.springframework.stereotype.Service;
import org.springframework.web.client.RestTemplate;
@Service
public class SalutacioServei {
private final RestTemplate restTemplate;
public SalutacioServei(RestTemplate restTemplate) {
this.restTemplate = restTemplate;
}
public String obtenirSalutacio() {
return restTemplate.getForObject("http://altre-microservei/salutacio", String.class);
}
}Utilitzant Feign Client
Feign és una eina declarativa per crear clients HTTP.
Configuració de Feign Client
- Afegeix la dependència de Feign al teu
pom.xml:
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>- Habilita Feign Client a la classe principal:
- Crea una interfície Feign Client:
package com.exemple.microservei.client;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;
@FeignClient(name = "altre-microservei")
public interface SalutacioClient {
@GetMapping("/salutacio")
String obtenirSalutacio();
}Gestió de configuració centralitzada
Spring Cloud Config proporciona una solució per gestionar la configuració de manera centralitzada.
Configuració del servidor de configuració
- Crea un nou projecte Spring Boot amb la dependència
spring-cloud-config-server. - Habilita el servidor de configuració:
@SpringBootApplication
@EnableConfigServer
public class ConfigServerApplication {
public static void main(String[] args) {
SpringApplication.run(ConfigServerApplication.class, args);
}
}- Configura el repositori de configuració a
application.properties:
Configuració del client de configuració
- Afegeix la dependència de Config Client al
pom.xmldel microservei:
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-config</artifactId>
</dependency>- Configura el client a
bootstrap.properties:
Monitorització i traçabilitat
Utilitzant Spring Boot Actuator
Spring Boot Actuator proporciona endpoints per monitoritzar i gestionar l'aplicació.
- Afegeix la dependència d'Actuator al
pom.xml:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>- Configura Actuator a
application.properties:
Utilitzant Zipkin per a traçabilitat distribuïda
- Afegeix la dependència de Zipkin al
pom.xml:
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-zipkin</artifactId>
</dependency>- Configura Zipkin a
application.properties:
Exercicis pràctics
Exercici 1: Crear un microservei senzill
- Crea un nou projecte Spring Boot.
- Implementa un controlador que retorni un missatge de salutació.
- Executa el microservei i verifica que l'endpoint funcioni correctament.
Exercici 2: Comunicació entre microserveis
- Crea dos microserveis:
microservei-aimicroservei-b. - Implementa un endpoint a
microservei-bque retorni un missatge. - Utilitza RestTemplate o Feign Client a
microservei-aper cridar l'endpoint demicroservei-b.
Exercici 3: Configuració centralitzada
- Configura un servidor de configuració amb Spring Cloud Config.
- Configura un client de configuració en un microservei.
- Verifica que el microservei obtingui la configuració del servidor de configuració.
Conclusió
En aquest tema, hem après com crear i gestionar microserveis amb Spring Boot. Hem explorat la comunicació entre microserveis, la gestió de configuració centralitzada i la monitorització i traçabilitat. Els exercicis pràctics proporcionats t'ajudaran a consolidar els coneixements adquirits. En el següent tema, explorarem com desplegar aplicacions Spring Boot en diferents entorns.
Curs de Spring Boot
Mòdul 1: Introducció a Spring Boot
- Què és Spring Boot?
- Configuració del teu entorn de desenvolupament
- Creant la teva primera aplicació Spring Boot
- Entenent l'estructura del projecte Spring Boot
Mòdul 2: Conceptes bàsics de Spring Boot
- Anotacions de Spring Boot
- Injecció de dependències a Spring Boot
- Configuració de Spring Boot
- Propietats de Spring Boot
Mòdul 3: Construint serveis web RESTful
- Introducció als serveis web RESTful
- Creant controladors REST
- Gestionant mètodes HTTP
- Gestió d'excepcions en REST
Mòdul 4: Accés a dades amb Spring Boot
- Introducció a Spring Data JPA
- Configuració de fonts de dades
- Creant entitats JPA
- Utilitzant repositoris de Spring Data
- Mètodes de consulta a Spring Data JPA
Mòdul 5: Seguretat a Spring Boot
- Introducció a Spring Security
- Configuració de Spring Security
- Autenticació i autorització d'usuaris
- Implementant autenticació JWT
Mòdul 6: Proves a Spring Boot
Mòdul 7: Funcions avançades de Spring Boot
Mòdul 8: Desplegant aplicacions Spring Boot
Mòdul 9: Rendiment i monitorització
- Optimització del rendiment
- Monitorització amb Spring Boot Actuator
- Utilitzant Prometheus i Grafana
- Gestió de registres i logs
