89025069 mike-krieger-instagram-at-the-airbnb-tech-talk-on-scaling-instagram

185
Scaling Instagram AirBnB Tech Talk 2012 Mike Krieger Instagram

Post on 21-Oct-2014

389 views

Category:

Technology


0 download

DESCRIPTION

 

TRANSCRIPT

Page 1: 89025069 mike-krieger-instagram-at-the-airbnb-tech-talk-on-scaling-instagram

Scaling InstagramAirBnB Tech Talk 2012

Mike KriegerInstagram

Page 2: 89025069 mike-krieger-instagram-at-the-airbnb-tech-talk-on-scaling-instagram

me

- Co-founder, Instagram

- Previously: UX & Front-end@ Meebo

- Stanford HCI BS/MS

- @mikeyk on everything

Page 3: 89025069 mike-krieger-instagram-at-the-airbnb-tech-talk-on-scaling-instagram
Page 4: 89025069 mike-krieger-instagram-at-the-airbnb-tech-talk-on-scaling-instagram
Page 5: 89025069 mike-krieger-instagram-at-the-airbnb-tech-talk-on-scaling-instagram
Page 6: 89025069 mike-krieger-instagram-at-the-airbnb-tech-talk-on-scaling-instagram

communicating and sharing in the real world

Page 7: 89025069 mike-krieger-instagram-at-the-airbnb-tech-talk-on-scaling-instagram

30+ million users in less than 2 years

Page 8: 89025069 mike-krieger-instagram-at-the-airbnb-tech-talk-on-scaling-instagram

the story of how we scaled it

Page 9: 89025069 mike-krieger-instagram-at-the-airbnb-tech-talk-on-scaling-instagram

a brief tangent

Page 10: 89025069 mike-krieger-instagram-at-the-airbnb-tech-talk-on-scaling-instagram

the beginning

Page 11: 89025069 mike-krieger-instagram-at-the-airbnb-tech-talk-on-scaling-instagram

Text

Page 12: 89025069 mike-krieger-instagram-at-the-airbnb-tech-talk-on-scaling-instagram

2 product guys

Page 13: 89025069 mike-krieger-instagram-at-the-airbnb-tech-talk-on-scaling-instagram

no real back-end experience

Page 14: 89025069 mike-krieger-instagram-at-the-airbnb-tech-talk-on-scaling-instagram

analytics & python @ meebo

Page 15: 89025069 mike-krieger-instagram-at-the-airbnb-tech-talk-on-scaling-instagram

CouchDB

Page 16: 89025069 mike-krieger-instagram-at-the-airbnb-tech-talk-on-scaling-instagram

CrimeDesk SF

Page 17: 89025069 mike-krieger-instagram-at-the-airbnb-tech-talk-on-scaling-instagram
Page 18: 89025069 mike-krieger-instagram-at-the-airbnb-tech-talk-on-scaling-instagram

let’s get hacking

Page 19: 89025069 mike-krieger-instagram-at-the-airbnb-tech-talk-on-scaling-instagram

good components in place early on

Page 20: 89025069 mike-krieger-instagram-at-the-airbnb-tech-talk-on-scaling-instagram

...but were hosted on a single machine

somewhere in LA

Page 21: 89025069 mike-krieger-instagram-at-the-airbnb-tech-talk-on-scaling-instagram
Page 22: 89025069 mike-krieger-instagram-at-the-airbnb-tech-talk-on-scaling-instagram

less powerful than my MacBook Pro

Page 23: 89025069 mike-krieger-instagram-at-the-airbnb-tech-talk-on-scaling-instagram

okay, we launched.now what?

Page 24: 89025069 mike-krieger-instagram-at-the-airbnb-tech-talk-on-scaling-instagram

25k signups in the first day

Page 25: 89025069 mike-krieger-instagram-at-the-airbnb-tech-talk-on-scaling-instagram

everything is on fire!

Page 26: 89025069 mike-krieger-instagram-at-the-airbnb-tech-talk-on-scaling-instagram

best & worst day of our lives so far

Page 27: 89025069 mike-krieger-instagram-at-the-airbnb-tech-talk-on-scaling-instagram

