Microservices avec Spring Cloud
Florian Beaufumé
09/2019
• Architecte logiciel et expert Java
• Freelance
• Brown bag lunch
• @fbeaufume
Florian Beaufumé
Monolithe vs microservices
Un modèle d'architecture basé sur l'utilisation de services
indépendants, limités, orientés métier et communicants
Microservices
• Cycles de développement indépendants
• Builds et livraisons simplifiés et moins risqués
• Isolation runtime
• Configuration fine
• Scaling horizontal fin
• Robustesse
• Migrations techniques
• Programmation polyglotte
Bénéfices
• Identification et découper les services et données
• Communications entre services
• Cohérence des données
• Event driven
• Automatisation
• Besoins de monitoring
Difficultés
Spring Kubernetes & Istio
Boot Cloud Netflix
Solutions
Spring Cloud
Client
applications
Gateway
Order Stock
MongoH2
Service
registry
Config server
Git
Spring Boot Spring Boot
Spring Boot
Spring Cloud Gateway
Spring Boot
Netflix Eureka
Spring Boot
Spring Cloud Config
Lookup
Register
Get config
8081 8082
80808888
8761
Architecture
Spring Cloud Netflix
https://github.com/fbeaufume/microshop
pom.xml
main
application.yml
Config server
http://localhost:8888/order/default
Service registry
pom.xml
main
http://localhost:8761/
http://localhost:8761/eureka/apps/order
Microservice métier
pom.xml
boostrap.xml
Load balancer et circuit breaker
@Configuration
RestConfiguration
@Service
OrderService
2
3
4
1
Gateway
pom.xml
main
application.yml
Routage
• Par cookie
• Par header
• Par host
• Par date
• Etc.
Filtrage
Served GET 'http://localhost:8080/api/orders' as 200 in 16 msec
2
3
4
5
1
Traces distribuées
Gateway
Order
Stock
pom.xml
http://localhost:9411/zipkin/
Zipkin
application.yml
@Component @Aspect ZipkinTracingAspect
Interception des méthodes
1
2
3
5
4
Spring Boot Admin
http://localhost:8090/
Merci
@fbeaufume

Microservices avec Spring Cloud