Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

How to Live in a Post-Spring-Cloud-Netflix World - Olga Maciaszek-Sharma & Jakub Pilimon

144 views

Published on

How to Live in a Post-Spring-Cloud-Netflix World by Olga Maciaszek-Sharma & Jakub Pilimon at SpringOne Tour 2019

Published in: Software
  • Be the first to comment

  • Be the first to like this

How to Live in a Post-Spring-Cloud-Netflix World - Olga Maciaszek-Sharma & Jakub Pilimon

  1. 1. © Copyright 2018 Pivotal Software, Inc. All rights Reserved. Version 1.0 Olga Maciaszek-Sharma, @olga_maciaszek Jakub Pilimon, @JakubPilimon Johannesburg, 09/04/2019 How to live in a post-Spring-Cloud-Netflix world
  2. 2. Szczebrzeszyn Chrząszczyżewoszyce
  3. 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. 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
  5. 5. Netflix projects passed into maintenance or superseded ● Ribbon, 2016 - https://github.com/Netflix/ribbon#project-status-on-maintenance ● Hystrix Dashboard → Atlas ● Zuul 1 → backward incompatible Zuul 2 ● Archaius 1 → backward incompatible Archaius 2 ● Hystrix, 2018 - https://github.com/Netflix/Hystrix#hystrix-status
  6. 6. Spring Cloud Netflix Maintenance Mode Greenwich RC1 announcement
  7. 7. Maintenance Mode No new features Fixes for blockers and security issues only Considering and reviewing small PRs from the community
  8. 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
  9. 9. CardService UserService Proxy FraudVerifier Create new user Verify new user Verify new card Register application Create new user
  10. 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
  11. 11. Spring Cloud New Stack DEMO
  12. 12. Spring Cloud New Stack Time to make the transition
  13. 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. 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
  15. 15. ● configuration ● Predicates and Filters ● All headers passed on by default
  16. 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. 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
  18. 18. Spring Cloud Netflix Archaius → SC Config Server
  19. 19. Demo New Stack Card Application Service (SC LoadBalancerClient, Micrometer) Gateway Proxy (CircuitBreaker, Micrometer) User Service ([Resilience4J], Micrometer) Fraud Service (Micrometer) Prometheus Ignored Service [Eureka Service Discovery] We might say that they can switch from Hystrix to Resilience4J, but since it's external, we will probably not show it. Eureka Discovery can now be switched to a different solution, but it’s not in maintenance.
  20. 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.
  21. 21. Possible Issues
  22. 22. Check out master and old-stack branches https://github.com/OlgaMaciaszek/spring-cloud-n etflix-demo
  23. 23. Check out our projects
  24. 24. Transforming How The World Builds Software © Copyright 2019 Pivotal Software, Inc. All rights Reserved.

×