load was through the roof

Page 28: 89025069 mike-krieger-instagram-at-the-airbnb-tech-talk-on-scaling-instagram

first culprit?

Page 29: 89025069 mike-krieger-instagram-at-the-airbnb-tech-talk-on-scaling-instagram
Page 30: 89025069 mike-krieger-instagram-at-the-airbnb-tech-talk-on-scaling-instagram

favicon.ico

Page 31: 89025069 mike-krieger-instagram-at-the-airbnb-tech-talk-on-scaling-instagram

404-ing on Django, causing tons of errors

Page 32: 89025069 mike-krieger-instagram-at-the-airbnb-tech-talk-on-scaling-instagram

lesson #1: don’t forget your favicon

Page 33: 89025069 mike-krieger-instagram-at-the-airbnb-tech-talk-on-scaling-instagram

real lesson #1: most of your initial scaling

problems won’t be glamorous

Page 34: 89025069 mike-krieger-instagram-at-the-airbnb-tech-talk-on-scaling-instagram

favicon

Page 35: 89025069 mike-krieger-instagram-at-the-airbnb-tech-talk-on-scaling-instagram

ulimit -n

Page 36: 89025069 mike-krieger-instagram-at-the-airbnb-tech-talk-on-scaling-instagram

memcached -t 4

Page 37: 89025069 mike-krieger-instagram-at-the-airbnb-tech-talk-on-scaling-instagram

prefork/postfork

Page 38: 89025069 mike-krieger-instagram-at-the-airbnb-tech-talk-on-scaling-instagram

friday rolls around

Page 39: 89025069 mike-krieger-instagram-at-the-airbnb-tech-talk-on-scaling-instagram

not slowing down

Page 40: 89025069 mike-krieger-instagram-at-the-airbnb-tech-talk-on-scaling-instagram

let’s move to EC2.

Page 41: 89025069 mike-krieger-instagram-at-the-airbnb-tech-talk-on-scaling-instagram
Page 42: 89025069 mike-krieger-instagram-at-the-airbnb-tech-talk-on-scaling-instagram
Page 43: 89025069 mike-krieger-instagram-at-the-airbnb-tech-talk-on-scaling-instagram

scaling = replacing all components of a car

while driving it at 100mph

Page 44: 89025069 mike-krieger-instagram-at-the-airbnb-tech-talk-on-scaling-instagram

since...

Page 45: 89025069 mike-krieger-instagram-at-the-airbnb-tech-talk-on-scaling-instagram

“"canonical [architecture] of an early stage startup

in this era."(HighScalability.com)

Page 46: 89025069 mike-krieger-instagram-at-the-airbnb-tech-talk-on-scaling-instagram

Nginx & Redis & Postgres & Django.

Page 47: 89025069 mike-krieger-instagram-at-the-airbnb-tech-talk-on-scaling-instagram

Nginx & HAProxy & Redis & Memcached &Postgres & Gearman &Django.

Page 48: 89025069 mike-krieger-instagram-at-the-airbnb-tech-talk-on-scaling-instagram

24h Ops

Page 49: 89025069 mike-krieger-instagram-at-the-airbnb-tech-talk-on-scaling-instagram
Page 50: 89025069 mike-krieger-instagram-at-the-airbnb-tech-talk-on-scaling-instagram
Page 51: 89025069 mike-krieger-instagram-at-the-airbnb-tech-talk-on-scaling-instagram

our philosophy

Page 52: 89025069 mike-krieger-instagram-at-the-airbnb-tech-talk-on-scaling-instagram

1 simplicity

Page 53: 89025069 mike-krieger-instagram-at-the-airbnb-tech-talk-on-scaling-instagram

2 optimize for minimal operational

burden

Page 54: 89025069 mike-krieger-instagram-at-the-airbnb-tech-talk-on-scaling-instagram

3 instrument everything

Page 55: 89025069 mike-krieger-instagram-at-the-airbnb-tech-talk-on-scaling-instagram

walkthrough:1 scaling the database2 choosing technology3 staying nimble4 scaling for android

