Upgrade to Pro — share decks privately, control downloads, hide ads and more …

How to live in a post-Spring-Cloud-Netflix world - Spring One Johannesburg

How to live in a post-Spring-Cloud-Netflix world - Spring One Johannesburg

Zuul? Gateway? Should we get rid of Ribbon? What is going on with Hystrix? If you have ever faced those questions, come and listen to this talk. In December 2018, Netflix decided to move a number of their popular OSS projects, like Hystrix and Ribbon into maintenance mode and to make newer, backward incompatible versions of some others, like Zuul and Archaius. The Spring Cloud team moved some of the corresponding Spring-Cloud-Netflix projects into maintenance mode as well and proposed a newer, more modern Spring Cloud stack that could be used instead. During this talk, we would like to show how to move over to these newer solutions. We will discuss possible approaches, show a code demo and speak about potential issues and solutions.

Olga Maciaszek-Sharma

April 09, 2019
Tweet

More Decks by Olga Maciaszek-Sharma

Other Decks in Technology

Transcript

  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

    View full-size slide

  2. Szczebrzeszyn
    Chrząszczyżewoszyce

    View full-size slide

  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

    View full-size slide

  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

    View full-size slide

  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

    View full-size slide

  6. Spring Cloud Netflix
    Maintenance Mode
    Greenwich RC1 announcement

    View full-size slide

  7. Maintenance Mode
    No new features
    Fixes for blockers and security issues only
    Considering and reviewing small PRs from the community

    View full-size slide

  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

    View full-size slide

  9. CardService
    UserService
    Proxy
    FraudVerifier
    Create
    new user
    Verify new user
    Verify new card
    Register
    application
    Create
    new user

    View full-size slide

  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

    View full-size slide

  11. Spring Cloud New Stack
    DEMO

    View full-size slide

  12. Spring Cloud New Stack
    Time to make the transition

    View full-size slide

  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

    View full-size slide

  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

    View full-size slide

  15. ● configuration
    ● Predicates and Filters
    ● All headers passed on by default

    View full-size slide

  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 bean in a
    @Configuration class

    View full-size slide

  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

    View full-size slide

  18. Spring Cloud Netflix Archaius → SC Config Server

    View full-size slide

  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.

    View full-size slide

  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.

    View full-size slide

  21. Possible Issues

    View full-size slide

  22. Check out master and old-stack branches
    https://github.com/OlgaMaciaszek/spring-cloud-n
    etflix-demo

    View full-size slide

  23. Check out our projects

    View full-size slide

  24. Transforming How The World Builds Software
    © Copyright 2019 Pivotal Software, Inc. All rights Reserved.

    View full-size slide