2016-02-17 Spring Cloud - Gibb Spring Cloud *.pdf2016/02/17  · Netflix Config Server Backed by...

21
Spring Cloud * Discovery and Config systems comparison Spencer Gibb https://github.com/spencergibb/spring-cloud-star http://spencer.gibb.us

Transcript of 2016-02-17 Spring Cloud - Gibb Spring Cloud *.pdf2016/02/17  · Netflix Config Server Backed by...

Page 1: 2016-02-17 Spring Cloud - Gibb Spring Cloud *.pdf2016/02/17  · Netflix Config Server Backed by VCS: git, SVN Stateless @RefreshScope Uses spring-boot configuration files & semanticsAuto-configured

Spring Cloud *Discovery and Config systems comparison

Spencer Gibb

https://github.com/spencergibb/spring-cloud-starhttp://spencer.gibb.us

Page 2: 2016-02-17 Spring Cloud - Gibb Spring Cloud *.pdf2016/02/17  · Netflix Config Server Backed by VCS: git, SVN Stateless @RefreshScope Uses spring-boot configuration files & semanticsAuto-configured
Page 3: 2016-02-17 Spring Cloud - Gibb Spring Cloud *.pdf2016/02/17  · Netflix Config Server Backed by VCS: git, SVN Stateless @RefreshScope Uses spring-boot configuration files & semanticsAuto-configured

Service B

Service Registration & Discovery

Registry

Service A

Page 4: 2016-02-17 Spring Cloud - Gibb Spring Cloud *.pdf2016/02/17  · Netflix Config Server Backed by VCS: git, SVN Stateless @RefreshScope Uses spring-boot configuration files & semanticsAuto-configured

DiscoveryClient

@EnableDiscoveryClient

ServiceInstance si = discoveryClient.choose(“serviceId”)

RestTemplate

@FeignClient

Page 5: 2016-02-17 Spring Cloud - Gibb Spring Cloud *.pdf2016/02/17  · Netflix Config Server Backed by VCS: git, SVN Stateless @RefreshScope Uses spring-boot configuration files & semanticsAuto-configured

Service B

12 Factor Apps http://12factor.net

Distributed Configuration

Config Server

Service A

Page 6: 2016-02-17 Spring Cloud - Gibb Spring Cloud *.pdf2016/02/17  · Netflix Config Server Backed by VCS: git, SVN Stateless @RefreshScope Uses spring-boot configuration files & semanticsAuto-configured

Service A

Context Lifecycle

BootstrapApplication

Context

Regular Application

Context

Config Server

Page 7: 2016-02-17 Spring Cloud - Gibb Spring Cloud *.pdf2016/02/17  · Netflix Config Server Backed by VCS: git, SVN Stateless @RefreshScope Uses spring-boot configuration files & semanticsAuto-configured

Environment

@ConfigurationProperties

@Value

Environment

Page 8: 2016-02-17 Spring Cloud - Gibb Spring Cloud *.pdf2016/02/17  · Netflix Config Server Backed by VCS: git, SVN Stateless @RefreshScope Uses spring-boot configuration files & semanticsAuto-configured

Spring Cloud Config Server

Greenfield

HTTP API similar to Netflix Config Server

Backed by VCS: git, SVN

Stateless

@RefreshScope

Uses spring-boot configuration files & semanticsAuto-configured client

Refresh via bus

Webhook support for github, gitlab and bitbucket

Page 9: 2016-02-17 Spring Cloud - Gibb Spring Cloud *.pdf2016/02/17  · Netflix Config Server Backed by VCS: git, SVN Stateless @RefreshScope Uses spring-boot configuration files & semanticsAuto-configured

DEMO

Page 10: 2016-02-17 Spring Cloud - Gibb Spring Cloud *.pdf2016/02/17  · Netflix Config Server Backed by VCS: git, SVN Stateless @RefreshScope Uses spring-boot configuration files & semanticsAuto-configured

Eureka

Page 11: 2016-02-17 Spring Cloud - Gibb Spring Cloud *.pdf2016/02/17  · Netflix Config Server Backed by VCS: git, SVN Stateless @RefreshScope Uses spring-boot configuration files & semanticsAuto-configured

