airbnb's jack lawson at heroku's waza: dismantling the monorail

56
DISMANTLING THE MONORAIL Jack Lawson ( ) @ajacksified

Upload: heroku

Post on 11-May-2015

571 views

Category:

Technology


3 download

DESCRIPTION

AirBnB's Software Engineer Jack Lawson (@ajacksified) presented at Heroku's Developer Conference #Waza 2013 on "Dismantling the Monorail". Lawson specializes in user interface development at Airbnb, runs the SF Lua meetup group, and enjoys open-source development, building games, writing Mustache templates, and coffee connoisseurism (these interests often coincide.) He lives in San Francisco with his wife and two daughters and can be reached at @ajacksified. For more on Waza visit http://waza.heroku.com/2013. For Waza videos stay tuned at http://blog.heroku.com or visit http://vimeo.com/herokuwaza

TRANSCRIPT

DISMANTLINGTHE

MONORAILJack Lawson ( )@ajacksified

GOALS

IN THEBEGINNING

A TEAM BUILDS AN APP

PRIORITY #1

RAPIDITERATION

SIMPLECONCEPTUAL

MODEL

FAST FEATUREDEVELOPMENT

SINGLE MVCAPPLICATION

LAYERS ARE GREATTHAT'S NOT SARCASM

IT'S EASYfor example

or

then

rails new catkarma

express --sessions --hogan catkarma

cd catkarmagit initgit add .git commit -m 'Intial'heroku creategit push heroku master

KEEP IT ALL INYOUR HEAD

LATER ON

SHIFTINGPRIORITIES

CATKARMA A RIOTIOUS SUCCESS

TIME IS YOUR ENEMY

CHAOS ANDENTROPY

GROWINGINTRODUCESCOMPLEXITY

HIGHER COMMUNICATION

OVERHEADMEETINGS, STANDUPS, &

COORDINATION

BIG PROBLEMSIF TEST SUITEIS LACKING

UPGRADINGBECOMES

HARDRAISE YOUR HAND IF YOU'VE EVER PUT OFF A RAILS 3.2

UPGRADE

ONE-OFFS ANDDUPLICATED

CODE

TO MAINTAIN SPEED

TAKESHORTCUTS

SIMPLECONCEPTUAL

MODEL?

NOT QUITE

COMPLEX ANDFULL OFHACKS

:(

YOU MAY ASK YOURSELF

HOW DID I GETHERE?

"WE WILLREBUILD IT

WHEN WE GETTIME"

RIGHT? ...SOON?

DISMANTLINGTHE

MONORAIL

PRIORITIZEEFFICIENCY

A DIFFERENTCONCEPTUAL

MODELIT'S STILL SIMPLE

SERVICES

NOT APARTICULARLY

NEW IDEAYOU'RE LIKELY FAMILIAR WITH "THE INTERNET", A

DISTRIBUTED SYSTEM

DISCRETESYSTEMS LEAD

TOSPECIALIZING

SPECIALIZINGLEADS TO

EFFICIENCY

ABSTRACTEDLOGIC LEADS

TO FLEXIBILITYUSING THE RIGHT TOOL

FOR THE JOB

BEST TECHNOLOGY FORAPPLICATION LOGIC

USER INTERFACEPERSISTENCE

THESE ARE ALMOST NEVER THE SAME ANSWER

REUSABLE APISIMPLEMENT ANDROID,IOS, GOOGLE GLASSES,

KINDLES, GAME CONSOLES,RASPBERRY PIS, DESKTOPS, LAPTOPS,

E-PAPER WRISTWATCHES, 3-D PRINTERS,CHATBOTS, CONSOLE SCRIPTS, PUBLIC APIS...

WITH NO SPECIAL CODE

PROVIDED YOU USE

COMMONPROTOCOLS

LIKE RESTFUL JSON

ADDITIONALCOMPLEXITY

OPPORTUNITY

PARTIALFAILURE

MEANS THE ENTIREAPPLICATION ISN'T

UNAVAILABLE

MULTIPLESYSTEMS AT

ONCEHIGHLIGHTS

COMMUNICATIONINEFFICIENCIES

MORECOMPLEX OPS

ALLOWS SCALINGSPECIFIC SERVICES

SHAREDASSETS

BUNDLE REUSABLELIBRARIES

FASTITERATIONSWHICH IS WHAT WEWANTED ANYWAY

LESSOVERHEAD

MORE EFFICIENTLY USEDSERVERS AND DEVELOPER

TIME

LESSFRUSTRATION

STOP DIGGING THROUGHSQL INJECTED IN VIEW

HELPERS

GETTINGTHERE

FEW PEOPLE ARESTARTING FROM

NOTHING

SEPARATEDATA

STRUCTURESINTO

LIBRARIES

DEFINESERVICES

BREAK OUTEXISTING

SERVICES INTOMODULES

DEFINE AN INTERFACE,LIKE JSON OVER REST,

AND REFACTOR

OPTIMIZEFEATURES

INVOLVINGMANY

SERVICESDEFINE A VIEW IN THE

MIDDLE

BREAK OUTSERVICE

MODULESINTO SERVERS

DELETE YOUROLD

MONOLITHICREPOSITORY

MONORAILDISMANTLED