SlideShare a Scribd company logo
1 of 46
Download to read offline
Workflow Design
Extracting Signal from the Noise
@jonlives
Jon Cowie
Staff Operations Engineer
@jonlives
There is no correct way to
use Chef.
workflow_design
@jonlives
…but I just want to

get stuff done!
@jonlives
Absorb what is
useful.
Discard what is
useless.
@jonlives
“I am not smart enough to
build an ontology … that
can encompass all the
variations in infrastructure.
Nobody is, the world
moves too fast.”
@jonlives
There is no
magic pill.
@jonlives
You are the
expert.
@jonlives
Beware Argument Culture!
Kate Heddleston: bit.ly/argument-culture
@jonlives
[An] argument culture urges us to
approach the world—and the
people in it—in an adversarial
frame of mind
Deborah Tannen “The Argument Culture”
@jonlives
Argument Culture
• Useful in “regulated” environments like law
• Engineering is not one of those environments
• Weed out weak logic, keep strong ideas
• Everybody is on one side or the other
• We attack their position and defend our own
• We can win or lose arguments—just like battles
@jonlives
Argument Culture - Effects
• Emotional interactions
• Winning becomes paramount
• The loud dominate
• People are afraid to speak
• Best practice == repeating the loudest arguments
• Sucks for diversity in cultures and orgs
@jonlives
What a Workflow is…
workflow
noun ( also work-flow) /ˈwɜːkfləʊ/
the way that a particular type of work is
organised, or the order of the stages in a
particular work process
Cambridge Business English Dictionary
@jonlives
What a Workflow is not…
• “The Chef Way”
• “We need to use X tool”
• “We need to be more DevOps”
• “We need our process to be more like Y”
• “Z in Chef is bad. Never do Z.”
@jonlives
A workflow is the key to
solving a problem.
@jonlives
There is no correct way to
use Chef…
@jonlives
There are only lessons
learned by others in the
process of solving their
specific problems.
@jonlives
Case Studies
@jonlives
Case Studies
• Anonymized
• Companies of varying sizes
• First, a quick summary
• Then we look at their motivations
• Finally we look at their solutions
@jonlives
Case Study #1 - Summary
• Small internet video company
• Small Ops team
• EC2 based infrastructure
• Semi-immutable infrastructure
• Packer used to build AMI containers
• Chef run on instances to correct config & service status
• Previously required rolling a new AMI
@jonlives
Case Study #1 - Motivation
• They’re trying to make it as easy to get started as
possible
• Chat or comments in PRs since everybody is remote
• They aren't interested in letting some third party
change stuff unexpectedly
• No auto-deploying master - they had an accidental
push
@jonlives
Case Study #1 - Solution
• Cookbooks live in chef repo
• Dependencies in Berksfile
• “Pull request” development model
• Merge to master & Jenkins runs foodcritic & rubocop
• Merge into “jenkins” branch, triggers upload to server
@jonlives
Case Study #2 - Summary
• One project team inside extremely large company
• On-premise cloudstack infrastructure
• VMs created, then bootstrapped with Chef
• Dev, QA, Staging, Prod environments
• Legacy cookbooks maintained alongside new
• 1 workflow for new cookbooks, one for legacy
@jonlives
Case Study #2 - Motivation
• Too easy to make an innocuous change that broke
several features without knowing about it
• Desire to catch syntax errors or undeclared attributes
• Complete test coverage with minitest, kitchen-ci for
easier PR validation, and local cookbook development
@jonlives
Case Study #2 - Solution
• 1 monolithic project cookbook
• Add dependencies to Berksfile & “berks install”
• Create recipes & write tests
• “kitchen converge” until it works
• Push to git & chef server
• Test in dev, then on to prod
@jonlives
Case Study #3 - Summary
• Mid-sized online marketplace
• Mainly on-premise infrastructure
• Servers often long-lived & not immutable
• Large number of Dev & Ops Chef users
• One main environment
@jonlives
Case Study #3 - Motivation
• Many Chefs
• Many small changes by often inexperienced users
• Historical cookbooks make using community
cookbooks difficult & time consuming
• App deployed using separate deploy tool
• Continuous delivery in “DNA”
@jonlives
Case Study #3 - Solution
• Cookbooks live in monolithic repository
• Roles == attribs, environments == constraints
• Tooling geared for efficiency & iteration vs testing
• Testing done locally with chef-zero & why-run
• …or in prod with whitelists
• Versions always pinned in prod environment
@jonlives
Case Study #4 - Summary
• Mid-sized ecommerce service provider
• Mainly on-premise infrastructure
• Multiple product-based teams
• Multiple environments to support those teams
@jonlives
Case Study #4 - Motivation
• Teams based around the Products they build and run
• Different opinions & requirements for workflow
• Most effort was spent on new greenfield projects
• Trying to avoid “veneering tech debt”
• Chef was new to most people
• Pressure to produce visible & demonstrable results
@jonlives
Case Study #4 - Solution
• 85% of cookbooks in monolithic repo
• Start with community cookbooks
• Wrap as needed
• Team or Product specific environments
• Roles used to set permissions etc
• Optional cookbook pinning
@jonlives
So, how do we create a
Workflow?
@jonlives
Workflow Design
• What problem are you solving?
• Who are you solving it for?
• How does your ideal solution look?
• Choose your Tooling
• Implement your workflow
@jonlives
What Problem are you Solving?
• Write down a simple problem
statement
• “I want to automate app deploys”
• “I want to automate server builds”
• “I want us to test our cookbooks
more”
• Break that down into simple pieces
What
Who
How
Tooling
Implement
@jonlives
Who are you solving it for?
• Understand your stakeholders
• Understand your business priorities
• What do *they* care about most?
• How often will they work with your
solution?
• Conway’s law
What
Who
How
Tooling
Implement
@jonlives
Conway’s Law
“Organizations which design systems ...
are constrained to produce designs which
are copies of the communication
structures of these organizations”
Melvin Conway, 1968
@jonlives
How does your ideal solution look?
• Have an ideal “end goal” in mind
• Agree with stakeholders
• You won’t get there in one go
• But you’ll know what you’re
working towards
What
Who
How
Tooling
Implement
@jonlives
Choose your Weapons!
• Pick candidate tools
• Probe strengths and weaknesses
• Understand their motivations
• Extensibility if tweaking needed?
• Is anybody already using it in the
same way?
What
Who
How
Tooling
Implement
@jonlives
…or make your own Weapons
• Sometimes, you have to invent
• Legitimate approach
• Many popular workflow tools
started this way
• Be sure you have time / resources
• Clear mission statement is vital
What
Who
How
Tooling
Implement
@jonlives
Implementation
• Have realistic expectations
• Start slowly
• Efficiency-Thoroughness Trade-Off
(ETTO)
• Iterate often
• Learn from failures. They will happen.
• Improve
What
Who
How
Tooling
Implement
@jonlives
Don’t Fear the Code!
@jonlives
Don’t Fear the Code!
• Understanding == Effectiveness
• If you know how it works, you can figure out
why it breaks.
• Research known bugs & limitations
• Be prepared to report or fix issues
@jonlives
It’s OK to try stuff!
@jonlives
http://jonliv.es/book
Discount Code: AUTHD
40% off Print
50% off Digital
@jonlives
Thanks!
Questions?
@jonlives / http://jonliv.es / jon@etsy.com

