SlideShare a Scribd company logo
CLOUD NATIVE MICROSERVICES
WITH SPRING CLOUD
CONOR SVENSSON
@CONORS10
Cloud Native Microservices with Spring Cloud
Cloud Native Microservices with Spring Cloud
SPRING BOOT
SPRING BOOT
▸ Stand-alone Spring-based applications
▸ Tomcat embedded container (supports Jetty & JBoss
Undertow too)
▸ Starter POMs
▸ Annotation driven
▸ Java Configuration Beans
SPRING BOOT
DEPLOYMENT
▸ Self contained jar
▸ Web application archive
▸ Build targets
▸ $ mvn spring-boot:run
▸ $ gradle bootRun
SPRING BOOT
ACME HOME LOANS
ACME HOME LOANS
LOAN APPLICATION
EXTERNAL
CREDIT
SERVICE
WEBSITE
SERVICE
SUBMISSION
SERVICE
1
2 3
ACME HOME LOANS
ACME HOME LOANS
ACME HOME LOANS
SPRING BOOT
CONFIGURATION BEANS
SPRING BOOT
TESTING
▸ spring-boot-starter-test starter POM provides:
▸ Spring Test
▸ Unit
▸ Hamcrest + Assert4J (v1.4)
▸ Mockito
▸ MockMvc
▸ @WebIntegrationTest
Cloud Native Microservices with Spring Cloud
Cloud Native Microservices with Spring Cloud
Cloud Native Microservices with Spring Cloud
SPRING CLOUD
SPRING CLOUD
▸ Microservice friendly components
▸ Distributed & versioned configuration
▸ Service discovery
▸ Dynamic routing
▸ Circuit breakers
▸ Distributed messaging
▸ Getting started:
SPRING CLOUD
SPRING CLOUD
▸ Config
▸ Netflix
▸ Bus
▸ Cloud Foundry
▸ Cluster
▸ Consul
▸ Security
▸ Sleuth
▸ Data Flow
▸ Stream
▸ Modules
▸ Task
▸ Zookeeper
▸ AWS
▸ Connectors
▸ CLI
SPRING CLOUD
CONFIG SERVER
▸ Git hosted configuration repository
▸ SVN & filesystem also supported (see implementations
of
org.springframework.cloud.config.server.EnvironmentR
epository)
▸ Multiple security options w/Spring Security (HTTP Basic ->
OAuth bearer tokens)
▸ Push updates via Spring Cloud Bus
SPRING CLOUD
CONFIG SERVER
SPRING CLOUD
CONFIG SERVER CONFIGURATION
application.yml:
SPRING CLOUD
CLIENT CONFIGURATION FILE
website.yml:
SPRING CLOUD
RESOURCE FORMAT
/{application}/{profile}[/{label}]
/{application}-{profile}.yml
/{label}/{application}-{profile}.yml
/{application}-{profile}.properties
/{label}/{application}-{profile}.properties
(label: master by default)
SPRING CLOUD
RESOLVED CONFIGURATION
SPRING CLOUD
SHARED RESOURCES
▸ Place in application.yml in root of configuration repo
▸ Profile specific configuration always takes precedence
over shared
▸ E.g. Eureka server (more on this shortly)
SPRING CLOUD
CLIENT CONFIGURATION
bootstrap.yml:
SPRING CLOUD
CLIENT PROFILES
▸ Annotate classes to associate with a profile
▸ @Profile(“…”)
▸ Configuration (bootstrap/application properties)
▸ spring.profiles.active = …
▸ Command line
▸ -Dspring.profiles.active=…
▸ Environment variable
▸ SPRING_PROFILES_ACTIVE=…
SPRING CLOUD
RESOLVED CLIENT CONFIGURATION
SPRING CLOUD
CONFIG SERVER GOTCHAS
▸ Client’s don’t fail on Config Server failure - boot with
defaults (e.g. port 8080)
▸ To enable use spring.cloud.config.failFast=true
▸ Enable retries:
▸ Add spring-retry and spring-boot-starter-aop
▸ spring.cloud.config.retry.
Cloud Native Microservices with Spring Cloud
NETFLIX OSS + SPRING
SPRING CLOUD NETFLIX
▸ Service discovery (Eureka)
▸ Client side load balancing (Ribbon)
▸ Dynamic routing (Zuul)
▸ Circuit breaker (Hystrix)
▸ + a few others…
NETFLIX OSS + SPRING
EUREKA
▸ Service discovery client & server
▸ Maintains registry of clients with metadata
▸ Host/port
▸ Health indicator URL
▸ Client heartbeats (30 sec default - changing not encouraged)
▸ Lease renewed with server
▸ Service available when client & server(s) metadata cache all in sync
▸ Can take up to 3 heart beats
NETFLIX OSS + SPRING
EUREKA SERVER
NETFLIX OSS + SPRING
EUREKA SERVER DASHBOARD
NETFLIX OSS + SPRING
EUREKA CLIENT SETUP
@EnableEurekaClient annotation
application.yml in Config Server repo
NETFLIX OSS + SPRING
RIBBON
▸ Client side loan balancer
▸ Can delegate to Eureka for server lists
▸ Or list servers
▸ stores.ribbon.listOfServers=… +
ribbon.eureka.enabled=false
NETFLIX OSS + SPRING
RIBBON USAGE
▸ Via RestTemplate
▸ No different to normal usage - Spring Cloud Commons
abstraction
▸ Qualifier’s required if using regular & Ribbon enabled
RestTemplate
NETFLIX OSS + SPRING
ZUUL
▸ JVM based router & load balancer
▸ Provides single point of entry to services
▸ Including single point of authentication
▸ By default creates route for every service in Eureka
▸ Refer to http://localhost/credit-service routes to http://credit-
service
▸ Filters provide limited entry points to system
NETFLIX OSS + SPRING
ZUUL SERVER CREATION
‣ Include dependency spring-cloud-starter-zuul
‣ @EnableZuulProxy application annotation
‣ E.g. Allow access only to credit-service
NETFLIX OSS + SPRING
SIDECAR
▸ Non-JVM access to components via Zuul proxy
▸ Setup Spring Boot application with @EnableSidecar
▸ Configure for your service:
▸ sidecar.port=… + sidecar.health-ui=…
▸ Access all services by Zuul URL (Sidecar running on port
80)
▸ http://localhost/config-server
NETFLIX OSS + SPRING
HYSTRIX
▸ Circuit breaker
▸ Threshold breached (20 failures in 5 seconds) => breaker
kicks in
▸ Default timeout threshold 1 second
▸ Per dependency thread pools
▸ Async command support (not Spring @Async)
▸ Sync or async fallback
NETFLIX OSS + SPRING
HYSTRIX CLIENT
▸ @EnableCircuitBreaker application annotation
▸ @HystrixCommand on applicable methods
NETFLIX OSS + SPRING
NETFLIX OSS + SPRING
HYSTRIX STREAM - PRE-REQUESTS
NETFLIX OSS + SPRING
HYSTRIX STREAM - POST-REQUESTS
NETFLIX OSS + SPRING
HYSTRIX DASHBOARD
NETFLIX OSS + SPRING
HYSTRIX STREAM
NETFLIX OSS + SPRING
HYSTRIX DASHBOARD
NETFLIX OSS + SPRING
TURBINE - AGGREGATE MULTIPLE HYSTRIX CLIENTS
NETFLIX OSS + SPRING
MONITORING
▸ Add dependency spring-boot-actuator
▸ Makes available various application metrics via /metrics
endpoint
▸ Integration also available with DropWizard metrics (add
dependency)
▸ Spring Cloud
▸ Spectator (supersedes Servo) - metrics collection
▸ Atlas - metrics backend
NETFLIX OSS + SPRING
Cloud Native Microservices with Spring Cloud
CLOUD FOUNDRY
CLOUD FOUNDRY
▸ Cloud Foundry
▸ PAAS
▸ Supports multiple languages & frameworks
▸ Manages VM containers for deployments within a
“space”
▸ Multiple spaces for different environments
▸ Command-line tool (cf)
CLOUD FOUNDRY
SPRING CLOUD FOUNDRY + CONNECTORS
▸ Spring Cloud Foundry
▸ Binding of CF single sign on to your services
▸ Integration with CF Service Discovery
▸ Spring Cloud Connectors
▸ Connectors for Spring Cloud on CF
▸ Config Server
▸ Eureka (Service Discovery)
▸ Hystrix (Circuit Breaker)
CLOUD FOUNDRY
CLOUD FOUNDRY DEPLOYMENT
▸ Signup to preferred CF platform
CLOUD FOUNDRY
CLOUD FOUNDRY DEPLOYMENT
▸ Create Spring Cloud components in CF provider
▸ Config Server
▸ Eureka (Service Discovery)
▸ Hystrix (Circuit Breaker)
▸ Update client applications
▸ CF provider client libraries (see https://docs.pivotal.io/spring-cloud-
services/index.html)
▸ Deploy
▸ cf push AcmeWebsite  -p website/target/website-0-SNAPSHOT.jar
ACME HOME LOANS
NETFLIX OSS + SPRING
DOWNSIDES
▸ A lot of magic
▸ ADD (Annotation driven development)
▸ Dependency management
▸ RestTemplates - Ribbon enabled != Standard HTTP
▸ Lack of proper polygot support - libraries are in Java (Sidecar is OK as a
middle ground)
▸ Spring Hystrix documentation is pretty light
▸ £££ to use core components (Config Server, Eureka) on Cloud Foundry
NETFLIX OSS + SPRING
ALTHOUGH…
NETFLIX OSS + SPRING
THANKS
conor@huffle.com.au
@conors10
NETFLIX OSS + SPRING
RESOURCES
▸ Spring Cloud documentation - http://projects.spring.io/spring-cloud/spring-cloud.html
▸ Spring Boot sample projects - https://github.com/spring-projects/spring-boot/tree/master/
spring-boot-samples
▸ Spring Cloud sample projects - https://github.com/spring-cloud-samples
▸ Hystrix annotations - https://github.com/Netflix/Hystrix/tree/master/hystrix-contrib/hystrix-
javanica
▸ Useful demonstration of Spring Cloud usage - http://callistaenterprise.se/blogg/teknik/
2015/05/20/blog-series-building-microservices/
▸ Creation of Spring Cloud Components on Pivotal Web Services https://docs.pivotal.io/spring-
cloud-services/index.html
▸ Code to accompany this talk - https://github.com/conor10/homeloans
▸ https://www.huffle.com.au

