Page 1
Idea to Delivery
app development in 2012
Adam WigginsWaza, January 2012
Friday, January 13, 2012
Page 2
Friday, January 13, 2012
Page 3
Technique
Friday, January 13, 2012
Page 4
Friday, January 13, 2012
Page 5
Small sharp tools
Friday, January 13, 2012
Page 6
Murray Gell-Mann
Richard Feynman
Friday, January 13, 2012
Page 7
The Feynman Problem-Solving Algorithm:“
Friday, January 13, 2012
Page 8
The Feynman Problem-Solving Algorithm:(1) Write down the problem.“
Friday, January 13, 2012
Page 9
The Feynman Problem-Solving Algorithm:(1) Write down the problem.(2) Think very hard.
“Friday, January 13, 2012
Page 10
The Feynman Problem-Solving Algorithm:(1) Write down the problem.(2) Think very hard.(3) Write down the answer.
“http://quotations.tastefulwords.com/murray-gell-mann/the-feynman-problem-solving-algorithm/”- Murray Gell-Mann
Friday, January 13, 2012
Page 11
Where can welook for new techniques?
Friday, January 13, 2012
Page 12
Zoom out
Friday, January 13, 2012
Page 13
Idea to delivery
Friday, January 13, 2012
Page 14
Friday, January 13, 2012
Page 15
Idea Implementation Deployment Delivery
Friday, January 13, 2012
Page 16
Idea Implementation Deployment Delivery
Programmer
Friday, January 13, 2012
Page 17
programmervs
app developer
Friday, January 13, 2012
Page 18
Breadth of responsibility
Friday, January 13, 2012
Page 19
Idea Implementation Deployment Delivery
Programmer
Friday, January 13, 2012
Page 20
Idea Implementation Deployment Delivery
App developer
Friday, January 13, 2012
Page 21
4 techniquesfrom the last decade
6 techniquesof the emerging future
Friday, January 13, 2012
Page 22
4 techniques
from 2000 - 2010
Friday, January 13, 2012
Page 23
1. Agile
Friday, January 13, 2012
Page 24
1. Agile
2. Software-as-a-service
Friday, January 13, 2012
Page 25
1. Agile
2. Software-as-a-service
3. Web frameworks
Friday, January 13, 2012
Page 26
1. Agile
2. Software-as-a-service
3. Web frameworks
Friday, January 13, 2012
Page 27
1. Agile
2. Software-as-a-service
3. Frameworks
Friday, January 13, 2012
Page 28
1. Agile
2. Software-as-a-service
3. Frameworks
4. Virtualization
Friday, January 13, 2012
Page 29
1. Agile
2. Software-as-a-service
3. Frameworks
4. Virtualization Cloud
Friday, January 13, 2012
Page 30
1. Agile
2. Software-as-a-service
3. Frameworks
4. Cloud
Friday, January 13, 2012
Page 31
Idea Implementation Deployment Delivery
Friday, January 13, 2012
Page 32
Idea Implementation Deployment Delivery
Agile Framework Cloud SaaS
Friday, January 13, 2012
Page 33
Idea Implementation Deployment Delivery
Agile Framework Cloud SaaS
Friday, January 13, 2012
Page 34
Idea Implementation Deployment Delivery
Scrum Rails Heroku URL
Friday, January 13, 2012
Page 35
Agile+ Frameworks
+ Cloud+ SaaS
Friday, January 13, 2012
Page 36
The 2010s way for app development
Friday, January 13, 2012
Page 37
6 techniques
for 2012 and beyond
Friday, January 13, 2012
Page 38
Technique 1
Friday, January 13, 2012
Page 39
Technique 1
Deploy from day 1
Friday, January 13, 2012
Page 40
Idea Implementation Deployment Delivery
Early development
Friday, January 13, 2012
Page 41
Idea Implementation Deployment Delivery
Early development
Friday, January 13, 2012
Page 42
Idea Implementation Deployment Delivery
Early development
Friday, January 13, 2012
Page 43
http://ruby.railstutorial.org/ruby-on-rails-tutorial-book
Friday, January 13, 2012
Page 44
Even at this early stage, we’re already going to deploy our (still-empty) Rails application to production. This step is optional, but deploying early and often allows us to catch any deployment problems early in our development cycle.
“Friday, January 13, 2012
Page 45
The alternative—deploying only after laborious effort sealed away in a development environment—often leads to terrible integration headaches when launch time comes.
”Friday, January 13, 2012
Page 46
The alternative—deploying only after laborious effort sealed away in a development environment—often leads to terrible integration headaches when launch time comes.
”Friday, January 13, 2012
Page 47
Technique 1
Deploy from day 1
Friday, January 13, 2012
Page 48
Technique 2
Friday, January 13, 2012
Page 49
Technique 2
Continuous deployment
Friday, January 13, 2012
Page 50
Deploy schedules
Friday, January 13, 2012
Page 51
Deploy schedules
Friday, January 13, 2012
Page 52
Deploy on demand
Friday, January 13, 2012
Page 53
Friday, January 13, 2012
Page 54
Is continous deployment real?
Friday, January 13, 2012
Page 55
1.1 million deploys to Heroku in the
last month
Friday, January 13, 2012
Page 56
Technique 2
Continuous deployment
Friday, January 13, 2012
Page 57
Technique 3
Friday, January 13, 2012
Page 58
Technique 3
Feature flags
Friday, January 13, 2012
Page 59
http://code.flickr.com/blog/2009/12/02/flipping-out/
Friday, January 13, 2012
Page 60
Idea Implementation Deployment Delivery
Friday, January 13, 2012
Page 61
Idea Implementation Deployment Delivery
Decouple these
Friday, January 13, 2012
Page 62
Friday, January 13, 2012
Page 63
Deployed, but inactive
Friday, January 13, 2012
Page 64
Still the active path for all users
Friday, January 13, 2012
Page 65
Activated for some users
Friday, January 13, 2012
Page 66
Activated forall users
Friday, January 13, 2012
Page 67
Dead code, now safe to remove
Friday, January 13, 2012
Page 68
Agradual &
granularmethod for delivery
Friday, January 13, 2012
Page 69
Technique 3
Feature flags
Friday, January 13, 2012
Page 70
{sidebar}
Friday, January 13, 2012
Page 71
Friday, January 13, 2012
Page 72
Friday, January 13, 2012
Page 73
We see
frictionacross
1000s of apps
Friday, January 13, 2012
Page 74
Trends
Friday, January 13, 2012
Page 75
Principles
Friday, January 13, 2012
Page 76
http://www.12factor.net/
Friday, January 13, 2012
Page 77
{continue!}
Friday, January 13, 2012
Page 78
Technique 4
Friday, January 13, 2012
Page 79
Technique 4
Dev/prod parity
Friday, January 13, 2012
Page 80
Development:SQLite
Production:PostgreSQL
Friday, January 13, 2012
Page 81
Development:SQLite
Production:PostgreSQL
Uh oh.
Friday, January 13, 2012
Page 82
Development and production as
similar as possible
Friday, January 13, 2012
Page 83
http://www.12factor.net/dev-prod-parity
Friday, January 13, 2012
Page 84
Can we go further?
Friday, January 13, 2012
Page 85
Virtual machines
Friday, January 13, 2012
Page 86
http://railscasts.com/episodes/292-virtual-machines-with-vagrant?view=asciicast
http://unfoldthat.com/2011/05/06/using-vagrant-for-your-django-development.html
http://walkah.net/blog/why-vagrant
Friday, January 13, 2012
Page 87
Technique 4
Dev/prod parity
Friday, January 13, 2012
Page 88
Technique 5
Friday, January 13, 2012
Page 89
Technique 5
Stay close to production
Friday, January 13, 2012
Page 90
Developers do deploys
Friday, January 13, 2012
Page 91
Helmuth von Moltke the Elder
Friday, January 13, 2012
Page 92
No battle plan survives first contact with the enemy.
”“
- von Moltke
Friday, January 13, 2012
Page 93
No code survives contact with production load.
”“
Friday, January 13, 2012
Page 94
Your code in development is theoretical
Friday, January 13, 2012
Page 95
Your code in production is reality
Friday, January 13, 2012
Page 96
Everyone has a plan 'till they get punched in the mouth.
”“
- Mike Tyson
Friday, January 13, 2012
Page 97
Real user behaviorwill punch you in the mouth
Friday, January 13, 2012
Page 98
Friday, January 13, 2012
Page 99
Sword-in-the-bag bug
Friday, January 13, 2012
Page 100
Searching for the answer in my code
Friday, January 13, 2012
Page 101
Found the answer by observing production
Friday, January 13, 2012
Page 102
Friday, January 13, 2012
Page 103
Technique 5
Stay close to production
Friday, January 13, 2012
Page 104
Technique 6
Friday, January 13, 2012
Page 105
Technique 6
Logs as event streams
Friday, January 13, 2012
Page 106
The pulse of your application
Friday, January 13, 2012
Page 107
http://www.12factor.net/logs
Friday, January 13, 2012
Page 108
Everything that your app is doing, right now
Friday, January 13, 2012
Page 109
Everything that your app has done, in the past
Friday, January 13, 2012
Page 110
Log archival & search tools
Friday, January 13, 2012
Page 111
Papertrailhttp://addons.heroku.com/papertrail
Friday, January 13, 2012
Page 112
Friday, January 13, 2012
Page 113
Logglyhttp://addons.heroku.com/loggly
Friday, January 13, 2012
Page 114
Friday, January 13, 2012
Page 115
Ivory-tower thinking
Friday, January 13, 2012
Page 116
More evidence,less speculation
Friday, January 13, 2012
Page 117
The evidence is in your logs
Friday, January 13, 2012
Page 118
Technique 6
Logs as event streams
Friday, January 13, 2012
Page 119
Recap
Friday, January 13, 2012
Page 120
Deploy from day 1early and often avoids launch-day headaches
Friday, January 13, 2012
Page 121
Continuous deployment
deploy on days 2, 3, and n
Friday, January 13, 2012
Page 122
Feature flags
decoupledeployment & delivery
Friday, January 13, 2012
Page 123
Dev/prod parity
avoid those little incompatibilities
Friday, January 13, 2012
Page 124
Stay close to production
reality is production load and real user behavior
Friday, January 13, 2012
Page 125
Logs as event streams
an evidence-based approach
Friday, January 13, 2012
Page 126
Call to action
Friday, January 13, 2012
Page 127
?Are you a
programmeror an
app developer
Friday, January 13, 2012
Page 128
Come out of our programmer cave
Friday, January 13, 2012
Page 129
Connect with our code in the wild
Friday, January 13, 2012
Page 130
Connect with our users
Friday, January 13, 2012
Page 131
Take responsibility for idea to delivery
Idea Delivery
Friday, January 13, 2012
Page 132
Fin.
Adam Wiggins@hiroduskhttp://adam.heroku.com/
Friday, January 13, 2012