Eureka pro’s

Highly-available

Mature / Proven by Netflix

Tight Ribbon Integration

Page 12: 2016-02-17 Spring Cloud - Gibb Spring Cloud *.pdf2016/02/17  · Netflix Config Server Backed by VCS: git, SVN Stateless @RefreshScope Uses spring-boot configuration files & semanticsAuto-configured

Eureka Con’s

JVM Based

Thick Java client

Polyglot by Sidecar

Built for AWS Initially

Long thresholds for registraion and cache refresh (30s)

Page 13: 2016-02-17 Spring Cloud - Gibb Spring Cloud *.pdf2016/02/17  · Netflix Config Server Backed by VCS: git, SVN Stateless @RefreshScope Uses spring-boot configuration files & semanticsAuto-configured

Consul

Page 14: 2016-02-17 Spring Cloud - Gibb Spring Cloud *.pdf2016/02/17  · Netflix Config Server Backed by VCS: git, SVN Stateless @RefreshScope Uses spring-boot configuration files & semanticsAuto-configured

Consul pro’sPolyglot

HTTP API and DNS interface

ACL’s

Health Checks

Multi-Datacenter

Vault Integration

YAML and Properties Blobs supported

peer-to-peer gossip system

Nice UI

Page 15: 2016-02-17 Spring Cloud - Gibb Spring Cloud *.pdf2016/02/17  · Netflix Config Server Backed by VCS: git, SVN Stateless @RefreshScope Uses spring-boot configuration files & semanticsAuto-configured

Consul Con’sYoung

Agent on every host

Page 16: 2016-02-17 Spring Cloud - Gibb Spring Cloud *.pdf2016/02/17  · Netflix Config Server Backed by VCS: git, SVN Stateless @RefreshScope Uses spring-boot configuration files & semanticsAuto-configured

DEMO

Page 17: 2016-02-17 Spring Cloud - Gibb Spring Cloud *.pdf2016/02/17  · Netflix Config Server Backed by VCS: git, SVN Stateless @RefreshScope Uses spring-boot configuration files & semanticsAuto-configured

Zookeeper

Page 18: 2016-02-17 Spring Cloud - Gibb Spring Cloud *.pdf2016/02/17  · Netflix Config Server Backed by VCS: git, SVN Stateless @RefreshScope Uses spring-boot configuration files & semanticsAuto-configured

Zookeeper pro’sConsistent Store

Started life as a Hadoop sub-project (2007?)

Mature, used in many companies

Useful if ZK is already part of your infrastructure

Ephemeral Nodes / Persistent Connections

Uses Apache Curator and its Service Discovery Recipe

Page 19: 2016-02-17 Spring Cloud - Gibb Spring Cloud *.pdf2016/02/17  · Netflix Config Server Backed by VCS: git, SVN Stateless @RefreshScope Uses spring-boot configuration files & semanticsAuto-configured

Zookeeper Con’s

Scale Issues

OPS Headaches

Needs management process like Netflix Exhibitor

Persistent Connections

Page 20: 2016-02-17 Spring Cloud - Gibb Spring Cloud *.pdf2016/02/17  · Netflix Config Server Backed by VCS: git, SVN Stateless @RefreshScope Uses spring-boot configuration files & semanticsAuto-configured

Honorable Mention

Spring Cloud CloudFoundry

Spring Cloud ETCD (Experimental)

AirbNB Smart Stack http://nerds.airbnb.com/smartstack-service-discovery-cloud/

Uber HyperbahN https://youtu.be/N2472uS5Y6M - https://github.com/uber/hyperbahn

Page 21: 2016-02-17 Spring Cloud - Gibb Spring Cloud *.pdf2016/02/17  · Netflix Config Server Backed by VCS: git, SVN Stateless @RefreshScope Uses spring-boot configuration files & semanticsAuto-configured

Questions?

https://github.com/spencergibb/spring-cloud-starhttp://spencer.gibb.us

@spencerbgibb

Pivotal is hiring In Atlanta

http://pivotal.io/careers