Page 56: 89025069 mike-krieger-instagram-at-the-airbnb-tech-talk-on-scaling-instagram

1 scaling the db

Page 57: 89025069 mike-krieger-instagram-at-the-airbnb-tech-talk-on-scaling-instagram

early days

Page 58: 89025069 mike-krieger-instagram-at-the-airbnb-tech-talk-on-scaling-instagram

django ORM, postgresql

Page 59: 89025069 mike-krieger-instagram-at-the-airbnb-tech-talk-on-scaling-instagram

why pg? postgis.

Page 60: 89025069 mike-krieger-instagram-at-the-airbnb-tech-talk-on-scaling-instagram

moved db to its own machine

Page 61: 89025069 mike-krieger-instagram-at-the-airbnb-tech-talk-on-scaling-instagram

but photos kept growing and growing...

Page 62: 89025069 mike-krieger-instagram-at-the-airbnb-tech-talk-on-scaling-instagram

...and only 68GB of RAM on biggest machine in EC2

Page 63: 89025069 mike-krieger-instagram-at-the-airbnb-tech-talk-on-scaling-instagram

so what now?

Page 64: 89025069 mike-krieger-instagram-at-the-airbnb-tech-talk-on-scaling-instagram

vertical partitioning

Page 65: 89025069 mike-krieger-instagram-at-the-airbnb-tech-talk-on-scaling-instagram

django db routers make it pretty easy

Page 66: 89025069 mike-krieger-instagram-at-the-airbnb-tech-talk-on-scaling-instagram

def db_for_read(self, model): if app_label == 'photos': return 'photodb'

Page 67: 89025069 mike-krieger-instagram-at-the-airbnb-tech-talk-on-scaling-instagram

...once you untangle all your foreign key

relationships

Page 68: 89025069 mike-krieger-instagram-at-the-airbnb-tech-talk-on-scaling-instagram

a few months later...

Page 69: 89025069 mike-krieger-instagram-at-the-airbnb-tech-talk-on-scaling-instagram

photosdb > 60GB

Page 70: 89025069 mike-krieger-instagram-at-the-airbnb-tech-talk-on-scaling-instagram

what now?

Page 71: 89025069 mike-krieger-instagram-at-the-airbnb-tech-talk-on-scaling-instagram

horizontal partitioning!

Page 72: 89025069 mike-krieger-instagram-at-the-airbnb-tech-talk-on-scaling-instagram

aka: sharding

Page 73: 89025069 mike-krieger-instagram-at-the-airbnb-tech-talk-on-scaling-instagram

“surely we’ll have hired someone experienced before we actually need

to shard”

Page 74: 89025069 mike-krieger-instagram-at-the-airbnb-tech-talk-on-scaling-instagram

you don’t get to choose when scaling challenges

come up

Page 75: 89025069 mike-krieger-instagram-at-the-airbnb-tech-talk-on-scaling-instagram

evaluated solutions

Page 76: 89025069 mike-krieger-instagram-at-the-airbnb-tech-talk-on-scaling-instagram

at the time, none were up to task of being our

primary DB

Page 77: 89025069 mike-krieger-instagram-at-the-airbnb-tech-talk-on-scaling-instagram

did in Postgres itself

Page 78: 89025069 mike-krieger-instagram-at-the-airbnb-tech-talk-on-scaling-instagram

what’s painful about sharding?

Page 79: 89025069 mike-krieger-instagram-at-the-airbnb-tech-talk-on-scaling-instagram

1 data retrieval

Page 80: 89025069 mike-krieger-instagram-at-the-airbnb-tech-talk-on-scaling-instagram

hard to know what your primary access patterns will be w/out any usage

Page 81: 89025069 mike-krieger-instagram-at-the-airbnb-tech-talk-on-scaling-instagram

in most cases, user ID

Page 82: 89025069 mike-krieger-instagram-at-the-airbnb-tech-talk-on-scaling-instagram

2 what happens if one of your shards

gets too big?

Page 83: 89025069 mike-krieger-instagram-at-the-airbnb-tech-talk-on-scaling-instagram

