From Vagrant to production
Mark Eijsermans
HootSuite - Software Engineer
@markeijsermans
http://code.hootsuite.com
HootSuite
• 
• 
• 
• 
• 
• 
• 

Social media dashboard
8M users
40 people committing code
4 ops
AWS (2/3) & private cloud (1/3)
100M requests/day (hootsuite.com)
70M requests/day (ow.ly)
•  Monolithic web app (PHP)
•  Transitioning towards service oriented
architecture (Scala)
In the beginning

dev server
(LAMP)

smb

dev 1

svn

smb

dev 2

production
(LAMP)
In the beginning
Release anytime
•  Small team
•  Is intimately aware of prod
•  Low overhead to release

DevOps?
..a while later
web

web

web

web

web

web

web

web

svn

dev server

web

web

web

web

gearman
smb

gearman

0mq worker

dev

dev

dev

dev

dev

dev

dev

dev

dev

dev

dev

dev

dev

dev

dev

dev

dev

dev

dev

dev

dev

cron

dev

dev

cron

dev

dev

cron

0mq worker

ops

ops

cron
..a while later

1 release / 2-4 weeks
• 
• 
• 
• 
• 

Medium sized team
Branching, pre-release code freezes
Only some devs knowledgeable of prod
Ops mostly handles deploy
Complicated process

Devs vs. Ops?
…and a few years more (now)
Vagrant
dev

dev

dev

dev

dev

dev

dev

dev

dev

dev

dev

dev

dev

dev

dev

dev

dev

dev

dev

monolithic 
web app

dev

dev

dev

dev

dev

dev

dev

dev

ops

ops

ops





automate
build
test
QA

Service A

Service B

Service C

Service D
…and a few years more (now)
6 - 10 release / day
• 
• 
• 
• 
• 
• 

Larger team
No branching
Anyone deploys
Automated process
Commit to production in 15min
Much higher % of devs understand prod
From vagrant to production - Mark Eijsermans
Perfection is the enemy of good
•  You’re never going to get a perfect system
•  How far along are we?
•  How many things are actually:
•  Automated
•  Reproducible
•  In a state we want them to be

•  When can we start feeling good about it?
The move to artifacts
•  svn
•  svn mirror
•  PHP
•  phar
•  tar + zsync

•  Scala
•  debian packages
Dev

Build

Deploy

Jenkins
project code

unit test

create
artifact

Artifact Repo
build #124
build #123

smoke test

staging

dash4deploy

production

production
service A/B/C
From vagrant to production - Mark Eijsermans
From vagrant to production - Mark Eijsermans
From vagrant to production - Mark Eijsermans
From vagrant to production - Mark Eijsermans
From vagrant to production - Mark Eijsermans
From vagrant to production - Mark Eijsermans
From vagrant to production - Mark Eijsermans
Broke the build?

“I’m on it”
From vagrant to production - Mark Eijsermans
Vagrant
•  Working on a shared web server over
samba was simply painful
•  extremely volatile environment

•  Vagrant simply kicks ass
•  Dev / prod parity
•  Encourages experimentation
•  go ahead and try out that new X
Dev

Build

Deploy

Jenkins
project code
(vagrant)

unit test

create
artifact

Artifact Repo
build #124
build #123

smoke test

staging

dash4deploy

production

production
service A/B/C
Dev

Build

Deploy

Jenkins
project code
(vagrant)

Ansible

unit test

create
artifact

smoke test

build vagrant
box

Artifact Repo
vagrant.box
build #124
build #123

dash4deploy

production

production
service A/B/C

staging
From vagrant to production - Mark Eijsermans
From vagrant to production - Mark Eijsermans
Ansible (and why we love it)
…yes, use any CM, but why we chose Ansible:
•  New team members up to speed in a few days:
•  Gentle learning curve – YAML
•  Push over ssh - easy to understand

•  The more declarative it is, the more it documents
•  It's all about disseminating information