More Related Content

Viewers also liked

Sap Customer Service In Manufacturing Industry1
Sap Customer Service In Manufacturing Industry1Sap Customer Service In Manufacturing Industry1
Sap Customer Service In Manufacturing Industry1
evil66_in
 
Workflow Part1 1
Workflow Part1 1Workflow Part1 1
Workflow Part1 1
evil66_in
 
Film Production Workflow
Film Production WorkflowFilm Production Workflow
Film Production Workflow
John Grace
 

Viewers also liked (11)

Optimising Your Front End Workflow With Symfony, Twig, Bower and Gulp
Optimising Your Front End Workflow With Symfony, Twig, Bower and GulpOptimising Your Front End Workflow With Symfony, Twig, Bower and Gulp
Optimising Your Front End Workflow With Symfony, Twig, Bower and Gulp
 
Sap Customer Service In Manufacturing Industry1
Sap Customer Service In Manufacturing Industry1Sap Customer Service In Manufacturing Industry1
Sap Customer Service In Manufacturing Industry1
 
Modern Web Application Development Workflow - EclipseCon US 2014
Modern Web Application Development Workflow - EclipseCon US 2014Modern Web Application Development Workflow - EclipseCon US 2014
Modern Web Application Development Workflow - EclipseCon US 2014
 
Workflow Part1 1
Workflow Part1 1Workflow Part1 1
Workflow Part1 1
 
How to create a workflow
How to create a workflow How to create a workflow
How to create a workflow
 
Film Production Workflow
Film Production WorkflowFilm Production Workflow
Film Production Workflow
 
Responsive Design Workflow
Responsive Design WorkflowResponsive Design Workflow
Responsive Design Workflow
 
Business workflow
Business workflowBusiness workflow
Business workflow
 