in range-based schemes (like MongoDB), you split

Page 84: 89025069 mike-krieger-instagram-at-the-airbnb-tech-talk-on-scaling-instagram

A-H: shard0I-Z: shard1

Page 85: 89025069 mike-krieger-instagram-at-the-airbnb-tech-talk-on-scaling-instagram

A-D: shard0E-H: shard2I-P: shard1Q-Z: shard2

Page 86: 89025069 mike-krieger-instagram-at-the-airbnb-tech-talk-on-scaling-instagram

downsides (especially on EC2): disk IO

Page 87: 89025069 mike-krieger-instagram-at-the-airbnb-tech-talk-on-scaling-instagram

instead, we pre-split

Page 88: 89025069 mike-krieger-instagram-at-the-airbnb-tech-talk-on-scaling-instagram

many many many (thousands) of logical

shards

Page 89: 89025069 mike-krieger-instagram-at-the-airbnb-tech-talk-on-scaling-instagram

that map to fewer physical ones

Page 90: 89025069 mike-krieger-instagram-at-the-airbnb-tech-talk-on-scaling-instagram

// 8 logical shards on 2 machines

user_id % 8 = logical shard

logical shards -> physical shard map

{ 0: A, 1: A, 2: A, 3: A, 4: B, 5: B, 6: B, 7: B}

Page 91: 89025069 mike-krieger-instagram-at-the-airbnb-tech-talk-on-scaling-instagram

// 8 logical shards on 2 4 machines

user_id % 8 = logical shard

logical shards -> physical shard map

{ 0: A, 1: A, 2: C, 3: C, 4: B, 5: B, 6: D, 7: D}

Page 92: 89025069 mike-krieger-instagram-at-the-airbnb-tech-talk-on-scaling-instagram

little known but awesome PG feature: schemas

Page 93: 89025069 mike-krieger-instagram-at-the-airbnb-tech-talk-on-scaling-instagram

not “columns” schema

Page 94: 89025069 mike-krieger-instagram-at-the-airbnb-tech-talk-on-scaling-instagram

- database: - schema: - table: - columns

Page 95: 89025069 mike-krieger-instagram-at-the-airbnb-tech-talk-on-scaling-instagram

machineA: shard0 photos_by_user shard1 photos_by_user shard2 photos_by_user shard3 photos_by_user

Page 96: 89025069 mike-krieger-instagram-at-the-airbnb-tech-talk-on-scaling-instagram

machineA: shard0 photos_by_user shard1 photos_by_user shard2 photos_by_user shard3 photos_by_user

machineA’: shard0 photos_by_user shard1 photos_by_user shard2 photos_by_user shard3 photos_by_user

Page 97: 89025069 mike-krieger-instagram-at-the-airbnb-tech-talk-on-scaling-instagram

machineA: shard0 photos_by_user shard1 photos_by_user shard2 photos_by_user shard3 photos_by_user

machineC: shard0 photos_by_user shard1 photos_by_user shard2 photos_by_user shard3 photos_by_user

Page 98: 89025069 mike-krieger-instagram-at-the-airbnb-tech-talk-on-scaling-instagram

can do this as long as you have more logical shards than physical

ones

Page 99: 89025069 mike-krieger-instagram-at-the-airbnb-tech-talk-on-scaling-instagram

lesson: take tech/tools you know and try first to adapt them into a simple

solution

Page 100: 89025069 mike-krieger-instagram-at-the-airbnb-tech-talk-on-scaling-instagram

2 which tools where?

Page 101: 89025069 mike-krieger-instagram-at-the-airbnb-tech-talk-on-scaling-instagram

where to cache / otherwise denormalize

data

Page 102: 89025069 mike-krieger-instagram-at-the-airbnb-tech-talk-on-scaling-instagram

we <3 redis

Page 103: 89025069 mike-krieger-instagram-at-the-airbnb-tech-talk-on-scaling-instagram

what happens when a user posts a photo?

Page 104: 89025069 mike-krieger-instagram-at-the-airbnb-tech-talk-on-scaling-instagram

1 user uploads photo with (optional) caption

and location