•  Agentless model suits immutable ephemeral instances
Digital archeology
Auditing our infrastructure
There are gems in that dirt
•  logs
•  you mean logs aren’t saved to /dev/null ?
•  app was rotating logs, vs. using logrotate

•  memcached, mongodb servers not all the same version

•  what the hell is server X for ???
Cache for gold
•  With configuration management gold images
become a caching layer to the build process
•  Private cloud - idle instances are cheap
•  AMI - need auto spinning to save $$$ & time
Simplify for sanity
•  200+ server types is hard to manage
•  Amortize the stack
•  Custom bespoke vs. generic appliances
Devs on call
•  Learning happens in production
•  Production is still running at 3am
“People who are really
serious about software should
make their own hardware”
Alan Kay
Devs on call
•  Is your monitoring and tooling truly effective?
•  Make sure they can ssh into the damn box! (if they

have to)
•  Throwing some poor dev onto a broken system
they know nothing about doesn't work
•  Choose your own adventure cookbooks
•  Create registry of specialists
Is this working?
Working out loud
•  Yammer (& HipChat for on call)
•  Tried IRC, was too silo’ed

•  5 whys post mortems
•  Accountability
•  Build fails - “I'm on it”
Learning happens in production
Thank you!
@markeijsermans
http://code.hootsuite.com

More Related Content

PDF
Modern software architectures - PHP UK Conference 2015
PDF
Big Data! Great! Now What? #SymfonyCon 2014
PDF
Building a bakery of Windows servers with Packer - London WinOps
PPTX
Kubernetes at NU.nl (Kubernetes meetup 2019-09-05)
PPTX
Cloud patterns
PPTX
Manage your environment with DSC
PDF
Five Years of EC2 Distilled
PDF
Immutable infrastructure with Boxfuse
Modern software architectures - PHP UK Conference 2015
Big Data! Great! Now What? #SymfonyCon 2014
Building a bakery of Windows servers with Packer - London WinOps
Kubernetes at NU.nl (Kubernetes meetup 2019-09-05)
Cloud patterns
Manage your environment with DSC
Five Years of EC2 Distilled
Immutable infrastructure with Boxfuse

What's hot (20)

PDF
DevOpsCon 2015 - DevOps in Mobile Games
PDF
Delivering big content at NBC News with RavenDB
PDF
How DreamHost builds a Public Cloud with OpenStack
PDF
Devoxx PL 2018 - Microservices in action at the Dutch National Police
PPTX
Networking in the cloud: An SDN primer
PPTX
London Hashicorp Meetup #22 - Congruent infrastructure @zopa by Ben Coughlan
PPTX
A brief intro to nodejs
PPTX
Opinionated containers and the future of game servers by Brendan Fosberry
PPTX
re:Cap RVA - A Recap of AWS re:Invent 2019
PDF
Innovating faster with SBT, Continuous Delivery, and LXC
PDF
SaltConf14 - Justin Carmony, Deseret Digital Media - Teaching Devs About DevOps
PDF
What we talk about when we talk about DevOps
PDF
The Pivotal Engineering Dojo: Earning Your Black Belt in Cloud Foundry Engine...
PDF
Dublin JUG February 2018 - Microservices in action at the Dutch National Police
PDF
Get There meetup March 2018 - Microservices in action at the Dutch National P...
PPTX
Deploying microservices on AWS
PDF
Hashicorp at holaluz
PDF
Network Infrastructure as Code with Chef and Cisco
PPTX
Scalable and reliable kubernetes on aws
PPTX
RavenDB embedded at massive scales
DevOpsCon 2015 - DevOps in Mobile Games
Delivering big content at NBC News with RavenDB
How DreamHost builds a Public Cloud with OpenStack
Devoxx PL 2018 - Microservices in action at the Dutch National Police
Networking in the cloud: An SDN primer
London Hashicorp Meetup #22 - Congruent infrastructure @zopa by Ben Coughlan
A brief intro to nodejs
Opinionated containers and the future of game servers by Brendan Fosberry
re:Cap RVA - A Recap of AWS re:Invent 2019
Innovating faster with SBT, Continuous Delivery, and LXC
SaltConf14 - Justin Carmony, Deseret Digital Media - Teaching Devs About DevOps
What we talk about when we talk about DevOps
The Pivotal Engineering Dojo: Earning Your Black Belt in Cloud Foundry Engine...
Dublin JUG February 2018 - Microservices in action at the Dutch National Police
Get There meetup March 2018 - Microservices in action at the Dutch National P...
Deploying microservices on AWS
Hashicorp at holaluz
Network Infrastructure as Code with Chef and Cisco
Scalable and reliable kubernetes on aws
RavenDB embedded at massive scales
Ad