More Related Content

PPTX
Spring Cloud and Netflix Components
PPTX
Building Microservices with Spring Cloud and Netflix OSS
PDF
Microservices with Netflix OSS and Spring Cloud
PDF
Microservices with Netflix OSS & Spring Cloud - Arnaud Cogoluègnes
PDF
Building ‘Bootiful’ microservices cloud
PDF
CDK Meetup: Rule the World through IaC
PDF
AWS re:Invent re:Cap 2019: My ElasticSearch Journey on AWS
PDF
Spring Cloud and Netflix Components
Building Microservices with Spring Cloud and Netflix OSS
Microservices with Netflix OSS and Spring Cloud
Microservices with Netflix OSS & Spring Cloud - Arnaud Cogoluègnes
Building ‘Bootiful’ microservices cloud
CDK Meetup: Rule the World through IaC
AWS re:Invent re:Cap 2019: My ElasticSearch Journey on AWS

What's hot (20)

PPTX
Lifecycle of a pod
PDF
Deploy Prometheus - Grafana and EFK stack on Kubic k8s Clusters
PPTX
Istio canaries and kubernetes
PPTX
Exploring the Future of Helm
PPTX
MicroServices at Netflix - challenges of scale
PDF
Microservice With Spring Boot and Spring Cloud
PPTX
Microservices with docker swarm and consul
PDF
Sf bay area Kubernetes meetup dec8 2016 - deployment models
PDF
Kubernetes Networking
PDF
[OpenInfra Days Korea 2018] Day 2 - E3-2: "핸즈온 워크샵: Kubespray, Helm, Armada를 ...
PPTX
Kubernetes Networking 101
PDF
Docker Swarm 1.12 Overview and Demo
PDF
Building a Production Grade PostgreSQL Cloud Foundry Service | anynines
PPTX
Architecting for Microservices Part 2
PPTX
Challenges of Kubernetes On-premise Deployment
PDF
Quick and Solid - Baremetal on OpenStack | Rico Lin
PDF
Criteo meetup - S.R.E Tech Talk
PDF
[OpenInfra Days Korea 2018] Day 2 - E5-1: "Invited Talk: Kubicorn - Building ...
PDF
Cloud Native User Group: Prometheus Day 2
PDF
Running your dockerized application(s) on AWS Elastic Container Service
Lifecycle of a pod
Deploy Prometheus - Grafana and EFK stack on Kubic k8s Clusters
Istio canaries and kubernetes
Exploring the Future of Helm
MicroServices at Netflix - challenges of scale
Microservice With Spring Boot and Spring Cloud
Microservices with docker swarm and consul
Sf bay area Kubernetes meetup dec8 2016 - deployment models
Kubernetes Networking
[OpenInfra Days Korea 2018] Day 2 - E3-2: "핸즈온 워크샵: Kubespray, Helm, Armada를 ...
Kubernetes Networking 101
Docker Swarm 1.12 Overview and Demo
Building a Production Grade PostgreSQL Cloud Foundry Service | anynines
Architecting for Microservices Part 2
Challenges of Kubernetes On-premise Deployment
Quick and Solid - Baremetal on OpenStack | Rico Lin
Criteo meetup - S.R.E Tech Talk
[OpenInfra Days Korea 2018] Day 2 - E5-1: "Invited Talk: Kubicorn - Building ...
Cloud Native User Group: Prometheus Day 2
Running your dockerized application(s) on AWS Elastic Container Service
Ad

