michelin starred cooking with chef
play

Michelin Starred Cooking with Chef Jon Cowie, Etsy.com - PowerPoint PPT Presentation

Michelin Starred Cooking with Chef Jon Cowie, Etsy.com jcowie@etsy.com @jonlives Wednesday, June 27, 12 What? Wednesday, June 27, 12 What? Chef at Etsy Wednesday, June 27, 12 What? Chef at Etsy Familiarity and Understanding


  1. Simplicity • Think of yourself at 3AM! • Please, won’t you think of the new guy? • Minimize the logics! • As few logical steps from start to finish as possible. Wednesday, June 27, 12

  2. Simplicity - Not! Date: Mon Dec 05 2011 23:07:18 GMT+0000 (GMT) Subject: so close to death # Don't install v2 on search or Cent 5.6 nodes -if node[:fqdn] !~ /\b(^(preprod-)?search[0-9]{2}|ny4dev\.etsy\.com|^(preprod-)? giftsweb[0-9]{2}|^db(shard|spare|data)[0-9]{2}|^qa-web01|^devsearch[0-9]{2}|^nagios01| ^webnest[0-9]{2}|^prodking[0-9]{2}|^sandboxweb[0-9]{2}|^virt((0[5-9])|(1[0-9]))| ^msysmgr[0-9]{2}|^msysmta[0-9]{2}|^dbconvo[0-9]{2}|^dbshowcase01|atlasweb[0-9]{2}| devnagios[0-9]{2}|cimaster02|worker[0-9]{2}|^ganglia[0-9]{2}|^imgcache[0-9]{2}| imgconvert[0-9]{2}|^imgwriter[0-9]{2}|dev-img02|^datacache04|^graphite01|^graphite03| ^webutil03|^webutil04|^statsd01|^maintweb[0-9]{2}|^(dev-|preprod-)?convosearch[0-9]{2}| deployinator[0-9]{2}|^wpadmin01|^(preprod-)?dbtasks[0-9]{2})\b/ and node.role?("Web56") == false and node.role?("Preprodweb56") == false and node.role?("Princess53") == false +if node[:fqdn] !~ /\b(^(preprod-)?search[0-9]{2}|ny4dev\.etsy\.com|^(preprod-)? giftsweb[0-9]{2}|^db(shard|spare|data)[0-9]{2}|^qa-web01|^devsearch[0-9]{2}|^nagios01| ^webnest[0-9]{2}|^prodking[0-9]{2}|^sandboxweb[0-9]{2}|^virt((0[5-9])|(1[0-9]))| ^msysmgr[0-9]{2}|^msysmta[0-9]{2}|^dbconvo[0-9]{2}|^dbshowcase01|atlasweb[0-9]{2}| devnagios[0-9]{2}|cimaster02|worker[0-9]{2}|^ganglia[0-9]{2}|^imgcache[0-9]{2}| imgconvert[0-9]{2}|^imgwriter[0-9]{2}|dev-img02|^datacache04|^graphite01|^graphite03| ^webutil03|^webutil04|^statsd01|^maintweb[0-9]{2}|^(dev-|preprod-)?convosearch[0-9]{2}| deployinator[0-9]{2}|^wpadmin01|^(preprod-)?dbtasks[0-9]{2})\b/ and node.role?("Web56") == false and node.role?("Preprodweb56") == false and node.role?("Princess53") == false and node.role?("Auth") == false Wednesday, June 27, 12

  3. Simplicity - Better! if node.chef_environment == "libmemcached_upgrade" package "libmemcached" do version "1.0.4-1" action :install end <snip> else package "libmemcached" do version "0.53-1.1" action :install end <snip> end Wednesday, June 27, 12

  4. Simplicity - Complexity Wednesday, June 27, 12

  5. Simplicity - Complexity • Sometimes you need complex behaviour Wednesday, June 27, 12

  6. Simplicity - Complexity • Sometimes you need complex behaviour • Don’t fight it, try to abstract it. Wednesday, June 27, 12

  7. Simplicity - Complexity • Sometimes you need complex behaviour • Don’t fight it, try to abstract it. • Case in point: Syslog-ng refactor Wednesday, June 27, 12

  8. Case Study: Syslog-ng Wednesday, June 27, 12

  9. Case Study: Syslog-ng • 36 recipes Wednesday, June 27, 12

  10. Case Study: Syslog-ng • 36 recipes • 30 versions of syslog-ng.conf Wednesday, June 27, 12

  11. Case Study: Syslog-ng • 36 recipes • 30 versions of syslog-ng.conf • 27 manually configured files in /etc/syslog- ng.d on central server Wednesday, June 27, 12

  12. Case Study: Syslog-ng • 36 recipes • 30 versions of syslog-ng.conf • 27 manually configured files in /etc/syslog- ng.d on central server • Edge cases and exceptions galore Wednesday, June 27, 12

  13. Case Study: Syslog-ng Wednesday, June 27, 12

  14. Case Study: Syslog-ng • Down to: Wednesday, June 27, 12

  15. Case Study: Syslog-ng • Down to: • 2 recipes (one client, one server) Wednesday, June 27, 12

  16. Case Study: Syslog-ng • Down to: • 2 recipes (one client, one server) • 2 templates (one for syslog-ng.conf, one for stuff in /etc/syslog-ng.d) Wednesday, June 27, 12

  17. Case Study: Syslog-ng • Down to: • 2 recipes (one client, one server) • 2 templates (one for syslog-ng.conf, one for stuff in /etc/syslog-ng.d) • Attributes in roles Wednesday, June 27, 12

  18. Case Study: Syslog-ng • Down to: • 2 recipes (one client, one server) • 2 templates (one for syslog-ng.conf, one for stuff in /etc/syslog-ng.d) • Attributes in roles • Not open sourced yet, sorry :( Wednesday, June 27, 12

  19. Case Study: Syslog-ng "syslog": { "group": "preprod_web", "items": { "web_apache_access_log": { "source": "/var/log/httpd/access_log", "source_program_override": "APACHEACCESS: ", "destination": "<snip>/access.log", "destination_filters": [ "host('^preprod-web')", "match('APACHEACCESS')" ], "destination_options": [ "template_escape(no)" ] }, } } Wednesday, June 27, 12

  20. Remember, No Panacea! Wednesday, June 27, 12

  21. Remember, No Panacea! • A new package hits the repo. Wednesday, June 27, 12

  22. Remember, No Panacea! • A new package hits the repo. • Are you in control of when it goes out? Wednesday, June 27, 12

  23. Remember, No Panacea! • A new package hits the repo. • Are you in control of when it goes out? • Memcached Outage Wednesday, June 27, 12

  24. Remember, No Panacea! • A new package hits the repo. • Are you in control of when it goes out? • Memcached Outage • Do you know what services are going to restart and when? Wednesday, June 27, 12

  25. Remember, No Panacea! • A new package hits the repo. • Are you in control of when it goes out? • Memcached Outage • Do you know what services are going to restart and when? • Image Service Outage Wednesday, June 27, 12

  26. Standards Wednesday, June 27, 12

  27. Standards • Not going to talk about testing [8]! Wednesday, June 27, 12

  28. Standards • Not going to talk about testing [8]! • But I don’t have time for standards! Wednesday, June 27, 12

  29. Standards - No Time! Wednesday, June 27, 12

  30. Standards - No Time! • I won’t say “Make Time”, but you should... Wednesday, June 27, 12

  31. Standards - No Time! • I won’t say “Make Time”, but you should... • For a quick win, try Foodcritic Wednesday, June 27, 12

  32. Standards - No Time! • I won’t say “Make Time”, but you should... • For a quick win, try Foodcritic • Good out of the box rules Wednesday, June 27, 12

  33. Standards - No Time! • I won’t say “Make Time”, but you should... • For a quick win, try Foodcritic • Good out of the box rules • Jenkins integration in seconds Wednesday, June 27, 12

  34. Standards - No Time! • I won’t say “Make Time”, but you should... • For a quick win, try Foodcritic • Good out of the box rules • Jenkins integration in seconds • Supports custom rules Wednesday, June 27, 12

  35. Standards - No Time! • I won’t say “Make Time”, but you should... • For a quick win, try Foodcritic • Good out of the box rules • Jenkins integration in seconds • Supports custom rules • Plays well with others Wednesday, June 27, 12

  36. Foodcritic Wednesday, June 27, 12

  37. Foodcritic • gem install foodcritic Wednesday, June 27, 12

  38. Foodcritic • gem install foodcritic • foodcritic <cookbook_repo> Wednesday, June 27, 12

  39. Foodcritic • gem install foodcritic • foodcritic <cookbook_repo> • Simple Jenkins job: Wednesday, June 27, 12

  40. Foodcritic • gem install foodcritic • foodcritic <cookbook_repo> • Simple Jenkins job: #!/usr/bin/env rvm-shell 1.9.3 foodcritic -f correctness . Wednesday, June 27, 12

  41. Standards at Etsy Wednesday, June 27, 12

  42. Standards at Etsy • “style” not “correctness”[9] Wednesday, June 27, 12

  43. Standards at Etsy • “style” not “correctness”[9] • ETSY001 - Package or yum_package resource used with :upgrade action Wednesday, June 27, 12

  44. Standards at Etsy • “style” not “correctness”[9] • ETSY001 - Package or yum_package resource used with :upgrade action • ETSY002 - Execute resource used to run git commands Wednesday, June 27, 12

Download Presentation
Download Policy: The content available on the website is offered to you 'AS IS' for your personal information and use only. It cannot be commercialized, licensed, or distributed on other websites without prior consent from the author. To download a presentation, simply click this link. If you encounter any difficulties during the download process, it's possible that the publisher has removed the file from their server.

Recommend


More recommend