3. About Us
Olga Maciaszek-Sharma
(@olga_maciaszek)
Senior Software Engineer in Spring
Cloud team. Works mostly on:
● Spring Cloud Contract
● Spring Cloud Netflix
● Spring Cloud Gateway
● Spring Cloud OpenFeign
https://github.com/OlgaMaciaszek
Jakub Pilimon
(@JakubPilimon)
Developer Advocate, Trainer
● Domain-Driven Design
● Architecture
● Test-Driven Development
Blog: pillopl.github.io
https://github.com/ddd-by-examples
4. Spring + Netflix during Cloud-Native transition
Spring Cloud Netflix Eureka Client
Spring Cloud Netflix Eureka Server
Spring Cloud Netflix Archaius
Spring Cloud Netflix Ribbon
Spring Cloud Netflix Zuul
Spring Cloud Netflix Hystrix
Spring Cloud Netflix Hystrix Dashboard
Spring Cloud Netflix Turbine
Spring Cloud Netflix Hystrix Stream
Spring Cloud Netflix Turbine Stream
7. Maintenance Mode
No new features
Fixes for blockers and security issues only
Considering and reviewing small PRs from the community
8. Spring + Netflix going into maintenance
Spring Cloud Netflix Eureka Client
Spring Cloud Netflix Eureka Server
Spring Cloud Netflix Archaius
Spring Cloud Netflix Ribbon
Spring Cloud Netflix Zuul
Spring Cloud Netflix Hystrix
Spring Cloud Netflix Hystrix Dashboard
Spring Cloud Netflix Turbine
Spring Cloud Netflix Hystrix Stream
Spring Cloud Netflix Turbine Stream
10. Demo
Old Stack
Card Application
Service
(Ribbon Load Balancer)
Zuul Proxy
(Hystrix, Hystrix
Dashboard)
User Service
(Hystrix, Hystrix
Dashboard)
Fraud
Verifier
Turbine App
Ignored
Service
Eureka
Service
Discovery
13. Spring Cloud Netflix Ribbon → Spring Cloud Load Balancer
Currently `@LoadBalancerClietn` works with WebFlux only
Lacking implementations
Spring Cloud Netflix Ribbon still used in other
projects
14. Spring Cloud Netflix Zuul → Spring Cloud Gateway
Gateway: More than 20 Filters
As the infra is no longer blocking you, you can now move to reactive Web in your
services - but should you?
zuul:
● Non-reactive, Servlet-based
● Routing by serviceId by default
● Possibility to set up options via properties, including ignored
services, patterns and headers and ignoring sensitive headers
(true by default)
● Routes set in properties with limited config (id, serviceId,
path, url, stripPrefix, retrayable, sensitiveHeaders,
customSensitiveHeaders)
Gateway:
● Reactive, Netty-based
● Explicit route setup required
● Possibility to define routes both via properties and via functional
16. Spring Cloud Hystrix → SC CircuitBreaker + Resilience4J
SC Hystrix:
● Uses Hystrix underneath
● Possibility to use via @HystrixCommand annotation
● Possibility to pass fallback method in annotation
SC XCircuitBreaker:
● A Spring Cloud abstraction for circuit breakers
https://github.com/spring-cloud-incubator/spring-cloud-circuitbreak
er
● Currently supports Hystrix and Resilience4J
● Using via injected CircuitBreakerFactory bean and its
create() method
● Possibility to configure by setting up
Customizer<CircuitBreakerFactory> bean in a
@Configurationclass
17. Spring Cloud Netflix Turbine → Micrometer + Prometheus
Turbine:
● Aggregated Hystrix metrics from various applications via HTTP
● Via the Turbine Stream, managed to collect those via messaging
Micrometer + Prometheus:
● Micrometer - a metrics collection facade
● Its aim is to allow you to time, count, and gauge your code with a
vendor neutral API
● One of the monitoring systems to which you can output the metrics
is Prometheus
20. Spring Cloud New Stack
Should you make the change?
At least 1 year from Greenwich GA, then, even though the team has to do some work
to enable the transition, it will be deprecated, might happen even already for Hoxton.