77
Patrick Debois goto; conference Copenhagen 2011 Wednesday 11 May 2011

Damn Abstraction : Development vs Operational Efficiency

Embed Size (px)

DESCRIPTION

Abstraction, Abstraction, Abstraction.The presentation I wanted to give at GotoCon Copenhagen but some bugs decided otherwise.

Citation preview

Page 1: Damn Abstraction : Development vs Operational Efficiency

Patrick Debois

goto;conference

Copenhagen2011

Wednesday 11 May 2011

Page 2: Damn Abstraction : Development vs Operational Efficiency

http://jedi.be/blog monitoring

http://devopsdays.orgWednesday 11 May 2011

Page 3: Damn Abstraction : Development vs Operational Efficiency

Project TaskWe need performance!

1 million writes /5 seconds

Wednesday 11 May 2011

Page 4: Damn Abstraction : Development vs Operational Efficiency

Wednesday 11 May 2011

Page 5: Damn Abstraction : Development vs Operational Efficiency

“All problems in computer science can be solved by another level of abstraction”

Wednesday 11 May 2011

Page 6: Damn Abstraction : Development vs Operational Efficiency

“All problems in computer science can be solved by another level of indirection”

Butler Lampson

http://zedshaw.com/essays/indirection_is_not_abstraction.html

Wednesday 11 May 2011

Page 7: Damn Abstraction : Development vs Operational Efficiency

We love Ruby & Rails

Wednesday 11 May 2011

Page 8: Damn Abstraction : Development vs Operational Efficiency

Performance Testing

JmeterApache

BenchmarkTsung

Rely much on OS tuningLimitations (tcp sessions, max fd, sockets,...)

Wednesday 11 May 2011

Page 9: Damn Abstraction : Development vs Operational Efficiency

Rails Application

Rails

Rack

Ruby (threading)

OS (threading)

Active Record

NgnixApache, Passenger

Thin Unicorn,Rainbows

Event Machine

Threads, Fibers, PIL

FS, Network tuningWednesday 11 May 2011

Page 10: Damn Abstraction : Development vs Operational Efficiency

Scaling

Web ServerApache/Nginx

MultiInstance

Loadbalancer

Database Pool

Wednesday 11 May 2011

Page 11: Damn Abstraction : Development vs Operational Efficiency

“All problems in computer science can be solved by another level of abstraction”

Wednesday 11 May 2011

Page 12: Damn Abstraction : Development vs Operational Efficiency

“... except for the problem of too many layers of indirection”

David Wheeler

Wednesday 11 May 2011

Page 13: Damn Abstraction : Development vs Operational Efficiency

Magic?

Wednesday 11 May 2011

Page 16: Damn Abstraction : Development vs Operational Efficiency

Brew install

curl -LsSf https://github.com/mxcl/homebrew/tarball/master | sudo /usr/bin/tar xvz -C/usr/local --strip 1

Wednesday 11 May 2011

Page 17: Damn Abstraction : Development vs Operational Efficiency

https://github.com/sstephenson/gosh

gosh: Security theater for piped shell scripts

Wednesday 11 May 2011

Page 18: Damn Abstraction : Development vs Operational Efficiency

Select Database?

Wednesday 11 May 2011

Page 20: Damn Abstraction : Development vs Operational Efficiency

Dependency Mgmt

Capistrano

Warbler

BundlerMaven

Cargo Plugin

Fat Jar

Wednesday 11 May 2011

Page 21: Damn Abstraction : Development vs Operational Efficiency

“All problems in computer science can be solved by another level of abstraction”

Wednesday 11 May 2011

Page 22: Damn Abstraction : Development vs Operational Efficiency

“But that usually create another problem”

David Wheeler

http://www.dmst.aueb.gr/dds/pubs/inbook/beautiful_code/html/Spi07g.html

Wednesday 11 May 2011

Page 23: Damn Abstraction : Development vs Operational Efficiency

“Every abstraction layer adds (a little) overhead

to the CPU

Wednesday 11 May 2011

Page 24: Damn Abstraction : Development vs Operational Efficiency

but also to the poor human who has to read

that code

http://blog.billyang.me/2009/10/dark-side-of-abstraction.html

Dark Side of Abstraction

Wednesday 11 May 2011

Page 25: Damn Abstraction : Development vs Operational Efficiency

VS

+++++++ +

Improvements

Wednesday 11 May 2011

Page 26: Damn Abstraction : Development vs Operational Efficiency

Runtime Abstraction

Wednesday 11 May 2011

Page 27: Damn Abstraction : Development vs Operational Efficiency

Database Abstraction

Wednesday 11 May 2011

Page 28: Damn Abstraction : Development vs Operational Efficiency

Do compilers, Languages, and frames

make dumber programmers?

http://stackoverflow.com/questions/428571/do-smarter-compilers-languages-and-frameworks-make-dumber-programmers

Wednesday 11 May 2011

Page 29: Damn Abstraction : Development vs Operational Efficiency

