SLIDE 1
Case Study - Continuous Deployment at Outbrain
Itai Hochman VP Engineering at Outbrain
SLIDE 2 Continuous Deployment
- Outbrain – Few Facts
- From Releases to CD
- Culture
- Architecture
- Tools
SLIDE 3
Outbrain enables readers to discover the most interesting, relevant and timely links to stories (paid and organic)
SLIDE 4
SLIDE 5
Widget Customization…
SLIDE 6 Multi Billion Page Views per month
Note: Outbrain is typically installed on *every* article/blog post on each of these sites, immediately under the content.
SLIDE 7
What is continuous deployment?
Work procedures and culture that allow releasing code to production in very short cycles multiple times a day
SLIDE 8
What was so bad before ?
SLIDE 9
Conclusion
Reduce Risk: Deploy your code Often
SLIDE 10
Conclusion
Release when you are Ready
SLIDE 11 How to do it?
- Culture
- Architecture
- Tools
SLIDE 12
HOW
SLIDE 13
How does it work? Continuously Prioritized Tasks Queues Minimize Work In Progress (WIP)
SLIDE 14
Continuous Deployment -Culture
Developers own their tasks
SLIDE 15
Continuous Deployment -Culture Definition of Done: Feature was released
Monitoring shows Value
SLIDE 16
Continuous Deployment - Culture
Focus on Production Environment
SLIDE 17 Continuous Deployment - Culture
- No Code branches
- Frequent commits
- Unit testing coverage
- Fast
- Stable Trunk
SLIDE 18
Continuous Deployment Themes Deployment - engineering decision Release - marketing decision
SLIDE 19
Continuous Deployment -Culture
Feature Flags
SLIDE 20
Immune System Unit Testing Integration Testing Regression Testing Self Test Monitoring System Alerting
SLIDE 21
Immune System
Dev-Ops Cooperation
SLIDE 22
Continuous Deployment -Culture Learn:
Take-Ins (Post Mortem)
SLIDE 23
Continuous Deployment
Architecture
SLIDE 24
Continuous Deployment Split the backend to Stand Alone Deployable
Services
SLIDE 25
Continuous Deployment
Build to Tolerate Failures
SLIDE 26
Continuous Deployment
Tools
SLIDE 27
Tools
Code review
SLIDE 28
Tools Continuous Integration Server
SLIDE 29
Tools Regerssion Testing
SLIDE 30
Tools Monitoring
SLIDE 31
Tools Log collection and Analysis
SLIDE 32
Tools Deployer – Based on Glu
SLIDE 33
Tools Communication - Yammer
SLIDE 34
Tools Service monitoring
SLIDE 35 Fun Numbers
l 5-50 production changes a day!!! l More then 5000 unit tests running in
less then 5 minutes.
l More then 8000 regression tests
running every hour.
l It takes ~15 minutes from code
complete to ~50 machines deployed.