Similar to From vagrant to production - Mark Eijsermans (20)

PDF
John adams talk cloudy
PDF
Chirp 2010: Scaling Twitter
PPTX
Be faster then rabbits
PPTX
Security research over Windows #defcon china
PDF
Scaling with Symfony - PHP UK
PDF
Netflix oss season 2 episode 1 - meetup Lightning talks
PDF
Fixing Twitter Improving The Performance And Scalability Of The Worlds Most ...
PDF
Fixing Twitter Improving The Performance And Scalability Of The Worlds Most ...
PDF
Fixing twitter
PDF
Fixing_Twitter
PPTX
Automation: The Good, The Bad and The Ugly with DevOpsGuys - AppD Summit Europe
PPTX
DevOpsGuys - DevOps Automation - The Good, The Bad and The Ugly
PDF
Dev Ops without the Ops
KEY
Make It Cooler: Using Decentralized Version Control
PPTX
Scaling a High Traffic Web Application: Our Journey from Java to PHP
PPTX
Scaling High Traffic Web Applications
PDF
OSDC 2013 | Introduction into Chef by Andy Hawkins
PDF
Cloud Native Camel Riding
PPTX
.Net Microservices with Event Sourcing, CQRS, Docker and... Windows Server 20...
KEY
Ship It ! with Ruby/ Rails Ecosystem
John adams talk cloudy
Chirp 2010: Scaling Twitter
Be faster then rabbits
Security research over Windows #defcon china
Scaling with Symfony - PHP UK
Netflix oss season 2 episode 1 - meetup Lightning talks
Fixing Twitter Improving The Performance And Scalability Of The Worlds Most ...
Fixing Twitter Improving The Performance And Scalability Of The Worlds Most ...
Fixing twitter
Fixing_Twitter
Automation: The Good, The Bad and The Ugly with DevOpsGuys - AppD Summit Europe
DevOpsGuys - DevOps Automation - The Good, The Bad and The Ugly
Dev Ops without the Ops
Make It Cooler: Using Decentralized Version Control
Scaling a High Traffic Web Application: Our Journey from Java to PHP
Scaling High Traffic Web Applications
OSDC 2013 | Introduction into Chef by Andy Hawkins
Cloud Native Camel Riding
.Net Microservices with Event Sourcing, CQRS, Docker and... Windows Server 20...
Ship It ! with Ruby/ Rails Ecosystem
Ad

More from Devopsdays (20)

PDF
Dev opsdays scriptcode
PDF
Zero to hero - Geoff Webb
PDF
Letting go gavin - Mc Donald
PDF
Dw tpain - Gordon Klok
PDF
Dev ops finishes what agile started - Manfred Moser
PDF
Game of thrones - Jonathan Thorpe
PDF
Heka - Rob Miller
PDF
Gaming dev ops - Eduardo Saito
PDF
From the classroom to the cloud a journey with node.js - Christopher Hogue
PDF
Dev ops at mobify - Kyle Young
PDF
Your business needs devops, so don’t follow - Brian johnson
PDF
Test kitchen 1.0 - Fletcher Nichol
PDF
Living system or build factory - Chris Maxwell
PDF
Dev ops lessons learned - Michael Collins
PDF
Building for operations - Reinhardt Quelle
PDF
Taking devops to the Next Level - Max Martin
PDF
Sensu intro - Sean Porter
PDF
Ops for everyone - John Britton
PDF
Effective monitoring with statsd - Alexis lê-quôc
PDF
Being healthy dev and ops in cookpad - Issei Naruta
Dev opsdays scriptcode
Zero to hero - Geoff Webb
Letting go gavin - Mc Donald
Dw tpain - Gordon Klok
Dev ops finishes what agile started - Manfred Moser
Game of thrones - Jonathan Thorpe
Heka - Rob Miller
Gaming dev ops - Eduardo Saito
From the classroom to the cloud a journey with node.js - Christopher Hogue
Dev ops at mobify - Kyle Young
Your business needs devops, so don’t follow - Brian johnson
Test kitchen 1.0 - Fletcher Nichol
Living system or build factory - Chris Maxwell
Dev ops lessons learned - Michael Collins
Building for operations - Reinhardt Quelle
Taking devops to the Next Level - Max Martin
Sensu intro - Sean Porter
Ops for everyone - John Britton
Effective monitoring with statsd - Alexis lê-quôc
Being healthy dev and ops in cookpad - Issei Naruta