They don't make good programmers dumber, they

make them more productive;

http://stackoverflow.com/questions/428571/do-smarter-compilers-languages-and-frameworks-make-dumber-programmers

Wednesday 11 May 2011

Page 30: Damn Abstraction : Development vs Operational Efficiency

But they make dumber people be able to program

and think they are great programmer

http://stackoverflow.com/questions/428571/do-smarter-compilers-languages-and-frameworks-make-dumber-programmers

Wednesday 11 May 2011

Page 31: Damn Abstraction : Development vs Operational Efficiency

Sysadmin Land

Wednesday 11 May 2011

Page 32: Damn Abstraction : Development vs Operational Efficiency

Hardware Abstraction(OS/Drivers)

Wednesday 11 May 2011

Page 33: Damn Abstraction : Development vs Operational Efficiency

Disk Abstraction

Wednesday 11 May 2011

Page 34: Damn Abstraction : Development vs Operational Efficiency

Filesystem Abstraction

VFAT

NTFS

Iscsi NAS

ext2

reiserfs

Wednesday 11 May 2011

Page 35: Damn Abstraction : Development vs Operational Efficiency

VM/Storage Abstraction

http://libvirt.org/

Xen

Qemu

LXC

OpenVZ

Usermode Linux

Virtualbox

Vmware

Wednesday 11 May 2011

Page 36: Damn Abstraction : Development vs Operational Efficiency

Disk Images

Wednesday 11 May 2011

Page 37: Damn Abstraction : Development vs Operational Efficiency

Cloud Abstraction

https://github.com/geemus/fog https://github.com/jclouds/jclouds

Wednesday 11 May 2011

Page 38: Damn Abstraction : Development vs Operational Efficiency

Abstraction Fusion

Wednesday 11 May 2011

Page 39: Damn Abstraction : Development vs Operational Efficiency

Config ManagementAbstraction

Wednesday 11 May 2011

Page 40: Damn Abstraction : Development vs Operational Efficiency

A model is an abstraction ... for a purpose

http://www.cs.princeton.edu/courses/archive/spr98/cs333/lectures/19/sld002.htm

Wednesday 11 May 2011

Page 41: Damn Abstraction : Development vs Operational Efficiency

http://docs.puppetlabs.com/guides/cloud_pack_getting_started.html

Puppet Cloudpack

https://github.com/opscode/knife-ec2

Knife ec2 Bootstrap

If all you have is a hammer

http://www.amusei.com/images/hammer-in-the-head1.jpg

Wednesday 11 May 2011

Page 42: Damn Abstraction : Development vs Operational Efficiency

Orchestration

http://docs.puppetlabs.com/mcollective/ http://rundeck.org/

Wednesday 11 May 2011

Page 43: Damn Abstraction : Development vs Operational Efficiency

http://www.iinteractive.com/yapc/slides.htmlThank you @jtimberman

Wednesday 11 May 2011

Page 45: Damn Abstraction : Development vs Operational Efficiency

Packages Boundaries

gem

npm

jar

deb

rpm

tgzEffing Package Management

Wednesday 11 May 2011

Page 46: Damn Abstraction : Development vs Operational Efficiency

Source/Binary

wget ...tar -xzvf ...

cd ..../configure

makemake install

package install

External Download => Local RepoCompiling => Do it only once

Wednesday 11 May 2011

Page 47: Damn Abstraction : Development vs Operational Efficiency

Idempotent

Wednesday 11 May 2011

Page 48: Damn Abstraction : Development vs Operational Efficiency

“Abstraction is

selective ignorance”

Andrew König

http://en.wikipedia.org/wiki/Andrew_Koenig_(programmer)

Wednesday 11 May 2011

Page 49: Damn Abstraction : Development vs Operational Efficiency

IAAS

Wednesday 11 May 2011

Page 50: Damn Abstraction : Development vs Operational Efficiency

PAAS

Google App Engine

Wednesday 11 May 2011

Page 51: Damn Abstraction : Development vs Operational Efficiency

Cloud Stacks

Wednesday 11 May 2011

Page 52: Damn Abstraction : Development vs Operational Efficiency

Cloud API Standardisation

Wednesday 11 May 2011

Page 53: Damn Abstraction : Development vs Operational Efficiency

Result is suboptimization

http://www.michaelnygard.com/blog/2004/04/too_much_abstraction.html

Wednesday 11 May 2011

Page 54: Damn Abstraction : Development vs Operational Efficiency

Too much abstraction(1)

Do the Simplest Thing that could possibly work

TDD

http://c2.com/cgi/wiki?TooMuchAbstraction

Wednesday 11 May 2011

Page 55: Damn Abstraction : Development vs Operational Efficiency

Too much abstraction(2)

Abstraction should be based on Practical Experience

Premature Optimization

http://c2.com/cgi/wiki?TooMuchAbstraction

Wednesday 11 May 2011

