spring cloud into production

65
SPRING CLOUD INTO PRODUCTION TODD MILLER

Upload: todd-miller

Post on 21-Feb-2017

119 views

Category:

Technology


1 download

TRANSCRIPT

Page 1: Spring Cloud Into Production

SPRING CLOUD INTO PRODUCTION

TODD MILLER

Page 2: Spring Cloud Into Production

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

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

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
Page 6: Spring Cloud Into Production

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

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

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

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
Page 11: Spring Cloud Into Production
Page 12: Spring Cloud Into Production
Page 13: Spring Cloud Into Production
Page 14: Spring Cloud Into Production

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
Page 16: Spring Cloud Into Production
Page 17: Spring Cloud Into Production
Page 18: Spring Cloud Into Production
Page 19: Spring Cloud Into Production
Page 20: Spring Cloud Into Production
Page 21: Spring Cloud Into Production

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

SPRING CLOUD INTO PRODUCTION

Gr8ConfigApplication.groovy

bootstrap.yml

Dockerfile

Page 23: Spring Cloud Into Production

SPRING INTO PRODUCTION

Page 24: Spring Cloud Into Production

SPRING INTO PRODUCTION

Page 25: Spring Cloud Into Production

SPRING INTO PRODUCTION

Page 26: Spring Cloud Into Production

SPRING INTO PRODUCTION

Page 27: Spring Cloud Into Production

SPRING CLOUD INTO PRODUCTION

Page 28: Spring Cloud Into Production

SPRING CLOUD INTO PRODUCTION

Page 29: Spring Cloud Into Production

SPRING CLOUD INTO PRODUCTION

Page 30: Spring Cloud Into Production

SPRING CLOUD INTO PRODUCTION

Page 31: Spring Cloud Into Production

SPRING CLOUD INTO PRODUCTION

Page 32: Spring Cloud Into Production

SPRING CLOUD INTO PRODUCTION

Page 33: Spring Cloud Into Production

SPRING CLOUD INTO PRODUCTION

Page 34: Spring Cloud Into Production

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

SPRING CLOUD INTO PRODUCTION

Page 36: Spring Cloud Into Production

SPRING CLOUD INTO PRODUCTION

Page 37: Spring Cloud Into Production

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

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

SPRING CLOUD INTO PRODUCTION

Gr8EurekaApplication.groovy

Page 40: Spring Cloud Into Production

SPRING CLOUD INTO PRODUCTION

bootstrap.yml

Page 41: Spring Cloud Into Production

SPRING CLOUD INTO PRODUCTION

eureka-server.yml

Page 42: Spring Cloud Into Production

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

SPRING CLOUD INTO PRODUCTION

Page 44: Spring Cloud Into Production

SPRING CLOUD INTO PRODUCTION

Page 45: Spring Cloud Into Production

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

SPRING CLOUD INTO PRODUCTION

Page 47: Spring Cloud Into Production

SPRING CLOUD INTO PRODUCTION

Page 48: Spring Cloud Into Production

SPRING CLOUD INTO PRODUCTION

Page 49: Spring Cloud Into Production

SPRING CLOUD INTO PRODUCTION

Page 50: Spring Cloud Into Production

SPRING CLOUD INTO PRODUCTION

Page 51: Spring Cloud Into Production

SPRING CLOUD INTO PRODUCTION

Page 52: Spring Cloud Into Production

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

SPRING CLOUD INTO PRODUCTION

Gr8ServiceApplication.groovy

Page 54: Spring Cloud Into Production

SPRING CLOUD INTO PRODUCTION

Gr8Controller.groovy

Page 55: Spring Cloud Into Production

SPRING CLOUD INTO PRODUCTION

bootstrap.yml

Page 56: Spring Cloud Into Production

SPRING CLOUD INTO PRODUCTION

gr8service.yml

Page 57: Spring Cloud Into Production

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

SPRING CLOUD INTO PRODUCTION

Page 59: Spring Cloud Into Production

SPRING CLOUD INTO PRODUCTION

HYSTRIX MONITORING

▸ Use Hystrix Dashboard

Page 60: Spring Cloud Into Production

SPRING CLOUD INTO PRODUCTION

Page 61: Spring Cloud Into Production

SPRING CLOUD INTO PRODUCTION

http://techblog.netflix.com/2012/12/hystrix-dashboard-and-turbine.html

Page 62: Spring Cloud Into Production

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

SPRING CLOUD INTO PRODUCTION

http://www.programering.com/a/MDN3gzNwATE.html

Page 64: Spring Cloud Into Production
Page 65: Spring Cloud Into Production

SPRING CLOUD INTO PRODUCTION

THANK YOU

▸ https://github.com/ziftytodd

[email protected]

▸ @ziftytodd

▸ www.zifty.com