Recently uploaded (20)

PDF
Hybrid horned lizard optimization algorithm-aquila optimizer for DC motor
PDF
Taming the Chaos: How to Turn Unstructured Data into Decisions
PDF
“A New Era of 3D Sensing: Transforming Industries and Creating Opportunities,...
PDF
Consumable AI The What, Why & How for Small Teams.pdf
PPTX
Final SEM Unit 1 for mit wpu at pune .pptx
PDF
UiPath Agentic Automation session 1: RPA to Agents
PPTX
The various Industrial Revolutions .pptx
PDF
Credit Without Borders: AI and Financial Inclusion in Bangladesh
PDF
Improvisation in detection of pomegranate leaf disease using transfer learni...
PPT
Galois Field Theory of Risk: A Perspective, Protocol, and Mathematical Backgr...
PPTX
Configure Apache Mutual Authentication
PDF
Getting started with AI Agents and Multi-Agent Systems
PDF
Developing a website for English-speaking practice to English as a foreign la...
PDF
Produktkatalog für HOBO Datenlogger, Wetterstationen, Sensoren, Software und ...
PPTX
TEXTILE technology diploma scope and career opportunities
PDF
CloudStack 4.21: First Look Webinar slides
PDF
sustainability-14-14877-v2.pddhzftheheeeee
PDF
A proposed approach for plagiarism detection in Myanmar Unicode text
PDF
Convolutional neural network based encoder-decoder for efficient real-time ob...
PDF
Architecture types and enterprise applications.pdf
Hybrid horned lizard optimization algorithm-aquila optimizer for DC motor
Taming the Chaos: How to Turn Unstructured Data into Decisions
“A New Era of 3D Sensing: Transforming Industries and Creating Opportunities,...
Consumable AI The What, Why & How for Small Teams.pdf
Final SEM Unit 1 for mit wpu at pune .pptx
UiPath Agentic Automation session 1: RPA to Agents
The various Industrial Revolutions .pptx
Credit Without Borders: AI and Financial Inclusion in Bangladesh
Improvisation in detection of pomegranate leaf disease using transfer learni...
Galois Field Theory of Risk: A Perspective, Protocol, and Mathematical Backgr...
Configure Apache Mutual Authentication
Getting started with AI Agents and Multi-Agent Systems
Developing a website for English-speaking practice to English as a foreign la...
Produktkatalog für HOBO Datenlogger, Wetterstationen, Sensoren, Software und ...
TEXTILE technology diploma scope and career opportunities
CloudStack 4.21: First Look Webinar slides
sustainability-14-14877-v2.pddhzftheheeeee
A proposed approach for plagiarism detection in Myanmar Unicode text
Convolutional neural network based encoder-decoder for efficient real-time ob...
Architecture types and enterprise applications.pdf