Page 105: 89025069 mike-krieger-instagram-at-the-airbnb-tech-talk-on-scaling-instagram

2 synchronous write to the media database for

that user

Page 106: 89025069 mike-krieger-instagram-at-the-airbnb-tech-talk-on-scaling-instagram

3 queues!

Page 107: 89025069 mike-krieger-instagram-at-the-airbnb-tech-talk-on-scaling-instagram

3a if geotagged, async worker POSTs to Solr

Page 108: 89025069 mike-krieger-instagram-at-the-airbnb-tech-talk-on-scaling-instagram

3b follower delivery

Page 109: 89025069 mike-krieger-instagram-at-the-airbnb-tech-talk-on-scaling-instagram

can’t have every user who loads her timeline

look up all their followers and then their photos

Page 110: 89025069 mike-krieger-instagram-at-the-airbnb-tech-talk-on-scaling-instagram

instead, everyone gets their own list in Redis

Page 111: 89025069 mike-krieger-instagram-at-the-airbnb-tech-talk-on-scaling-instagram

media ID is pushed onto a list for every person

who’s following this user

Page 112: 89025069 mike-krieger-instagram-at-the-airbnb-tech-talk-on-scaling-instagram

Redis is awesome for this; rapid insert, rapid

subsets

Page 113: 89025069 mike-krieger-instagram-at-the-airbnb-tech-talk-on-scaling-instagram

when time to render a feed, we take small # of IDs, go look up info in

memcached

Page 114: 89025069 mike-krieger-instagram-at-the-airbnb-tech-talk-on-scaling-instagram

Redis is great for...

Page 115: 89025069 mike-krieger-instagram-at-the-airbnb-tech-talk-on-scaling-instagram

data structures that are relatively bounded

Page 116: 89025069 mike-krieger-instagram-at-the-airbnb-tech-talk-on-scaling-instagram

(don’t tie yourself to a solution where your in-

memory DB is your main data store)

Page 117: 89025069 mike-krieger-instagram-at-the-airbnb-tech-talk-on-scaling-instagram

caching complex objects where you want to more

than GET

Page 118: 89025069 mike-krieger-instagram-at-the-airbnb-tech-talk-on-scaling-instagram

ex: counting, sub-ranges, testing membership

Page 119: 89025069 mike-krieger-instagram-at-the-airbnb-tech-talk-on-scaling-instagram

especially when Taylor Swift posts live from the

CMAs

Page 120: 89025069 mike-krieger-instagram-at-the-airbnb-tech-talk-on-scaling-instagram

follow graph

Page 121: 89025069 mike-krieger-instagram-at-the-airbnb-tech-talk-on-scaling-instagram

v1: simple DB table(source_id, target_id,

status)

Page 122: 89025069 mike-krieger-instagram-at-the-airbnb-tech-talk-on-scaling-instagram

who do I follow?who follows me?

do I follow X?does X follow me?

Page 123: 89025069 mike-krieger-instagram-at-the-airbnb-tech-talk-on-scaling-instagram

DB was busy, so we started storing parallel

version in Redis

Page 124: 89025069 mike-krieger-instagram-at-the-airbnb-tech-talk-on-scaling-instagram

follow_all(300 item list)

Page 125: 89025069 mike-krieger-instagram-at-the-airbnb-tech-talk-on-scaling-instagram

inconsistency

Page 126: 89025069 mike-krieger-instagram-at-the-airbnb-tech-talk-on-scaling-instagram

extra logic

Page 127: 89025069 mike-krieger-instagram-at-the-airbnb-tech-talk-on-scaling-instagram

so much extra logic

Page 128: 89025069 mike-krieger-instagram-at-the-airbnb-tech-talk-on-scaling-instagram

exposing your support team to the idea of cache invalidation

Page 129: 89025069 mike-krieger-instagram-at-the-airbnb-tech-talk-on-scaling-instagram
Page 130: 89025069 mike-krieger-instagram-at-the-airbnb-tech-talk-on-scaling-instagram

redesign took a page from twitter’s book

Page 131: 89025069 mike-krieger-instagram-at-the-airbnb-tech-talk-on-scaling-instagram

