Slide 1

Slide 1 text

© Copyright 2018 Pivotal Software, Inc. All rights Reserved. Version 1.0 Olga Maciaszek-Sharma, @olga_maciaszek Marcin Grzejszczak, @mgrzejszczak Gdańsk, 15.03.2019 How to live in a post-Spring-Cloud-Netflix world

Slide 2

Slide 2 text

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 Marcin Grzejszczak (@mgrzejszczak) Spring Cloud developer. Works mostly on: ● Spring Cloud Contract ● Spring Cloud Sleuth ● Cloud Pipelines Blog: http://toomuchcoding.com

Slide 3

Slide 3 text

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

Slide 4

Slide 4 text

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

Slide 5

Slide 5 text

Spring Cloud Netflix Maintenance Mode Greenwich RC1 announcement

Slide 6

Slide 6 text

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

Slide 7

Slide 7 text

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

Slide 8

Slide 8 text

User CardService UserService Proxy FraudVerifier Create new user Verify new user Register application Create new user

Slide 9

Slide 9 text

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

Slide 10

Slide 10 text

Spring Cloud New Stack DEMO

Slide 11

Slide 11 text

Spring Cloud New Stack Time to make the transition

Slide 12

Slide 12 text

Spring Cloud Netflix Ribbon → Spring Cloud Load Balancer @Bean @LoadBalanced WebClient.Builder loadBalancedWebClientBuilder() { return WebClient.builder(); } @Bean @LoadBalanced RestTemplate restTemplate() { return new RestTemplate(); } @RibbonClient() @RibbonClients() @Bean @LoadBalanced WebClient.Builder loadBalancedWebClientBuilder() { return WebClient.builder(); } @Bean @LoadBalanced RestTemplate restTemplate() { return new RestTemplate(); } @LoadBalancerClient() @LoadBalancerClients()

Slide 13

Slide 13 text

Spring Cloud Netflix Ribbon → Spring Cloud Load Balancer Lacking implementations Spring Cloud Netflix Ribbon still used in other projects

Slide 14

Slide 14 text

Spring Cloud Netflix Zuul → Spring Cloud Gateway ● 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) ● Reactive, Netty-based ● Explicit route setup required ● Possibility to define routes both via properties and via functional configuration ● Predicates and Filters ● All headers passed on by default

Slide 15

Slide 15 text

Spring Cloud Hystrix → SC CircuitBreaker + Resilience4J ● Uses Hystrix underneath ● Possibility to use via @HystrixCommand annotation ● Possibility to pass fallback method in annotation ● A Spring Cloud abstraction for circuit breakers https://github.com/spring-cloud-incubator/spring -cloud-circuitbreaker ● 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

Slide 16

Slide 16 text

Spring Cloud Netflix Turbine → Micrometer + Prometheus ● Aggregated Hystrix metrics from various applications via HTTP ● Via the Turbine Stream, managed to collect those via messaging ● 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

Slide 17

Slide 17 text

Spring Cloud Netflix Archaius → SC Config Server

Slide 18

Slide 18 text

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]

Slide 19

Slide 19 text

Spring Cloud New Stack Should you make the change?

Slide 20

Slide 20 text

Possible Issues

Slide 21

Slide 21 text

Check out master and old-stack branches Demo Code

Slide 22

Slide 22 text

Check out our projects

Slide 23

Slide 23 text

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