From vagrant to production - Mark Eijsermans

  • 1. From Vagrant to production Mark Eijsermans HootSuite - Software Engineer @markeijsermans http://code.hootsuite.com
  • 2. HootSuite •  •  •  •  •  •  •  Social media dashboard 8M users 40 people committing code 4 ops AWS (2/3) & private cloud (1/3) 100M requests/day (hootsuite.com) 70M requests/day (ow.ly)
  • 3. •  Monolithic web app (PHP) •  Transitioning towards service oriented architecture (Scala)
  • 4. In the beginning dev server (LAMP) smb dev 1 svn smb dev 2 production (LAMP)
  • 5. In the beginning Release anytime •  Small team •  Is intimately aware of prod •  Low overhead to release DevOps?
  • 6. ..a while later web web web web web web web web svn dev server web web web web gearman smb gearman 0mq worker dev dev dev dev dev dev dev dev dev dev dev dev dev dev dev dev dev dev dev dev dev cron dev dev cron dev dev cron 0mq worker ops ops cron
  • 7. ..a while later 1 release / 2-4 weeks •  •  •  •  •  Medium sized team Branching, pre-release code freezes Only some devs knowledgeable of prod Ops mostly handles deploy Complicated process Devs vs. Ops?
  • 8. …and a few years more (now) Vagrant dev dev dev dev dev dev dev dev dev dev dev dev dev dev dev dev dev dev dev monolithic web app dev dev dev dev dev dev dev dev ops ops ops automate build test QA Service A Service B Service C Service D
  • 9. …and a few years more (now) 6 - 10 release / day •  •  •  •  •  •  Larger team No branching Anyone deploys Automated process Commit to production in 15min Much higher % of devs understand prod
  • 11. Perfection is the enemy of good •  You’re never going to get a perfect system •  How far along are we? •  How many things are actually: •  Automated •  Reproducible •  In a state we want them to be •  When can we start feeling good about it?
  • 12. The move to artifacts •  svn •  svn mirror •  PHP •  phar •  tar + zsync •  Scala •  debian packages
  • 13. Dev Build Deploy Jenkins project code unit test create artifact Artifact Repo build #124 build #123 smoke test staging dash4deploy production production service A/B/C
  • 23. Vagrant •  Working on a shared web server over samba was simply painful •  extremely volatile environment •  Vagrant simply kicks ass •  Dev / prod parity •  Encourages experimentation •  go ahead and try out that new X
  • 24. Dev Build Deploy Jenkins project code (vagrant) unit test create artifact Artifact Repo build #124 build #123 smoke test staging dash4deploy production production service A/B/C
  • 25. Dev Build Deploy Jenkins project code (vagrant) Ansible unit test create artifact smoke test build vagrant box Artifact Repo vagrant.box build #124 build #123 dash4deploy production production service A/B/C staging
  • 28. Ansible (and why we love it) …yes, use any CM, but why we chose Ansible: •  New team members up to speed in a few days: •  Gentle learning curve – YAML •  Push over ssh - easy to understand •  The more declarative it is, the more it documents •  It's all about disseminating information •  Agentless model suits immutable ephemeral instances
  • 30. Auditing our infrastructure There are gems in that dirt •  logs •  you mean logs aren’t saved to /dev/null ? •  app was rotating logs, vs. using logrotate •  memcached, mongodb servers not all the same version •  what the hell is server X for ???
  • 31. Cache for gold •  With configuration management gold images become a caching layer to the build process •  Private cloud - idle instances are cheap •  AMI - need auto spinning to save $$$ & time
  • 32. Simplify for sanity •  200+ server types is hard to manage •  Amortize the stack •  Custom bespoke vs. generic appliances
  • 33. Devs on call •  Learning happens in production •  Production is still running at 3am
  • 34. “People who are really serious about software should make their own hardware” Alan Kay
  • 35. Devs on call •  Is your monitoring and tooling truly effective? •  Make sure they can ssh into the damn box! (if they have to) •  Throwing some poor dev onto a broken system they know nothing about doesn't work •  Choose your own adventure cookbooks •  Create registry of specialists
  • 37. Working out loud •  Yammer (& HipChat for on call) •  Tried IRC, was too silo’ed •  5 whys post mortems •  Accountability •  Build fails - “I'm on it”
  • 38. Learning happens in production