Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Millions of Apps - What we've learned

Millions of Apps - What we've learned

Neil Middleton

October 25, 2013
Tweet

More Decks by Neil Middleton

Other Decks in Technology

Transcript

  1. • Can apply to any language • Speeds up deployment

    and scaling • Keeps apps clean • Developed through exposure 12 factor
  2. 12 factor • Codebase
 One codebase tracked in revision control,

    many deploys • Dependencies
 Explicitly declare and isolate dependencies • Config
 Store config in the environment • Backing Services
 Treat backing services as attached resources
  3. 12 factor • Build, Release, Run
 Strictly separate build and

    run stages • Process
 Execute the app as one or more stateless processes • Port Binding
 Export services via port binding • Concurrency
 Scale out via the process model
  4. 12 factor • Disposability
 Maximise robustness with fast startup and

    shutdown • Parity
 Keep environments as similar as possible • Logs
 Treat logs as event streams • Admin Processes
 Run admin/management tasks as one-off processes
  5. • Use Foreman / dotenv • Add to .bashrc •

    Add values directly to the command
  6. • As close to each other as possible • Same

    data-store (PostgreSQL 2.7, Memcached 1.4.15) • Same language versions (Python 3.0) • Real/consistent data
  7. • Living document • Standardised Dev environment • Instructions for

    external dependencies • Instructions for starting processes
 • Had a problem? 
 Put the fix in the README

  8. • Admin tasks should run in an identical environment to

    the code • Admin tasks should be equally isolated • Admin tasks should be source controlled and repeatable.