Responsive Design Workflow: Mobilism 2012
Responsive Design Workflow: Mobilism 2012Responsive Design Workflow: Mobilism 2012
Responsive Design Workflow: Mobilism 2012
 
10 Best Practices for Workflow Design
10 Best Practices for Workflow Design10 Best Practices for Workflow Design
10 Best Practices for Workflow Design
 
The Six Highest Performing B2B Blog Post Formats
The Six Highest Performing B2B Blog Post FormatsThe Six Highest Performing B2B Blog Post Formats
The Six Highest Performing B2B Blog Post Formats
 

More from Jon Cowie (7)

Building a Healthy Work Life Balance
Building a Healthy Work Life BalanceBuilding a Healthy Work Life Balance
Building a Healthy Work Life Balance
 
Cheffing Etsy - Do too many cooks spoil the soup?
Cheffing Etsy - Do too many cooks spoil the soup?Cheffing Etsy - Do too many cooks spoil the soup?
Cheffing Etsy - Do too many cooks spoil the soup?
 
Chef at Etsy
Chef at EtsyChef at Etsy
Chef at Etsy
 
Customizing Chef for Fun and Profit
Customizing Chef for Fun and ProfitCustomizing Chef for Fun and Profit
Customizing Chef for Fun and Profit
 
Custom Live Media Spinning
Custom Live Media SpinningCustom Live Media Spinning
Custom Live Media Spinning
 
Bring the Noise
Bring the NoiseBring the Noise
Bring the Noise
 
Michelin Starred Cooking with Chef
Michelin Starred Cooking with ChefMichelin Starred Cooking with Chef
Michelin Starred Cooking with Chef
 

Recently uploaded

Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire business
panagenda
 

Recently uploaded (20)

Artificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyArtificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : Uncertainty
 
HTML Injection Attacks: Impact and Mitigation Strategies
HTML Injection Attacks: Impact and Mitigation StrategiesHTML Injection Attacks: Impact and Mitigation Strategies
HTML Injection Attacks: Impact and Mitigation Strategies
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a Fresher
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
 
Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of Terraform
 
GenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdfGenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdf
 
Top 5 Benefits OF Using Muvi Live Paywall For Live Streams
Top 5 Benefits OF Using Muvi Live Paywall For Live StreamsTop 5 Benefits OF Using Muvi Live Paywall For Live Streams
Top 5 Benefits OF Using Muvi Live Paywall For Live Streams
 
Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CVReal Time Object Detection Using Open CV
Real Time Object Detection Using Open CV
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivity
 
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire business
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodPolkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
 