Similar to Cloud Native Microservices with Spring Cloud (20)

PDF
Cloud Native Microservices with Spring Cloud
PDF
Java Microservices with Netflix OSS & Spring
PDF
The Good Parts / The Hard Parts
PDF
Traefik as an open source edge router for microservice architectures
PDF
The state of the swarm
PDF
ITB2019 Serverless CFML on AWS Lambda - Pete Freitag
PDF
JDO 2019: Container orchestration with Docker Swarm - Jakub Hajek
PDF
Workshop Consul .- Service Discovery & Failure Detection
PDF
Scaling Microservices with Kubernetes
PDF
New features of Azure Cloud Provider in OpenShift Container Platform 3.10
PDF
Going Serverless on AWS with Golang and SAM
PPTX
Deploying windows containers with kubernetes
PDF
10. th cncf meetup - Routing microservice-architectures-with-traefik-cncfsk
PDF
Taming the Cloud Database with Apache jclouds, ApacheCon Europe 2014
PDF
OSMC 2022 | Ignite: Observability with Grafana & Prometheus for Kafka on Kube...
PPTX
App Deployment on Cloud
PDF
Kubernetes Workshop
PDF
[CB16] 80時間でWebを一周:クロムミウムオートメーションによるスケーラブルなフィンガープリント by Isaac Dawson
PDF
Canary deployment with Traefik and K3S
PDF
Cloud-native .NET-Microservices mit Kubernetes @BASTAcon
Cloud Native Microservices with Spring Cloud
Java Microservices with Netflix OSS & Spring
The Good Parts / The Hard Parts
Traefik as an open source edge router for microservice architectures
The state of the swarm
ITB2019 Serverless CFML on AWS Lambda - Pete Freitag
JDO 2019: Container orchestration with Docker Swarm - Jakub Hajek
Workshop Consul .- Service Discovery & Failure Detection
Scaling Microservices with Kubernetes
New features of Azure Cloud Provider in OpenShift Container Platform 3.10
Going Serverless on AWS with Golang and SAM
Deploying windows containers with kubernetes
10. th cncf meetup - Routing microservice-architectures-with-traefik-cncfsk
Taming the Cloud Database with Apache jclouds, ApacheCon Europe 2014
OSMC 2022 | Ignite: Observability with Grafana & Prometheus for Kafka on Kube...
App Deployment on Cloud
Kubernetes Workshop
[CB16] 80時間でWebを一周:クロムミウムオートメーションによるスケーラブルなフィンガープリント by Isaac Dawson
Canary deployment with Traefik and K3S
Cloud-native .NET-Microservices mit Kubernetes @BASTAcon
Ad

