getting more-chefs-in-the-kitchen

71
GETTING MORE CHEFS IN THE KITCHEN Developing Infrastructure as a Team

Upload: andrew-gross

Post on 19-Jan-2015

1.265 views

Category:

Documents


0 download

DESCRIPTION

 

TRANSCRIPT

Page 1: Getting more-chefs-in-the-kitchen

GETTING MORE CHEFS IN THE KITCHENDeveloping Infrastructure as a Team

Page 2: Getting more-chefs-in-the-kitchen

WHO AM I?Andrew Gross

Developer at Yipit.com@awgross

Github

Page 3: Getting more-chefs-in-the-kitchen

WHO IS YIPIT?New York City

24 Employees

Codes15 "Core" Developers

1 Operations Only Developer (me)

Everyone

Page 4: Getting more-chefs-in-the-kitchen

WHAT DO WE DO?

Page 5: Getting more-chefs-in-the-kitchen

DAILY DEAL AGGREGATION

Page 6: Getting more-chefs-in-the-kitchen
Page 7: Getting more-chefs-in-the-kitchen

E-COMMERCE DEAL AGGREGATION

Page 8: Getting more-chefs-in-the-kitchen

INVESTOR REPORTS

Page 9: Getting more-chefs-in-the-kitchen

THE TECHNICAL CHALLENGES

Data Aggregation and DiscoveryFully Customized Emails at Scale

Image ProcessingPersonalization

AIGeolocation

Page 10: Getting more-chefs-in-the-kitchen

PROBLEM SOLVING TOOLSPython

CRuby

Javascript

DjangoFlask

TornadoChefAWS

SendGrid

Page 11: Getting more-chefs-in-the-kitchen

CHEF STACKLOCAL

Berkshelf Vagrant Chef-Solo MinitestRspec

Page 12: Getting more-chefs-in-the-kitchen

CHEF STACKPRODUCTION

Chef-Client Hosted Chef AWSChef 10.18.2 Chef 11

Page 13: Getting more-chefs-in-the-kitchen

DEVELOPMENT STYLECookbook Development

Master Chef Repo Git Repo Per Cookbook Application Cookbooks Library Cookbooks

"Gangam Style"

Page 14: Getting more-chefs-in-the-kitchen

WHAT DO WE WANT INCHEF?

Page 15: Getting more-chefs-in-the-kitchen

DEVELOPERSDEVELOPERSDEVELOPERS

Page 16: Getting more-chefs-in-the-kitchen

WHY DO WE WANT MORE DEVS IN CHEF?

Page 17: Getting more-chefs-in-the-kitchen

FOR DEVELOPERS

Page 18: Getting more-chefs-in-the-kitchen

Go beyond  localhost

Insight into: Resiliency

Distributed ComputingAutomationMonitoring

State Transitions

Be a true full stack developer

Page 19: Getting more-chefs-in-the-kitchen

FOR OPERATIONS

Page 20: Getting more-chefs-in-the-kitchen

Development rigor TestingCI / CDCode Review Versioning Dependency Management

Sneakily reduce my own workload

Page 21: Getting more-chefs-in-the-kitchen

WHAT'S STOPPINGDEVELOPERS?

Page 22: Getting more-chefs-in-the-kitchen
Page 23: Getting more-chefs-in-the-kitchen
Page 24: Getting more-chefs-in-the-kitchen
Page 25: Getting more-chefs-in-the-kitchen
Page 26: Getting more-chefs-in-the-kitchen

NEW PATTERNS

Page 27: Getting more-chefs-in-the-kitchen

SOLUTIONS

Page 28: Getting more-chefs-in-the-kitchen

LOWER THE LEARNING CURVE

Page 29: Getting more-chefs-in-the-kitchen

SIMPLE INSTALL WIKI

Page 30: Getting more-chefs-in-the-kitchen

TRIM THE VOCABULARY

Page 31: Getting more-chefs-in-the-kitchen

Focus on basic parts of cookbooks

RecipesTemplatesAttributes

Hide the rest

Page 32: Getting more-chefs-in-the-kitchen

FRIENDLY SHELL WRAPPERS

