Team Development
     Workflows
Managing Cookbooks, Roles & Databags Across Versions
               Chef Boston Meetup
                  Aug 28th 2012

                   Pete Cheslock
                      Sonian
Caveats & Thoughts
 I’m not advocating the Right™ way to do any one thing
  here.

 This works for us (Sonian) – it may not work for you.
  YMMV

 A good process evolves over time. What we started is
  not where we are today and not where we’ll be in 6
  months.

 Ownership – set it and forget it won’t work here.
Our Problem
 Many different software stacks with separate customer
  SLA’s

 Small changes could have large consequences.
 Many people making changes to branches (inside and
  outside our team).

 High velocity – many hot-fixes – limited testing – Zero
  Tracking.

 Technical Debt (An easy one to blame stuff on)
Stage 1
 Ticket Bankruptcy – Make the move to Jira
 Invest in cleanup of technical debt
   Specifically in our Git Repository
 Split the team into Proactive/Reactive Team
   Decrease distractions
   Increase focus – decrease context switching
 Introduction of myself as the “buffer”
   New Feature Requests
   Hotfixes or Sysadmin type tasks
   Support our Engineering and Support Team
Stage 2
 Deployment Checklists
   Peer reviewed – across departments
   “Follow the checklist”
 Deploy Ownership – Team Based Deploys
 Make our chef runs faster/more efficient.
 Cookbook refactor, invest in knife plugins, LWRP,
  overall quality.

 Monitoring, Metrics, Security
Stage 3
 Build apps to support our technology
 External
   Sensu (https://github.com/sensu) (MIT)
   SCLI (https://github.com/sonian/scli) IBM Smartcloud
    command line tool (MIT)
   Mise En Place (Soon to be released with MIT license)
   Fog (https://github.com/fog) - Contributions to Smartcloud
    and VPC support.

 Internal
   Security
   Automation
Taking Code from Idea to
           Deployment
 Sprint Planning (3 week Dev – 1 week QA)
 Create Jira Story – Prioritize in next sprint unless
  needed now.

 All Chef branches need Jira stories
 Commit, Merge, Push, Test
 All Jira stories (and branches) live in QA for regression
  testing

 After QA Approval – merge to master
Development Simplicity

    Dev           QA
                            Master
   (Daily)      (Daily)




                             Cut Branch
Merge        Make Changes
                             (eng-9999)
Production Complexity
                Cherry-Picks Forward




release/2012-   release/2012-
                                            master
    07-01           08-01


 base/2012-       base/2012-           Rebase & Squash Commit
                                       Branches Backwards
   07-01            08-01


                  Cut Branch
                   eng-9999
Why?
 Can’t have untested changes make it out to production.
  Small changes could have unintended consequences.

 Sets of chef cookbooks and application code (often tied
  together) were tested at the same time.

 Important to get the processes in place prior to
  investment in automation.

 Technical Debt (The scapegoat)
Questions?

 Contact me:
   Email: pete.cheslock@sonian.net
   Twitter: @petecheslock

Chef boston-workflows

  • 1.
    Team Development Workflows Managing Cookbooks, Roles & Databags Across Versions Chef Boston Meetup Aug 28th 2012 Pete Cheslock Sonian
  • 2.
    Caveats & Thoughts I’m not advocating the Right™ way to do any one thing here.  This works for us (Sonian) – it may not work for you. YMMV  A good process evolves over time. What we started is not where we are today and not where we’ll be in 6 months.  Ownership – set it and forget it won’t work here.
  • 3.
    Our Problem  Manydifferent software stacks with separate customer SLA’s  Small changes could have large consequences.  Many people making changes to branches (inside and outside our team).  High velocity – many hot-fixes – limited testing – Zero Tracking.  Technical Debt (An easy one to blame stuff on)
  • 4.
    Stage 1  TicketBankruptcy – Make the move to Jira  Invest in cleanup of technical debt  Specifically in our Git Repository  Split the team into Proactive/Reactive Team  Decrease distractions  Increase focus – decrease context switching  Introduction of myself as the “buffer”  New Feature Requests  Hotfixes or Sysadmin type tasks  Support our Engineering and Support Team
  • 5.
    Stage 2  DeploymentChecklists  Peer reviewed – across departments  “Follow the checklist”  Deploy Ownership – Team Based Deploys  Make our chef runs faster/more efficient.  Cookbook refactor, invest in knife plugins, LWRP, overall quality.  Monitoring, Metrics, Security
  • 6.
    Stage 3  Buildapps to support our technology  External  Sensu (https://github.com/sensu) (MIT)  SCLI (https://github.com/sonian/scli) IBM Smartcloud command line tool (MIT)  Mise En Place (Soon to be released with MIT license)  Fog (https://github.com/fog) - Contributions to Smartcloud and VPC support.  Internal  Security  Automation
  • 8.
    Taking Code fromIdea to Deployment  Sprint Planning (3 week Dev – 1 week QA)  Create Jira Story – Prioritize in next sprint unless needed now.  All Chef branches need Jira stories  Commit, Merge, Push, Test  All Jira stories (and branches) live in QA for regression testing  After QA Approval – merge to master
  • 9.
    Development Simplicity Dev QA Master (Daily) (Daily) Cut Branch Merge Make Changes (eng-9999)
  • 10.
    Production Complexity Cherry-Picks Forward release/2012- release/2012- master 07-01 08-01 base/2012- base/2012- Rebase & Squash Commit Branches Backwards 07-01 08-01 Cut Branch eng-9999
  • 11.
    Why?  Can’t haveuntested changes make it out to production. Small changes could have unintended consequences.  Sets of chef cookbooks and application code (often tied together) were tested at the same time.  Important to get the processes in place prior to investment in automation.  Technical Debt (The scapegoat)
  • 14.
    Questions?  Contact me:  Email: pete.cheslock@sonian.net  Twitter: @petecheslock