More from Conor Svensson (9)

PDF
web3j Overview
PDF
Building Java and Android apps on the blockchain
PDF
Web3j 2.0 Update
PDF
Blockchain - Navigating this Game-Changing Technology
PDF
web3j 1.0 update
PDF
Java and the blockchain - introducing web3j
PDF
Ether mining 101 v2
PDF
web3j overview
PDF
Ether Mining 101
web3j Overview
Building Java and Android apps on the blockchain
Web3j 2.0 Update
Blockchain - Navigating this Game-Changing Technology
web3j 1.0 update
Java and the blockchain - introducing web3j
Ether mining 101 v2
web3j overview
Ether Mining 101

Recently uploaded (20)

PDF
Build a system with the filesystem maintained by OSTree @ COSCUP 2025
PDF
Building Integrated photovoltaic BIPV_UPV.pdf
PPT
“AI and Expert System Decision Support & Business Intelligence Systems”
PDF
Agricultural_Statistics_at_a_Glance_2022_0.pdf
PDF
The Rise and Fall of 3GPP – Time for a Sabbatical?
PPTX
A Presentation on Artificial Intelligence
PDF
Review of recent advances in non-invasive hemoglobin estimation
PPTX
Big Data Technologies - Introduction.pptx
PDF
Diabetes mellitus diagnosis method based random forest with bat algorithm
PPTX
Detection-First SIEM: Rule Types, Dashboards, and Threat-Informed Strategy
PDF
Electronic commerce courselecture one. Pdf
PDF
Dropbox Q2 2025 Financial Results & Investor Presentation
PPTX
PA Analog/Digital System: The Backbone of Modern Surveillance and Communication
PDF
How UI/UX Design Impacts User Retention in Mobile Apps.pdf
PDF
Blue Purple Modern Animated Computer Science Presentation.pdf.pdf
PDF
Chapter 3 Spatial Domain Image Processing.pdf
PDF
Reach Out and Touch Someone: Haptics and Empathic Computing
PDF
Encapsulation theory and applications.pdf
PDF
TokAI - TikTok AI Agent : The First AI Application That Analyzes 10,000+ Vira...
PDF
Approach and Philosophy of On baking technology
Build a system with the filesystem maintained by OSTree @ COSCUP 2025
Building Integrated photovoltaic BIPV_UPV.pdf
“AI and Expert System Decision Support & Business Intelligence Systems”
Agricultural_Statistics_at_a_Glance_2022_0.pdf
The Rise and Fall of 3GPP – Time for a Sabbatical?
A Presentation on Artificial Intelligence
Review of recent advances in non-invasive hemoglobin estimation
Big Data Technologies - Introduction.pptx
Diabetes mellitus diagnosis method based random forest with bat algorithm
Detection-First SIEM: Rule Types, Dashboards, and Threat-Informed Strategy
Electronic commerce courselecture one. Pdf
Dropbox Q2 2025 Financial Results & Investor Presentation
PA Analog/Digital System: The Backbone of Modern Surveillance and Communication
How UI/UX Design Impacts User Retention in Mobile Apps.pdf
Blue Purple Modern Animated Computer Science Presentation.pdf.pdf
Chapter 3 Spatial Domain Image Processing.pdf
Reach Out and Touch Someone: Haptics and Empathic Computing
Encapsulation theory and applications.pdf
TokAI - TikTok AI Agent : The First AI Application That Analyzes 10,000+ Vira...
Approach and Philosophy of On baking technology