Workflow Design - Extracting Signal from the Noise

  • 3.
  • 4. @jonlives There is no correct way to use Chef. workflow_design
  • 5. @jonlives …but I just want to
 get stuff done!
  • 7. @jonlives “I am not smart enough to build an ontology … that can encompass all the variations in infrastructure. Nobody is, the world moves too fast.”
  • 10. @jonlives Beware Argument Culture! Kate Heddleston: bit.ly/argument-culture
  • 11. @jonlives [An] argument culture urges us to approach the world—and the people in it—in an adversarial frame of mind Deborah Tannen “The Argument Culture”
  • 12. @jonlives Argument Culture • Useful in “regulated” environments like law • Engineering is not one of those environments • Weed out weak logic, keep strong ideas • Everybody is on one side or the other • We attack their position and defend our own • We can win or lose arguments—just like battles
  • 13. @jonlives Argument Culture - Effects • Emotional interactions • Winning becomes paramount • The loud dominate • People are afraid to speak • Best practice == repeating the loudest arguments • Sucks for diversity in cultures and orgs
  • 14. @jonlives What a Workflow is… workflow noun ( also work-flow) /ˈwɜːkfləʊ/ the way that a particular type of work is organised, or the order of the stages in a particular work process Cambridge Business English Dictionary
  • 15. @jonlives What a Workflow is not… • “The Chef Way” • “We need to use X tool” • “We need to be more DevOps” • “We need our process to be more like Y” • “Z in Chef is bad. Never do Z.”
  • 16. @jonlives A workflow is the key to solving a problem.
  • 17. @jonlives There is no correct way to use Chef…
  • 18. @jonlives There are only lessons learned by others in the process of solving their specific problems.
  • 20. @jonlives Case Studies • Anonymized • Companies of varying sizes • First, a quick summary • Then we look at their motivations • Finally we look at their solutions
  • 21. @jonlives Case Study #1 - Summary • Small internet video company • Small Ops team • EC2 based infrastructure • Semi-immutable infrastructure • Packer used to build AMI containers • Chef run on instances to correct config & service status • Previously required rolling a new AMI
  • 22. @jonlives Case Study #1 - Motivation • They’re trying to make it as easy to get started as possible • Chat or comments in PRs since everybody is remote • They aren't interested in letting some third party change stuff unexpectedly • No auto-deploying master - they had an accidental push
  • 23. @jonlives Case Study #1 - Solution • Cookbooks live in chef repo • Dependencies in Berksfile • “Pull request” development model • Merge to master & Jenkins runs foodcritic & rubocop • Merge into “jenkins” branch, triggers upload to server
  • 24. @jonlives Case Study #2 - Summary • One project team inside extremely large company • On-premise cloudstack infrastructure • VMs created, then bootstrapped with Chef • Dev, QA, Staging, Prod environments • Legacy cookbooks maintained alongside new • 1 workflow for new cookbooks, one for legacy
  • 25. @jonlives Case Study #2 - Motivation • Too easy to make an innocuous change that broke several features without knowing about it • Desire to catch syntax errors or undeclared attributes • Complete test coverage with minitest, kitchen-ci for easier PR validation, and local cookbook development
  • 26. @jonlives Case Study #2 - Solution • 1 monolithic project cookbook • Add dependencies to Berksfile & “berks install” • Create recipes & write tests • “kitchen converge” until it works • Push to git & chef server • Test in dev, then on to prod
  • 27. @jonlives Case Study #3 - Summary • Mid-sized online marketplace • Mainly on-premise infrastructure • Servers often long-lived & not immutable • Large number of Dev & Ops Chef users • One main environment
  • 28. @jonlives Case Study #3 - Motivation • Many Chefs • Many small changes by often inexperienced users • Historical cookbooks make using community cookbooks difficult & time consuming • App deployed using separate deploy tool • Continuous delivery in “DNA”
  • 29. @jonlives Case Study #3 - Solution • Cookbooks live in monolithic repository • Roles == attribs, environments == constraints • Tooling geared for efficiency & iteration vs testing • Testing done locally with chef-zero & why-run • …or in prod with whitelists • Versions always pinned in prod environment
  • 30. @jonlives Case Study #4 - Summary • Mid-sized ecommerce service provider • Mainly on-premise infrastructure • Multiple product-based teams • Multiple environments to support those teams
  • 31. @jonlives Case Study #4 - Motivation • Teams based around the Products they build and run • Different opinions & requirements for workflow • Most effort was spent on new greenfield projects • Trying to avoid “veneering tech debt” • Chef was new to most people • Pressure to produce visible & demonstrable results
  • 32. @jonlives Case Study #4 - Solution • 85% of cookbooks in monolithic repo • Start with community cookbooks • Wrap as needed • Team or Product specific environments • Roles used to set permissions etc • Optional cookbook pinning
  • 33. @jonlives So, how do we create a Workflow?
  • 34. @jonlives Workflow Design • What problem are you solving? • Who are you solving it for? • How does your ideal solution look? • Choose your Tooling • Implement your workflow
  • 35. @jonlives What Problem are you Solving? • Write down a simple problem statement • “I want to automate app deploys” • “I want to automate server builds” • “I want us to test our cookbooks more” • Break that down into simple pieces What Who How Tooling Implement
  • 36. @jonlives Who are you solving it for? • Understand your stakeholders • Understand your business priorities • What do *they* care about most? • How often will they work with your solution? • Conway’s law What Who How Tooling Implement
  • 37. @jonlives Conway’s Law “Organizations which design systems ... are constrained to produce designs which are copies of the communication structures of these organizations” Melvin Conway, 1968
  • 38. @jonlives How does your ideal solution look? • Have an ideal “end goal” in mind • Agree with stakeholders • You won’t get there in one go • But you’ll know what you’re working towards What Who How Tooling Implement
  • 39. @jonlives Choose your Weapons! • Pick candidate tools • Probe strengths and weaknesses • Understand their motivations • Extensibility if tweaking needed? • Is anybody already using it in the same way? What Who How Tooling Implement
  • 40. @jonlives …or make your own Weapons • Sometimes, you have to invent • Legitimate approach • Many popular workflow tools started this way • Be sure you have time / resources • Clear mission statement is vital What Who How Tooling Implement
  • 41. @jonlives Implementation • Have realistic expectations • Start slowly • Efficiency-Thoroughness Trade-Off (ETTO) • Iterate often • Learn from failures. They will happen. • Improve What Who How Tooling Implement
  • 43. @jonlives Don’t Fear the Code! • Understanding == Effectiveness • If you know how it works, you can figure out why it breaks. • Research known bugs & limitations • Be prepared to report or fix issues