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.xml
del 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-a
imicroservei-b
. - Implementa un endpoint a
microservei-b
que retorni un missatge. - Utilitza RestTemplate o Feign Client a
microservei-a
per 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