Page 56: Damn Abstraction : Development vs Operational Efficiency

Abstraction is deciding which aspects of a

problem to consider and which ones to ignore

http://www.cs.princeton.edu/courses/archive/spr98/cs333/lectures/19/sld002.htm

Wednesday 11 May 2011

Page 57: Damn Abstraction : Development vs Operational Efficiency

Sound a lot likeManagement

(without domain knowledge?)

Wednesday 11 May 2011

Page 58: Damn Abstraction : Development vs Operational Efficiency

Organization Abstractions

Wednesday 11 May 2011

Page 59: Damn Abstraction : Development vs Operational Efficiency

Something’s Fishy

http://weblog.raganwald.com/2007/12/somethings-fishy.html

Wednesday 11 May 2011

Page 60: Damn Abstraction : Development vs Operational Efficiency

Devops

http://mdzlog.alcor.net/2010/06/08/devops-and-cloud/

Wednesday 11 May 2011

Page 61: Damn Abstraction : Development vs Operational Efficiency

Devops

http://rationalautomation.wordpress.com/2010/02/04/dogs-and-cats-living-together/

Wednesday 11 May 2011

Page 62: Damn Abstraction : Development vs Operational Efficiency

Devops

http://www.rajiv.com/blog/2009/03/17/technology-department/

Wednesday 11 May 2011

Page 63: Damn Abstraction : Development vs Operational Efficiency

Generalist vs Specialist

Wednesday 11 May 2011

Page 64: Damn Abstraction : Development vs Operational Efficiency

Consider Specialization First

... And Generalization Second

Wednesday 11 May 2011

Page 65: Damn Abstraction : Development vs Operational Efficiency

http://www.noop.nl/2010/06/t-shaped-people.html

They have a principal skill that describes

the vertical leg of the T

T-shaped People

But they are so empathetic that they can branch out into other skills, such as anthropology, and do them as well.

Wednesday 11 May 2011

Page 66: Damn Abstraction : Development vs Operational Efficiency

http://images.icanhascheezburger.com/completestore/2008/9/11/128656414813278195.jpg

Wednesday 11 May 2011

Page 67: Damn Abstraction : Development vs Operational Efficiency

Wednesday 11 May 2011

Page 68: Damn Abstraction : Development vs Operational Efficiency

NOOPS = Human Abstraction?

http://rlv.zcache.com/i_love_noops_t_shirt-p235186382091096346trlf_400.jpg

Wednesday 11 May 2011

Page 69: Damn Abstraction : Development vs Operational Efficiency

abstraction is selective ignorance

http://www.cs.princeton.edu/courses/archive/spr98/cs333/lectures/19/sld002.htm

Wednesday 11 May 2011

Page 70: Damn Abstraction : Development vs Operational Efficiency

http://blog.rightscale.com/2011/04/25/amazon-ec2-outage-summary-and-lessons-learned/

Amazon.com’s real problem isn’t the outage, it’s the communication

http://aws.amazon.com/message/65648/

Wednesday 11 May 2011

Page 71: Damn Abstraction : Development vs Operational Efficiency

The  Chaos  Monkey’s  job  is  to  randomly  kill  instances  and  services  within  our  architecture

If  we  aren’t  constantly  tes0ng  our  ability  to  succeed  despite  failure,  then  it  isn’t  likely  to  work  when  it  ma;ers  most    –  in  the  event  of  an  unexpected  outage.

http://www.codinghorror.com/blog/2011/04/working-with-the-chaos-monkey.html

Wednesday 11 May 2011

Page 72: Damn Abstraction : Development vs Operational Efficiency

Chaos Monkey

https://github.com/simonmunro/ChaosMonkey

https://github.com/mattbasta/chaos-chimp

__ w c(..)o ( \__(-) __) /\ ( /(_)___) w /| | \ m m

Wednesday 11 May 2011

Page 73: Damn Abstraction : Development vs Operational Efficiency

All non-trivial abstractions, to some

degree, are leaky

http://www.joelonsoftware.com/articles/LeakyAbstractions.html

Wednesday 11 May 2011

Page 74: Damn Abstraction : Development vs Operational Efficiency

When you drive a car, thinking about howthe engine works is

a distraction

http://www.cs.princeton.edu/courses/archive/spr98/cs333/lectures/19/sld002.htm

Wednesday 11 May 2011

Page 75: Damn Abstraction : Development vs Operational Efficiency

When you repair the car, thinking about

how the engine works is essential.

http://www.cs.princeton.edu/courses/archive/spr98/cs333/lectures/19/sld002.htm

Wednesday 11 May 2011

Page 76: Damn Abstraction : Development vs Operational Efficiency

Questions?

Wednesday 11 May 2011

Page 77: Damn Abstraction : Development vs Operational Efficiency

Programming is a human activity;

forget that and all is lost

Meta-advicehttp://www.cs.princeton.edu/courses/archive/spr99/cs333/pdf/21.pdf

Wednesday 11 May 2011