SOA Primer
• Service Oriented Architecture
• Autonomous
• Limited Scope
• Loose Coupling
• e.g. opposite of classic monolith
Slide 6
Slide 6 text
Web App
Forecasting
Order
Processing
Order
History
Slide 7
Slide 7 text
Web App
Order
Processing
Discovery
Which nodes are part of “Order Processing”?
Slide 8
Slide 8 text
Web App
Order Processing
Node 1
Node N
…
Load Balancing
How to ensure request leveling across providers?
Slide 9
Slide 9 text
Web App
Order Processing
Node 1
Node N
…
Load
Balancer
Anti-Pattern!
Load Balancer is a Single Point of Failure (SPOF)
Slide 10
Slide 10 text
Web App
Order Processing
Node 1
Node N
…
Health Checking
How to avoid routing to unhealthy hosts?
Slide 11
Slide 11 text
Web App
Web App
Web App
Maintenance = true
EnableFeature = false
Configuration
How to efficiently push dynamic configuration?
Slide 12
Slide 12 text
Recap
• Service Discovery
• Load Balancing
• Health Checking
• Configuration
Slide 13
Slide 13 text
Problems? Check.
Slide 14
Slide 14 text
Solutions? Nope.
Slide 15
Slide 15 text
Solutions*
• ZooKeeper, etcd, doozerd
• Nagios, Sensu
• SkyDNS
• SmartStack
Consul Comparisons:
http://www.consul.io/intro/vs/index.html
Slide 16
Slide 16 text
Build it yourself!
Slide 17
Slide 17 text
First Pass: Serf
• Node membership
• Failure Detection
• Custom Events
• Tag Meta Data
• http://serfdom.io
Slide 18
Slide 18 text
Serf Shortcomings
• 1 Node : 1 Service
• 1 : N possible with tag overloading
• Liveness check only
• Fully decentralized
• Joy to operate
• Difficult to extend
• Eventually Consistent Only
Slide 19
Slide 19 text
Learning
• 1 Node : N Services
• Host checks + Service Checks
• Simpler interfaces (Serf only MsgPack/TCP)
• Strong Consistency
• Multi Datacenter (Serf WAN not optimal)
Slide 20
Slide 20 text
Consul
Slide 21
Slide 21 text
Service Discovery
HTTP + DNS
Datacenter Aware
(Ritualistic sacrifice
not required)
K/V Store
HTTP API
Host & Service
Level Health Checks
Slide 22
Slide 22 text
It Just Works.
Slide 23
Slide 23 text
No content
Slide 24
Slide 24 text
Consul Today
• Powers Vagrant Cloud
• Used in our on-premise product
• Version 0.1 Released
• Version 0.2 Next Week
• Web UI
Slide 25
Slide 25 text
Consul Tomorrow
• Partner Deploys
• Version 0.3+
• Leader Election
• Clients
• CLI tools