spring cloud into production
TRANSCRIPT
![Page 1: Spring Cloud Into Production](https://reader034.vdocuments.mx/reader034/viewer/2022042722/58ac6dbf1a28abd7488b6283/html5/thumbnails/1.jpg)
SPRING CLOUD INTO PRODUCTION
TODD MILLER
![Page 2: Spring Cloud Into Production](https://reader034.vdocuments.mx/reader034/viewer/2022042722/58ac6dbf1a28abd7488b6283/html5/thumbnails/2.jpg)
SPRING CLOUD INTO PRODUCTION
ABOUT MEAtlanta, GA
Inc 5000 fastest growing companies 5 years in a row
Forbes 25 Best Small Businesses 2016
Father of four
[email protected] @ziftytodd
![Page 3: Spring Cloud Into Production](https://reader034.vdocuments.mx/reader034/viewer/2022042722/58ac6dbf1a28abd7488b6283/html5/thumbnails/3.jpg)
Microservices are great… until you realize all the other 💩 it takes to run them.
Todd Miller
SPRING CLOUD INTO PRODUCTION
![Page 4: Spring Cloud Into Production](https://reader034.vdocuments.mx/reader034/viewer/2022042722/58ac6dbf1a28abd7488b6283/html5/thumbnails/4.jpg)
SPRING INTO PRODUCTION
MICROSERVICE “TAX”
▸ Configuration Management
▸ Service Discovery (and registration)
▸ More faults to handle (and more gracefully)
▸ Authentication & Authorization
▸ and so on…
![Page 5: Spring Cloud Into Production](https://reader034.vdocuments.mx/reader034/viewer/2022042722/58ac6dbf1a28abd7488b6283/html5/thumbnails/5.jpg)
![Page 6: Spring Cloud Into Production](https://reader034.vdocuments.mx/reader034/viewer/2022042722/58ac6dbf1a28abd7488b6283/html5/thumbnails/6.jpg)
SPRING CLOUD INTO PRODUCTION
WHAT IS SPRING CLOUD?
▸ Config management
▸ Service discovery
▸ Circuit breakers
▸ Intelligent routing
▸ Micro-proxy
▸ Control bus
▸ One-time tokens
▸ Global locks
▸ Distributed sessions …. and more!
![Page 7: Spring Cloud Into Production](https://reader034.vdocuments.mx/reader034/viewer/2022042722/58ac6dbf1a28abd7488b6283/html5/thumbnails/7.jpg)
SPRING CLOUD INTO PRODUCTION
CONFIGURATION - SPRING CLOUD CONFIG
▸ Separate server service
▸ Keep config in a repository
▸ YAML or Properties files
▸ Supports multiple services and profiles
▸ Super simple client
▸ One config line
▸ One dependency
![Page 8: Spring Cloud Into Production](https://reader034.vdocuments.mx/reader034/viewer/2022042722/58ac6dbf1a28abd7488b6283/html5/thumbnails/8.jpg)
SPRING CLOUD INTO PRODUCTION
SERVICE DISCOVERY - EUREKA
▸ Separate server service
▸ Service registry
▸ Clients register and discover
▸ Some fault tolerance
▸ Add Ribbon for intelligent routing
![Page 9: Spring Cloud Into Production](https://reader034.vdocuments.mx/reader034/viewer/2022042722/58ac6dbf1a28abd7488b6283/html5/thumbnails/9.jpg)
SPRING CLOUD INTO PRODUCTION
CIRCUIT BREAKERS - HYSTRIX
▸ Part of your service’s code
▸ Circuit breaker
▸ Failure isolation
▸ Graceful degradation
▸ Built-in monitoring
▸ Use with Turbine to aggregate
![Page 10: Spring Cloud Into Production](https://reader034.vdocuments.mx/reader034/viewer/2022042722/58ac6dbf1a28abd7488b6283/html5/thumbnails/10.jpg)
![Page 11: Spring Cloud Into Production](https://reader034.vdocuments.mx/reader034/viewer/2022042722/58ac6dbf1a28abd7488b6283/html5/thumbnails/11.jpg)
![Page 12: Spring Cloud Into Production](https://reader034.vdocuments.mx/reader034/viewer/2022042722/58ac6dbf1a28abd7488b6283/html5/thumbnails/12.jpg)
![Page 13: Spring Cloud Into Production](https://reader034.vdocuments.mx/reader034/viewer/2022042722/58ac6dbf1a28abd7488b6283/html5/thumbnails/13.jpg)
![Page 14: Spring Cloud Into Production](https://reader034.vdocuments.mx/reader034/viewer/2022042722/58ac6dbf1a28abd7488b6283/html5/thumbnails/14.jpg)
SPRING CLOUD INTO PRODUCTION
EC2 CONTAINER SERVICE (ECS)
▸ Manages containers & cluster
▸ Define tasks
▸ Compose tasks into services
▸ Load balancing
▸ Auto-scaling
▸ AWS’s Docker registry (ECR)
![Page 15: Spring Cloud Into Production](https://reader034.vdocuments.mx/reader034/viewer/2022042722/58ac6dbf1a28abd7488b6283/html5/thumbnails/15.jpg)
![Page 16: Spring Cloud Into Production](https://reader034.vdocuments.mx/reader034/viewer/2022042722/58ac6dbf1a28abd7488b6283/html5/thumbnails/16.jpg)
![Page 17: Spring Cloud Into Production](https://reader034.vdocuments.mx/reader034/viewer/2022042722/58ac6dbf1a28abd7488b6283/html5/thumbnails/17.jpg)
![Page 18: Spring Cloud Into Production](https://reader034.vdocuments.mx/reader034/viewer/2022042722/58ac6dbf1a28abd7488b6283/html5/thumbnails/18.jpg)
![Page 19: Spring Cloud Into Production](https://reader034.vdocuments.mx/reader034/viewer/2022042722/58ac6dbf1a28abd7488b6283/html5/thumbnails/19.jpg)
![Page 20: Spring Cloud Into Production](https://reader034.vdocuments.mx/reader034/viewer/2022042722/58ac6dbf1a28abd7488b6283/html5/thumbnails/20.jpg)
![Page 21: Spring Cloud Into Production](https://reader034.vdocuments.mx/reader034/viewer/2022042722/58ac6dbf1a28abd7488b6283/html5/thumbnails/21.jpg)
SPRING INTO PRODUCTION
CLOUD CONFIG INTO PRODUCTION
▸ Which comes first? Eureka or Config?
▸ How do you find the Config Server?
▸ Use an ELB to point to config server instances
![Page 22: Spring Cloud Into Production](https://reader034.vdocuments.mx/reader034/viewer/2022042722/58ac6dbf1a28abd7488b6283/html5/thumbnails/22.jpg)
SPRING CLOUD INTO PRODUCTION
Gr8ConfigApplication.groovy
bootstrap.yml
Dockerfile
![Page 23: Spring Cloud Into Production](https://reader034.vdocuments.mx/reader034/viewer/2022042722/58ac6dbf1a28abd7488b6283/html5/thumbnails/23.jpg)
SPRING INTO PRODUCTION
![Page 24: Spring Cloud Into Production](https://reader034.vdocuments.mx/reader034/viewer/2022042722/58ac6dbf1a28abd7488b6283/html5/thumbnails/24.jpg)
SPRING INTO PRODUCTION
![Page 25: Spring Cloud Into Production](https://reader034.vdocuments.mx/reader034/viewer/2022042722/58ac6dbf1a28abd7488b6283/html5/thumbnails/25.jpg)
SPRING INTO PRODUCTION
![Page 26: Spring Cloud Into Production](https://reader034.vdocuments.mx/reader034/viewer/2022042722/58ac6dbf1a28abd7488b6283/html5/thumbnails/26.jpg)
SPRING INTO PRODUCTION
![Page 27: Spring Cloud Into Production](https://reader034.vdocuments.mx/reader034/viewer/2022042722/58ac6dbf1a28abd7488b6283/html5/thumbnails/27.jpg)
SPRING CLOUD INTO PRODUCTION
![Page 28: Spring Cloud Into Production](https://reader034.vdocuments.mx/reader034/viewer/2022042722/58ac6dbf1a28abd7488b6283/html5/thumbnails/28.jpg)
SPRING CLOUD INTO PRODUCTION
![Page 29: Spring Cloud Into Production](https://reader034.vdocuments.mx/reader034/viewer/2022042722/58ac6dbf1a28abd7488b6283/html5/thumbnails/29.jpg)
SPRING CLOUD INTO PRODUCTION
![Page 30: Spring Cloud Into Production](https://reader034.vdocuments.mx/reader034/viewer/2022042722/58ac6dbf1a28abd7488b6283/html5/thumbnails/30.jpg)
SPRING CLOUD INTO PRODUCTION
![Page 31: Spring Cloud Into Production](https://reader034.vdocuments.mx/reader034/viewer/2022042722/58ac6dbf1a28abd7488b6283/html5/thumbnails/31.jpg)
SPRING CLOUD INTO PRODUCTION
![Page 32: Spring Cloud Into Production](https://reader034.vdocuments.mx/reader034/viewer/2022042722/58ac6dbf1a28abd7488b6283/html5/thumbnails/32.jpg)
SPRING CLOUD INTO PRODUCTION
![Page 33: Spring Cloud Into Production](https://reader034.vdocuments.mx/reader034/viewer/2022042722/58ac6dbf1a28abd7488b6283/html5/thumbnails/33.jpg)
SPRING CLOUD INTO PRODUCTION
![Page 34: Spring Cloud Into Production](https://reader034.vdocuments.mx/reader034/viewer/2022042722/58ac6dbf1a28abd7488b6283/html5/thumbnails/34.jpg)
SPRING CLOUD INTO PRODUCTION
IT RUNS!
▸ Access via ELB’s endpoint URL
▸ But who wants to remember a URL like this?
▸ Plus, it’s not very portable
▸ Enter AWS Route 53 and private DNS
![Page 35: Spring Cloud Into Production](https://reader034.vdocuments.mx/reader034/viewer/2022042722/58ac6dbf1a28abd7488b6283/html5/thumbnails/35.jpg)
SPRING CLOUD INTO PRODUCTION
![Page 36: Spring Cloud Into Production](https://reader034.vdocuments.mx/reader034/viewer/2022042722/58ac6dbf1a28abd7488b6283/html5/thumbnails/36.jpg)
SPRING CLOUD INTO PRODUCTION
![Page 37: Spring Cloud Into Production](https://reader034.vdocuments.mx/reader034/viewer/2022042722/58ac6dbf1a28abd7488b6283/html5/thumbnails/37.jpg)
SPRING CLOUD INTO PRODUCTION
IT RUNS BETTER!
▸ Any service in our VPC can access via
http://config.gr8conf.vpc:8888/
▸ Private hosted zones do not work from outside VPC access
▸ Use public DNS records if external access is needed
![Page 38: Spring Cloud Into Production](https://reader034.vdocuments.mx/reader034/viewer/2022042722/58ac6dbf1a28abd7488b6283/html5/thumbnails/38.jpg)
SPRING INTO PRODUCTION
EUREKA INTO PRODUCTION
▸ How do you find a server?
▸ How do servers find each other?
▸ Route53 and DNS to the rescue again
![Page 39: Spring Cloud Into Production](https://reader034.vdocuments.mx/reader034/viewer/2022042722/58ac6dbf1a28abd7488b6283/html5/thumbnails/39.jpg)
SPRING CLOUD INTO PRODUCTION
Gr8EurekaApplication.groovy
![Page 40: Spring Cloud Into Production](https://reader034.vdocuments.mx/reader034/viewer/2022042722/58ac6dbf1a28abd7488b6283/html5/thumbnails/40.jpg)
SPRING CLOUD INTO PRODUCTION
bootstrap.yml
![Page 41: Spring Cloud Into Production](https://reader034.vdocuments.mx/reader034/viewer/2022042722/58ac6dbf1a28abd7488b6283/html5/thumbnails/41.jpg)
SPRING CLOUD INTO PRODUCTION
eureka-server.yml
![Page 42: Spring Cloud Into Production](https://reader034.vdocuments.mx/reader034/viewer/2022042722/58ac6dbf1a28abd7488b6283/html5/thumbnails/42.jpg)
SPRING INTO PRODUCTION
ROUTE 53 FOR EUREKA
▸ TXT record per region to point to AZ in that region txt.us-east-1.gr8conf.vpc ->us-east-1d.gr8conf.vpc
us-east-1e.gr8conf.vpc
▸ TXT record per AZ in region txt.us-east-1d.gr8conf.vpc ->
ec2-##-##-##-##.compute-1.amazonaws.com
ec2-##-##-##-##.compute-1.amazonaws.com
![Page 43: Spring Cloud Into Production](https://reader034.vdocuments.mx/reader034/viewer/2022042722/58ac6dbf1a28abd7488b6283/html5/thumbnails/43.jpg)
SPRING CLOUD INTO PRODUCTION
![Page 44: Spring Cloud Into Production](https://reader034.vdocuments.mx/reader034/viewer/2022042722/58ac6dbf1a28abd7488b6283/html5/thumbnails/44.jpg)
SPRING CLOUD INTO PRODUCTION
![Page 45: Spring Cloud Into Production](https://reader034.vdocuments.mx/reader034/viewer/2022042722/58ac6dbf1a28abd7488b6283/html5/thumbnails/45.jpg)
SPRING CLOUD INTO PRODUCTION
A FEW TRICKS
▸ List of EC2 instances must use the expanded EIP hostname
▸ Separated by spaces
▸ Space at start, and space at end
▸ Failure results in Eureka servers using wrong hostname and not recognizing each other properly
![Page 46: Spring Cloud Into Production](https://reader034.vdocuments.mx/reader034/viewer/2022042722/58ac6dbf1a28abd7488b6283/html5/thumbnails/46.jpg)
SPRING CLOUD INTO PRODUCTION
![Page 47: Spring Cloud Into Production](https://reader034.vdocuments.mx/reader034/viewer/2022042722/58ac6dbf1a28abd7488b6283/html5/thumbnails/47.jpg)
SPRING CLOUD INTO PRODUCTION
![Page 48: Spring Cloud Into Production](https://reader034.vdocuments.mx/reader034/viewer/2022042722/58ac6dbf1a28abd7488b6283/html5/thumbnails/48.jpg)
SPRING CLOUD INTO PRODUCTION
![Page 49: Spring Cloud Into Production](https://reader034.vdocuments.mx/reader034/viewer/2022042722/58ac6dbf1a28abd7488b6283/html5/thumbnails/49.jpg)
SPRING CLOUD INTO PRODUCTION
![Page 50: Spring Cloud Into Production](https://reader034.vdocuments.mx/reader034/viewer/2022042722/58ac6dbf1a28abd7488b6283/html5/thumbnails/50.jpg)
SPRING CLOUD INTO PRODUCTION
![Page 51: Spring Cloud Into Production](https://reader034.vdocuments.mx/reader034/viewer/2022042722/58ac6dbf1a28abd7488b6283/html5/thumbnails/51.jpg)
SPRING CLOUD INTO PRODUCTION
![Page 52: Spring Cloud Into Production](https://reader034.vdocuments.mx/reader034/viewer/2022042722/58ac6dbf1a28abd7488b6283/html5/thumbnails/52.jpg)
SPRING CLOUD INTO PRODUCTION
HOW DO OUR SERVICES USE THIS?
▸ Point to config server ELB
▸ Store Eureka config details for clients in config server
▸ EurekaInstanceConfigBean has to happen on services too
![Page 53: Spring Cloud Into Production](https://reader034.vdocuments.mx/reader034/viewer/2022042722/58ac6dbf1a28abd7488b6283/html5/thumbnails/53.jpg)
SPRING CLOUD INTO PRODUCTION
Gr8ServiceApplication.groovy
![Page 54: Spring Cloud Into Production](https://reader034.vdocuments.mx/reader034/viewer/2022042722/58ac6dbf1a28abd7488b6283/html5/thumbnails/54.jpg)
SPRING CLOUD INTO PRODUCTION
Gr8Controller.groovy
![Page 55: Spring Cloud Into Production](https://reader034.vdocuments.mx/reader034/viewer/2022042722/58ac6dbf1a28abd7488b6283/html5/thumbnails/55.jpg)
SPRING CLOUD INTO PRODUCTION
bootstrap.yml
![Page 56: Spring Cloud Into Production](https://reader034.vdocuments.mx/reader034/viewer/2022042722/58ac6dbf1a28abd7488b6283/html5/thumbnails/56.jpg)
SPRING CLOUD INTO PRODUCTION
gr8service.yml
![Page 57: Spring Cloud Into Production](https://reader034.vdocuments.mx/reader034/viewer/2022042722/58ac6dbf1a28abd7488b6283/html5/thumbnails/57.jpg)
SPRING CLOUD INTO PRODUCTION
DEPLOY TO PRODUCTION
▸ Same as we’ve seen
▸ Push Docker image to ECR
▸ Create Task Definition
▸ Create Service
▸ Public facing? Use an ELB to get a reliable URL
![Page 58: Spring Cloud Into Production](https://reader034.vdocuments.mx/reader034/viewer/2022042722/58ac6dbf1a28abd7488b6283/html5/thumbnails/58.jpg)
SPRING CLOUD INTO PRODUCTION
![Page 59: Spring Cloud Into Production](https://reader034.vdocuments.mx/reader034/viewer/2022042722/58ac6dbf1a28abd7488b6283/html5/thumbnails/59.jpg)
SPRING CLOUD INTO PRODUCTION
HYSTRIX MONITORING
▸ Use Hystrix Dashboard
![Page 60: Spring Cloud Into Production](https://reader034.vdocuments.mx/reader034/viewer/2022042722/58ac6dbf1a28abd7488b6283/html5/thumbnails/60.jpg)
SPRING CLOUD INTO PRODUCTION
![Page 61: Spring Cloud Into Production](https://reader034.vdocuments.mx/reader034/viewer/2022042722/58ac6dbf1a28abd7488b6283/html5/thumbnails/61.jpg)
SPRING CLOUD INTO PRODUCTION
http://techblog.netflix.com/2012/12/hystrix-dashboard-and-turbine.html
![Page 62: Spring Cloud Into Production](https://reader034.vdocuments.mx/reader034/viewer/2022042722/58ac6dbf1a28abd7488b6283/html5/thumbnails/62.jpg)
SPRING CLOUD INTO PRODUCTION
HYSTRIX MONITORING FOR THEM ALL
▸ Start a Turbine server
▸ Finds services to get Hystrix streams via Eureka
▸ Need AMPQ broker
![Page 63: Spring Cloud Into Production](https://reader034.vdocuments.mx/reader034/viewer/2022042722/58ac6dbf1a28abd7488b6283/html5/thumbnails/63.jpg)
SPRING CLOUD INTO PRODUCTION
http://www.programering.com/a/MDN3gzNwATE.html
![Page 64: Spring Cloud Into Production](https://reader034.vdocuments.mx/reader034/viewer/2022042722/58ac6dbf1a28abd7488b6283/html5/thumbnails/64.jpg)
![Page 65: Spring Cloud Into Production](https://reader034.vdocuments.mx/reader034/viewer/2022042722/58ac6dbf1a28abd7488b6283/html5/thumbnails/65.jpg)
SPRING CLOUD INTO PRODUCTION
THANK YOU
▸ https://github.com/ziftytodd
▸ @ziftytodd
▸ www.zifty.com