PG can handle tens of thousands of requests, very light memcached

caching

Page 132: 89025069 mike-krieger-instagram-at-the-airbnb-tech-talk-on-scaling-instagram

two takeaways

Page 133: 89025069 mike-krieger-instagram-at-the-airbnb-tech-talk-on-scaling-instagram

1 have a versatile complement to your core data storage (like Redis)

Page 134: 89025069 mike-krieger-instagram-at-the-airbnb-tech-talk-on-scaling-instagram

2 try not to have two tools trying to do the

same job

Page 135: 89025069 mike-krieger-instagram-at-the-airbnb-tech-talk-on-scaling-instagram

3 staying nimble

Page 136: 89025069 mike-krieger-instagram-at-the-airbnb-tech-talk-on-scaling-instagram

2010: 2 engineers

Page 137: 89025069 mike-krieger-instagram-at-the-airbnb-tech-talk-on-scaling-instagram

2011: 3 engineers

Page 138: 89025069 mike-krieger-instagram-at-the-airbnb-tech-talk-on-scaling-instagram

2012: 5 engineers

Page 139: 89025069 mike-krieger-instagram-at-the-airbnb-tech-talk-on-scaling-instagram

scarcity -> focus

Page 140: 89025069 mike-krieger-instagram-at-the-airbnb-tech-talk-on-scaling-instagram

engineer solutions that you’re not constantly returning to because

they broke

Page 141: 89025069 mike-krieger-instagram-at-the-airbnb-tech-talk-on-scaling-instagram

1 extensive unit-tests and functional tests

Page 142: 89025069 mike-krieger-instagram-at-the-airbnb-tech-talk-on-scaling-instagram

2 keep it DRY

Page 143: 89025069 mike-krieger-instagram-at-the-airbnb-tech-talk-on-scaling-instagram

3 loose coupling using notifications / signals

Page 144: 89025069 mike-krieger-instagram-at-the-airbnb-tech-talk-on-scaling-instagram

4 do most of our work in Python, drop to C when

necessary

Page 145: 89025069 mike-krieger-instagram-at-the-airbnb-tech-talk-on-scaling-instagram

5 frequent code reviews, pull requests to keep things in the ‘shared

brain’

Page 146: 89025069 mike-krieger-instagram-at-the-airbnb-tech-talk-on-scaling-instagram

6 extensive monitoring

Page 147: 89025069 mike-krieger-instagram-at-the-airbnb-tech-talk-on-scaling-instagram

munin

Page 148: 89025069 mike-krieger-instagram-at-the-airbnb-tech-talk-on-scaling-instagram

statsd

Page 149: 89025069 mike-krieger-instagram-at-the-airbnb-tech-talk-on-scaling-instagram
Page 150: 89025069 mike-krieger-instagram-at-the-airbnb-tech-talk-on-scaling-instagram

“how is the system right now?”

Page 151: 89025069 mike-krieger-instagram-at-the-airbnb-tech-talk-on-scaling-instagram

“how does this compare to historical trends?”

Page 152: 89025069 mike-krieger-instagram-at-the-airbnb-tech-talk-on-scaling-instagram

scaling for android

Page 153: 89025069 mike-krieger-instagram-at-the-airbnb-tech-talk-on-scaling-instagram

1 million new users in 12 hours

Page 154: 89025069 mike-krieger-instagram-at-the-airbnb-tech-talk-on-scaling-instagram

great tools that enable easy read scalability

Page 155: 89025069 mike-krieger-instagram-at-the-airbnb-tech-talk-on-scaling-instagram

redis: slaveof <host> <port>

Page 156: 89025069 mike-krieger-instagram-at-the-airbnb-tech-talk-on-scaling-instagram

our Redis framework assumes 0+ readslaves

Page 157: 89025069 mike-krieger-instagram-at-the-airbnb-tech-talk-on-scaling-instagram

tight iteration loops

Page 158: 89025069 mike-krieger-instagram-at-the-airbnb-tech-talk-on-scaling-instagram

statsd & pgfouine

