132
Idea to Delivery app development in 2012 Adam Wiggins Waza, January 2012 Friday, January 13, 2012

Waza keynote: Idea to Delivery

Embed Size (px)

Citation preview

Idea to Delivery

app development in 2012

Adam WigginsWaza, January 2012

Friday, January 13, 2012

Friday, January 13, 2012

Technique

Friday, January 13, 2012

Friday, January 13, 2012

Small sharp tools

Friday, January 13, 2012

Murray Gell-Mann

Richard Feynman

Friday, January 13, 2012

The Feynman Problem-Solving Algorithm:“

Friday, January 13, 2012

The Feynman Problem-Solving Algorithm:(1) Write down the problem.“

Friday, January 13, 2012

The Feynman Problem-Solving Algorithm:(1) Write down the problem.(2) Think very hard.

“Friday, January 13, 2012

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

Where can welook for new techniques?

Friday, January 13, 2012

Zoom out

Friday, January 13, 2012

Idea to delivery

Friday, January 13, 2012

Friday, January 13, 2012

Idea Implementation Deployment Delivery

Friday, January 13, 2012

Idea Implementation Deployment Delivery

Programmer

Friday, January 13, 2012

programmervs

app developer

Friday, January 13, 2012

Breadth of responsibility

Friday, January 13, 2012

Idea Implementation Deployment Delivery

Programmer

Friday, January 13, 2012

Idea Implementation Deployment Delivery

App developer

Friday, January 13, 2012

4 techniquesfrom the last decade

6 techniquesof the emerging future

Friday, January 13, 2012

4 techniques

from 2000 - 2010

Friday, January 13, 2012

1. Agile

Friday, January 13, 2012

1. Agile

2. Software-as-a-service

Friday, January 13, 2012

1. Agile

2. Software-as-a-service

3. Web frameworks

Friday, January 13, 2012

1. Agile

2. Software-as-a-service

3. Web frameworks

Friday, January 13, 2012

1. Agile

2. Software-as-a-service

3. Frameworks

Friday, January 13, 2012

1. Agile

2. Software-as-a-service

3. Frameworks

4. Virtualization

Friday, January 13, 2012

1. Agile

2. Software-as-a-service

3. Frameworks

4. Virtualization Cloud

Friday, January 13, 2012

1. Agile

2. Software-as-a-service

3. Frameworks

4. Cloud

Friday, January 13, 2012

Idea Implementation Deployment Delivery

Friday, January 13, 2012

Idea Implementation Deployment Delivery

Agile Framework Cloud SaaS

Friday, January 13, 2012

Idea Implementation Deployment Delivery

Agile Framework Cloud SaaS

Friday, January 13, 2012

Idea Implementation Deployment Delivery

Scrum Rails Heroku URL

Friday, January 13, 2012

Agile+ Frameworks

+ Cloud+ SaaS

Friday, January 13, 2012

The 2010s way for app development

Friday, January 13, 2012

6 techniques

for 2012 and beyond

Friday, January 13, 2012

Technique 1

Friday, January 13, 2012

Technique 1

Deploy from day 1

Friday, January 13, 2012

Idea Implementation Deployment Delivery

Early development

Friday, January 13, 2012

Idea Implementation Deployment Delivery

Early development

Friday, January 13, 2012

Idea Implementation Deployment Delivery

Early development

Friday, January 13, 2012

http://ruby.railstutorial.org/ruby-on-rails-tutorial-book

Friday, January 13, 2012

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

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

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

Technique 1

Deploy from day 1

Friday, January 13, 2012

Technique 2

Friday, January 13, 2012

Technique 2

Continuous deployment

Friday, January 13, 2012

Deploy schedules

Friday, January 13, 2012

Deploy schedules

Friday, January 13, 2012

Deploy on demand

Friday, January 13, 2012

Friday, January 13, 2012

Is continous deployment real?

Friday, January 13, 2012

1.1 million deploys to Heroku in the

last month

Friday, January 13, 2012

Technique 2

Continuous deployment

Friday, January 13, 2012

Technique 3

Friday, January 13, 2012

Technique 3

Feature flags

Friday, January 13, 2012

http://code.flickr.com/blog/2009/12/02/flipping-out/

