SLIDE 1 Microservices at the Heart of BBC iPlayer
Cem Staveley
Software Engineer, BBC
SLIDE 2
SLIDE 3
SLIDE 4
October 2nd
2014
SLIDE 5
SLIDE 6 [17:23] RobinM Our live boxes seem to be struggling to work through requests [17:23] RobinM Restarts not helping [17:24] RobinM We’re scaling up the number of instances now in case it’s a load issue
SLIDE 7
SLIDE 8
SLIDE 9
5 hours
SLIDE 10
SLIDE 11 iBL Metadata API Web TV Mobile
SLIDE 12
Fast Resilient Scalable
SLIDE 13
Fast Resilient Scalable
SLIDE 14
SLIDE 15
SLIDE 16
SLIDE 17 Unbalanced Capacities
1-5 second response times Dependency on HTTP caching
SLIDE 18
Re-Architect
SLIDE 19 6,500 episodes 1,200 programmes 30 days of availability
SLIDE 20
SLIDE 21
SLIDE 22
SLIDE 23
SLIDE 24
SLIDE 25
SLIDE 26
SLIDE 27
SLIDE 28
What went right
SLIDE 29 5 seconds ~10 milliseconds
Before After
SLIDE 30
Independently Deployable Independently Scalable Independently Failable
SLIDE 31
Team Workflow
SLIDE 32
TDD Pairing
SLIDE 33
SLIDE 34
SLIDE 35
SLIDE 36
What went wrong
SLIDE 37
Unnecessary services
SLIDE 38
SLIDE 39
SLIDE 40
SLIDE 41
Distributed Monolith
SLIDE 42
SLIDE 43
SLIDE 44
SLIDE 45
SLIDE 46
SLIDE 47
SLIDE 48
SLIDE 49
What went right
SLIDE 50
No more single point of failure
SLIDE 51
Formalised Data Model
SLIDE 52
Independently Deployable Independently Scalable Independently Failable
SLIDE 53 Consumer Contracts
bbc/consumer-contracts
SLIDE 54
SLIDE 55
Yeoman
SLIDE 56
Shared HTTP Cache
SLIDE 57 bbc/flashheart
Caching Logging Stats Circuit Breaking Rate Limiting
SLIDE 58
StatsD Graphite Grafana
SLIDE 59
Seyren
SLIDE 60
What went wrong
SLIDE 61
HTTPS and Keep-Alive
SLIDE 62
Deleted the database too early Whoops!
SLIDE 63
Where we are now
SLIDE 64
SLIDE 65
SLIDE 66
Varnish StatsD CollectD
SLIDE 67
Thank You
Cem.Staveley@bbc.co.uk