Page 159: 89025069 mike-krieger-instagram-at-the-airbnb-tech-talk-on-scaling-instagram

know where you can shed load if needed

Page 160: 89025069 mike-krieger-instagram-at-the-airbnb-tech-talk-on-scaling-instagram

(e.g. shorter feeds)

Page 161: 89025069 mike-krieger-instagram-at-the-airbnb-tech-talk-on-scaling-instagram

if you’re tempted to reinvent the wheel...

Page 162: 89025069 mike-krieger-instagram-at-the-airbnb-tech-talk-on-scaling-instagram

don’t.

Page 163: 89025069 mike-krieger-instagram-at-the-airbnb-tech-talk-on-scaling-instagram

“our app servers sometimes kernel panic

under load”

Page 164: 89025069 mike-krieger-instagram-at-the-airbnb-tech-talk-on-scaling-instagram

...

Page 165: 89025069 mike-krieger-instagram-at-the-airbnb-tech-talk-on-scaling-instagram

“what if we write a monitoring daemon...”

Page 166: 89025069 mike-krieger-instagram-at-the-airbnb-tech-talk-on-scaling-instagram

wait! this is exactly what HAProxy is great at

Page 167: 89025069 mike-krieger-instagram-at-the-airbnb-tech-talk-on-scaling-instagram

surround yourself with awesome advisors

Page 168: 89025069 mike-krieger-instagram-at-the-airbnb-tech-talk-on-scaling-instagram

culture of openness around engineering

Page 169: 89025069 mike-krieger-instagram-at-the-airbnb-tech-talk-on-scaling-instagram

give back; e.g. node2dm

Page 170: 89025069 mike-krieger-instagram-at-the-airbnb-tech-talk-on-scaling-instagram

focus on making what you have better

Page 171: 89025069 mike-krieger-instagram-at-the-airbnb-tech-talk-on-scaling-instagram

“fast, beautiful photo sharing”

Page 172: 89025069 mike-krieger-instagram-at-the-airbnb-tech-talk-on-scaling-instagram

“can we make all of our requests 50% the time?”

Page 173: 89025069 mike-krieger-instagram-at-the-airbnb-tech-talk-on-scaling-instagram

staying nimble = remind yourself of what’s

important

Page 174: 89025069 mike-krieger-instagram-at-the-airbnb-tech-talk-on-scaling-instagram

your users around the world don’t care that you

wrote your own DB

Page 175: 89025069 mike-krieger-instagram-at-the-airbnb-tech-talk-on-scaling-instagram

wrapping up

Page 176: 89025069 mike-krieger-instagram-at-the-airbnb-tech-talk-on-scaling-instagram

unprecedented times

Page 177: 89025069 mike-krieger-instagram-at-the-airbnb-tech-talk-on-scaling-instagram

2 backend engineers can scale a system to

30+ million users

Page 178: 89025069 mike-krieger-instagram-at-the-airbnb-tech-talk-on-scaling-instagram

key word = simplicity

Page 179: 89025069 mike-krieger-instagram-at-the-airbnb-tech-talk-on-scaling-instagram

cleanest solution with the fewest moving parts as

possible

Page 180: 89025069 mike-krieger-instagram-at-the-airbnb-tech-talk-on-scaling-instagram

don’t over-optimize or expect to know ahead of time how site will scale

Page 181: 89025069 mike-krieger-instagram-at-the-airbnb-tech-talk-on-scaling-instagram

don’t think “someone else will join & take care

of this”

Page 182: 89025069 mike-krieger-instagram-at-the-airbnb-tech-talk-on-scaling-instagram

will happen sooner than you think; surround yourself with great

advisors

Page 183: 89025069 mike-krieger-instagram-at-the-airbnb-tech-talk-on-scaling-instagram

when adding software to stack: only if you have to, optimizing for operational

simplicity

Page 184: 89025069 mike-krieger-instagram-at-the-airbnb-tech-talk-on-scaling-instagram

few, if any, unsolvable scaling challenges for a

social startup

Page 185: 89025069 mike-krieger-instagram-at-the-airbnb-tech-talk-on-scaling-instagram

have fun