Page 33: Getting more-chefs-in-the-kitchen
Page 34: Getting more-chefs-in-the-kitchen
Page 35: Getting more-chefs-in-the-kitchen

USE A FAMILIARCOMMAND WRAPPER

( Make, rake, fab )

Page 36: Getting more-chefs-in-the-kitchen
Page 37: Getting more-chefs-in-the-kitchen

USE FAMILIAR SYNTAX

Page 38: Getting more-chefs-in-the-kitchen

Javanode .my_cookbook.my_attribute

Rubynode[:my_cookbook][:my_attribute]

Pythonnode['my_cookbook']['my_attribute']

Page 39: Getting more-chefs-in-the-kitchen

PROVIDE HIGH LEVEL API'S

Page 40: Getting more-chefs-in-the-kitchen
Page 41: Getting more-chefs-in-the-kitchen

BE OPINIONATEDMake decisions for them

...because they don't know

(they can change it once they do)

Page 42: Getting more-chefs-in-the-kitchen

SANE DEFAULTS

Page 43: Getting more-chefs-in-the-kitchen

YIPIT_BASELINEEvery Machinesshc̀hef­client̀ aaS.bash_profile

Page 44: Getting more-chefs-in-the-kitchen

YIPIT_WEBNginx Version baked in

Devs don't care what version

They just want a working webserver

Page 45: Getting more-chefs-in-the-kitchen

STYLE GUIDELINES

Page 46: Getting more-chefs-in-the-kitchen

Force via Commit Hooks

Page 47: Getting more-chefs-in-the-kitchen

LEAN RECIPES

Page 48: Getting more-chefs-in-the-kitchen

Chef DSL

Attributes

Library Calls

Page 49: Getting more-chefs-in-the-kitchen

PUT LOGIC IN LIBRARIES

Page 50: Getting more-chefs-in-the-kitchen

Easier to Test

Faster to Test

Easier to Reuse

Page 51: Getting more-chefs-in-the-kitchen

DIRTY SECRET OF PROGRAMMING INCOMING

Page 52: Getting more-chefs-in-the-kitchen

DEVELOPERS WILL CHEATGive them something good to cheat from

Page 53: Getting more-chefs-in-the-kitchen

Good

Page 54: Getting more-chefs-in-the-kitchen

Not So Good

Page 55: Getting more-chefs-in-the-kitchen

COMMUNITY COOKBOOKS

Page 56: Getting more-chefs-in-the-kitchen

Use them for 'low-level' tasks

Developers should be interacting with org. specific cookbooks

Page 57: Getting more-chefs-in-the-kitchen

ROLES

Page 58: Getting more-chefs-in-the-kitchen

SIMPLENo (few) Attributes

Short Runlists

Reduce Complexity

Fewer Places to Check for Errors

Page 59: Getting more-chefs-in-the-kitchen

ENVIRONMENTS

Page 60: Getting more-chefs-in-the-kitchen

Lock Cookbook Versions

Some static attributes

Versioned via Git (w/ Knife Spork)

Page 61: Getting more-chefs-in-the-kitchen

DATABAGS

Page 62: Getting more-chefs-in-the-kitchen

Endpoint Mappings

Package / Library Versions

Volatile Infrastructure Data

Page 63: Getting more-chefs-in-the-kitchen

TESTING

Page 64: Getting more-chefs-in-the-kitchen

Require Tests for Logic

RSpecsimplecovMinitest Handler

Logic is anything not Chef DSL

Page 65: Getting more-chefs-in-the-kitchen

CODE REVIEW

Page 66: Getting more-chefs-in-the-kitchen

USE ITGerrit

PhabricatorGithub

Page 67: Getting more-chefs-in-the-kitchen

COMFORT ALLOWS INVESTIGATION

Page 68: Getting more-chefs-in-the-kitchen

ADVANCTED TOPICSHandlersSearchDynamicConfigurationLWRPs

Page 69: Getting more-chefs-in-the-kitchen

RESULTS

Page 70: Getting more-chefs-in-the-kitchen

'Self-Managed' Services

Easier Service Deployment

Page 71: Getting more-chefs-in-the-kitchen

The Prestige

(AMInator as a Chef Handler)