Friday, January 13, 2012

Idea Implementation Deployment Delivery

Friday, January 13, 2012

Idea Implementation Deployment Delivery

Decouple these

Friday, January 13, 2012

Friday, January 13, 2012

Deployed, but inactive

Friday, January 13, 2012

Still the active path for all users

Friday, January 13, 2012

Activated for some users

Friday, January 13, 2012

Activated forall users

Friday, January 13, 2012

Dead code, now safe to remove

Friday, January 13, 2012

Agradual &

granularmethod for delivery

Friday, January 13, 2012

Technique 3

Feature flags

Friday, January 13, 2012

{sidebar}

Friday, January 13, 2012

Friday, January 13, 2012

Friday, January 13, 2012

We see

frictionacross

1000s of apps

Friday, January 13, 2012

Trends

Friday, January 13, 2012

Principles

Friday, January 13, 2012

{continue!}

Friday, January 13, 2012

Technique 4

Friday, January 13, 2012

Technique 4

Dev/prod parity

Friday, January 13, 2012

Development:SQLite

Production:PostgreSQL

Friday, January 13, 2012

Development:SQLite

Production:PostgreSQL

Uh oh.

Friday, January 13, 2012

Development and production as

similar as possible

Friday, January 13, 2012

Can we go further?

Friday, January 13, 2012

Virtual machines

Friday, January 13, 2012

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

Technique 4

Dev/prod parity

Friday, January 13, 2012

Technique 5

Friday, January 13, 2012

Technique 5

Stay close to production

Friday, January 13, 2012

Developers do deploys

Friday, January 13, 2012

Helmuth von Moltke the Elder

Friday, January 13, 2012

No battle plan survives first contact with the enemy.

”“

- von Moltke

Friday, January 13, 2012

No code survives contact with production load.

”“

Friday, January 13, 2012

Your code in development is theoretical

Friday, January 13, 2012

Your code in production is reality

Friday, January 13, 2012

Everyone has a plan 'till they get punched in the mouth.

”“

- Mike Tyson

Friday, January 13, 2012

Real user behaviorwill punch you in the mouth

Friday, January 13, 2012

Friday, January 13, 2012

Sword-in-the-bag bug

Friday, January 13, 2012

Searching for the answer in my code

Friday, January 13, 2012

Found the answer by observing production

Friday, January 13, 2012

Friday, January 13, 2012

Technique 5

Stay close to production

Friday, January 13, 2012

Technique 6

Friday, January 13, 2012

Technique 6

Logs as event streams

Friday, January 13, 2012

The pulse of your application

Friday, January 13, 2012

Everything that your app is doing, right now

Friday, January 13, 2012

Everything that your app has done, in the past

Friday, January 13, 2012

Log archival & search tools

Friday, January 13, 2012

Papertrailhttp://addons.heroku.com/papertrail

Friday, January 13, 2012

Friday, January 13, 2012

Logglyhttp://addons.heroku.com/loggly

Friday, January 13, 2012

Friday, January 13, 2012

Ivory-tower thinking

Friday, January 13, 2012

More evidence,less speculation

Friday, January 13, 2012

The evidence is in your logs

Friday, January 13, 2012

Technique 6

Logs as event streams

Friday, January 13, 2012

Recap

Friday, January 13, 2012

Deploy from day 1early and often avoids launch-day headaches

Friday, January 13, 2012

Continuous deployment

deploy on days 2, 3, and n

Friday, January 13, 2012

Feature flags

decoupledeployment & delivery

Friday, January 13, 2012

Dev/prod parity

avoid those little incompatibilities

Friday, January 13, 2012

Stay close to production

reality is production load and real user behavior

Friday, January 13, 2012

Logs as event streams

an evidence-based approach

Friday, January 13, 2012

Call to action

Friday, January 13, 2012

?Are you a

programmeror an

app developer

Friday, January 13, 2012

Come out of our programmer cave

Friday, January 13, 2012

Connect with our code in the wild

Friday, January 13, 2012

Connect with our users

Friday, January 13, 2012

Take responsibility for idea to delivery

Idea Delivery

Friday, January 13, 2012

Fin.

Adam Wiggins@hiroduskhttp://adam.heroku.com/

Friday, January 13, 2012