Cloud Native Microservices with Spring Cloud

  • 1. CLOUD NATIVE MICROSERVICES WITH SPRING CLOUD CONOR SVENSSON @CONORS10
  • 4. SPRING BOOT SPRING BOOT ▸ Stand-alone Spring-based applications ▸ Tomcat embedded container (supports Jetty & JBoss Undertow too) ▸ Starter POMs ▸ Annotation driven ▸ Java Configuration Beans
  • 5. SPRING BOOT DEPLOYMENT ▸ Self contained jar ▸ Web application archive ▸ Build targets ▸ $ mvn spring-boot:run ▸ $ gradle bootRun
  • 8. ACME HOME LOANS LOAN APPLICATION EXTERNAL CREDIT SERVICE WEBSITE SERVICE SUBMISSION SERVICE 1 2 3
  • 13. SPRING BOOT TESTING ▸ spring-boot-starter-test starter POM provides: ▸ Spring Test ▸ Unit ▸ Hamcrest + Assert4J (v1.4) ▸ Mockito ▸ MockMvc ▸ @WebIntegrationTest
  • 17. SPRING CLOUD SPRING CLOUD ▸ Microservice friendly components ▸ Distributed & versioned configuration ▸ Service discovery ▸ Dynamic routing ▸ Circuit breakers ▸ Distributed messaging ▸ Getting started:
  • 18. SPRING CLOUD SPRING CLOUD ▸ Config ▸ Netflix ▸ Bus ▸ Cloud Foundry ▸ Cluster ▸ Consul ▸ Security ▸ Sleuth ▸ Data Flow ▸ Stream ▸ Modules ▸ Task ▸ Zookeeper ▸ AWS ▸ Connectors ▸ CLI
  • 19. SPRING CLOUD CONFIG SERVER ▸ Git hosted configuration repository ▸ SVN & filesystem also supported (see implementations of org.springframework.cloud.config.server.EnvironmentR epository) ▸ Multiple security options w/Spring Security (HTTP Basic -> OAuth bearer tokens) ▸ Push updates via Spring Cloud Bus
  • 21. SPRING CLOUD CONFIG SERVER CONFIGURATION application.yml:
  • 25. SPRING CLOUD SHARED RESOURCES ▸ Place in application.yml in root of configuration repo ▸ Profile specific configuration always takes precedence over shared ▸ E.g. Eureka server (more on this shortly)
  • 27. SPRING CLOUD CLIENT PROFILES ▸ Annotate classes to associate with a profile ▸ @Profile(“…”) ▸ Configuration (bootstrap/application properties) ▸ spring.profiles.active = … ▸ Command line ▸ -Dspring.profiles.active=… ▸ Environment variable ▸ SPRING_PROFILES_ACTIVE=…
  • 29. SPRING CLOUD CONFIG SERVER GOTCHAS ▸ Client’s don’t fail on Config Server failure - boot with defaults (e.g. port 8080) ▸ To enable use spring.cloud.config.failFast=true ▸ Enable retries: ▸ Add spring-retry and spring-boot-starter-aop ▸ spring.cloud.config.retry.
  • 31. NETFLIX OSS + SPRING SPRING CLOUD NETFLIX ▸ Service discovery (Eureka) ▸ Client side load balancing (Ribbon) ▸ Dynamic routing (Zuul) ▸ Circuit breaker (Hystrix) ▸ + a few others…
  • 32. NETFLIX OSS + SPRING EUREKA ▸ Service discovery client & server ▸ Maintains registry of clients with metadata ▸ Host/port ▸ Health indicator URL ▸ Client heartbeats (30 sec default - changing not encouraged) ▸ Lease renewed with server ▸ Service available when client & server(s) metadata cache all in sync ▸ Can take up to 3 heart beats
  • 33. NETFLIX OSS + SPRING EUREKA SERVER
  • 34. NETFLIX OSS + SPRING EUREKA SERVER DASHBOARD
  • 35. NETFLIX OSS + SPRING EUREKA CLIENT SETUP @EnableEurekaClient annotation application.yml in Config Server repo
  • 36. NETFLIX OSS + SPRING RIBBON ▸ Client side loan balancer ▸ Can delegate to Eureka for server lists ▸ Or list servers ▸ stores.ribbon.listOfServers=… + ribbon.eureka.enabled=false
  • 37. NETFLIX OSS + SPRING RIBBON USAGE ▸ Via RestTemplate ▸ No different to normal usage - Spring Cloud Commons abstraction ▸ Qualifier’s required if using regular & Ribbon enabled RestTemplate
  • 38. NETFLIX OSS + SPRING ZUUL ▸ JVM based router & load balancer ▸ Provides single point of entry to services ▸ Including single point of authentication ▸ By default creates route for every service in Eureka ▸ Refer to http://localhost/credit-service routes to http://credit- service ▸ Filters provide limited entry points to system
  • 39. NETFLIX OSS + SPRING ZUUL SERVER CREATION ‣ Include dependency spring-cloud-starter-zuul ‣ @EnableZuulProxy application annotation ‣ E.g. Allow access only to credit-service
  • 40. NETFLIX OSS + SPRING SIDECAR ▸ Non-JVM access to components via Zuul proxy ▸ Setup Spring Boot application with @EnableSidecar ▸ Configure for your service: ▸ sidecar.port=… + sidecar.health-ui=… ▸ Access all services by Zuul URL (Sidecar running on port 80) ▸ http://localhost/config-server
  • 41. NETFLIX OSS + SPRING HYSTRIX ▸ Circuit breaker ▸ Threshold breached (20 failures in 5 seconds) => breaker kicks in ▸ Default timeout threshold 1 second ▸ Per dependency thread pools ▸ Async command support (not Spring @Async) ▸ Sync or async fallback
  • 42. NETFLIX OSS + SPRING HYSTRIX CLIENT ▸ @EnableCircuitBreaker application annotation ▸ @HystrixCommand on applicable methods
  • 43. NETFLIX OSS + SPRING
  • 44. NETFLIX OSS + SPRING HYSTRIX STREAM - PRE-REQUESTS
  • 45. NETFLIX OSS + SPRING HYSTRIX STREAM - POST-REQUESTS
  • 46. NETFLIX OSS + SPRING HYSTRIX DASHBOARD
  • 47. NETFLIX OSS + SPRING HYSTRIX STREAM
  • 48. NETFLIX OSS + SPRING HYSTRIX DASHBOARD
  • 49. NETFLIX OSS + SPRING TURBINE - AGGREGATE MULTIPLE HYSTRIX CLIENTS
  • 50. NETFLIX OSS + SPRING MONITORING ▸ Add dependency spring-boot-actuator ▸ Makes available various application metrics via /metrics endpoint ▸ Integration also available with DropWizard metrics (add dependency) ▸ Spring Cloud ▸ Spectator (supersedes Servo) - metrics collection ▸ Atlas - metrics backend
  • 51. NETFLIX OSS + SPRING
  • 53. CLOUD FOUNDRY CLOUD FOUNDRY ▸ Cloud Foundry ▸ PAAS ▸ Supports multiple languages & frameworks ▸ Manages VM containers for deployments within a “space” ▸ Multiple spaces for different environments ▸ Command-line tool (cf)
  • 54. CLOUD FOUNDRY SPRING CLOUD FOUNDRY + CONNECTORS ▸ Spring Cloud Foundry ▸ Binding of CF single sign on to your services ▸ Integration with CF Service Discovery ▸ Spring Cloud Connectors ▸ Connectors for Spring Cloud on CF ▸ Config Server ▸ Eureka (Service Discovery) ▸ Hystrix (Circuit Breaker)
  • 55. CLOUD FOUNDRY CLOUD FOUNDRY DEPLOYMENT ▸ Signup to preferred CF platform
  • 56. CLOUD FOUNDRY CLOUD FOUNDRY DEPLOYMENT ▸ Create Spring Cloud components in CF provider ▸ Config Server ▸ Eureka (Service Discovery) ▸ Hystrix (Circuit Breaker) ▸ Update client applications ▸ CF provider client libraries (see https://docs.pivotal.io/spring-cloud- services/index.html) ▸ Deploy ▸ cf push AcmeWebsite  -p website/target/website-0-SNAPSHOT.jar
  • 58. NETFLIX OSS + SPRING DOWNSIDES ▸ A lot of magic ▸ ADD (Annotation driven development) ▸ Dependency management ▸ RestTemplates - Ribbon enabled != Standard HTTP ▸ Lack of proper polygot support - libraries are in Java (Sidecar is OK as a middle ground) ▸ Spring Hystrix documentation is pretty light ▸ £££ to use core components (Config Server, Eureka) on Cloud Foundry
  • 59. NETFLIX OSS + SPRING ALTHOUGH…
  • 60. NETFLIX OSS + SPRING THANKS conor@huffle.com.au @conors10
  • 61. NETFLIX OSS + SPRING RESOURCES ▸ Spring Cloud documentation - http://projects.spring.io/spring-cloud/spring-cloud.html ▸ Spring Boot sample projects - https://github.com/spring-projects/spring-boot/tree/master/ spring-boot-samples ▸ Spring Cloud sample projects - https://github.com/spring-cloud-samples ▸ Hystrix annotations - https://github.com/Netflix/Hystrix/tree/master/hystrix-contrib/hystrix- javanica ▸ Useful demonstration of Spring Cloud usage - http://callistaenterprise.se/blogg/teknik/ 2015/05/20/blog-series-building-microservices/ ▸ Creation of Spring Cloud Components on Pivotal Web Services https://docs.pivotal.io/spring- cloud-services/index.html ▸ Code to accompany this talk - https://github.com/conor10/homeloans ▸ https://www.huffle.com.au