87
Can’t Handle My Scale @MicheleTitolo

Can't Handle My Scale

Embed Size (px)

DESCRIPTION

Scaling an app means many things. They can be human things, like "how do I stop someone from overwriting my changes to the project.pbxproj, storyboard, or xib?" Or development things, like "how do I manage dependencies?” and “why do I always have to do a 3-way merge?” Or even peripheral things like “what happens to our servers if we get featured?” and “what happens to the app when the servers go down?” This session will cover common scaling problems, and solutions to overcome them.

Citation preview

Page 1: Can't Handle My Scale

Can’t Handle My Scale@MicheleTitolo

Page 2: Can't Handle My Scale
Page 3: Can't Handle My Scale
Page 4: Can't Handle My Scale

Apps

Page 5: Can't Handle My Scale

CODE

Page 6: Can't Handle My Scale

Dozens of sub projects?

Page 7: Can't Handle My Scale

You have a dependency problem

Page 8: Can't Handle My Scale

this doesn’t mean everything has to be shared

Page 9: Can't Handle My Scale

Create internal libraries with care

Page 10: Can't Handle My Scale

version, version, version

Page 11: Can't Handle My Scale

version

Page 12: Can't Handle My Scale

3rd party code

Page 13: Can't Handle My Scale

Be picky

Page 14: Can't Handle My Scale
Page 15: Can't Handle My Scale
Page 16: Can't Handle My Scale

Any code you add, you will need to maintain

Page 17: Can't Handle My Scale

Styleguide

Page 18: Can't Handle My Scale
Page 19: Can't Handle My Scale

Establish your conventions

Page 20: Can't Handle My Scale

Enforce your conventions

Page 21: Can't Handle My Scale

… Profit!

Page 22: Can't Handle My Scale

User Experience

Page 23: Can't Handle My Scale

Users expect apps from the same companies to be similar

Page 24: Can't Handle My Scale
Page 25: Can't Handle My Scale
Page 26: Can't Handle My Scale

Developers

Page 27: Can't Handle My Scale
Page 28: Can't Handle My Scale

Our tools aren’t the best

Page 29: Can't Handle My Scale

Falling back to patching base and 3-way merge... Auto-merging MyApp.xcodeproj/project.pbxproj CONFLICT (content): Merge conflict in MyApp.xcodeproj/project.pbxproj Failed to merge in the changes. Patch failed at 0037 Launch screen images update The copy of the patch that failed is found in: /tmp/git/.git/rebase-apply/patch

Page 30: Can't Handle My Scale
Page 32: Can't Handle My Scale

Communication

Page 33: Can't Handle My Scale
Page 34: Can't Handle My Scale

Identify collision points

Page 35: Can't Handle My Scale

Architecture discussions

Page 36: Can't Handle My Scale

Compartmentalize

Page 37: Can't Handle My Scale

Be aware of (unknown) dependencies

Page 38: Can't Handle My Scale

Management

Page 39: Can't Handle My Scale
Page 40: Can't Handle My Scale

Help or hinderance?

Page 41: Can't Handle My Scale

Our work needs to be structured

Page 42: Can't Handle My Scale

Managers should help

Page 43: Can't Handle My Scale
Page 44: Can't Handle My Scale

If they won’t help, they will hinder

Page 45: Can't Handle My Scale

Users

Page 46: Can't Handle My Scale

Going viral is great

Page 47: Can't Handle My Scale

…but can you handle it?

Page 48: Can't Handle My Scale

0

125

250

375

500

April May June July Untitled 1 Untitled 2 Untitled 3

Time

Page 49: Can't Handle My Scale

0

100

200

300

400

April May June July Untitled 1 Untitled 2 Untitled 3

Time

Page 50: Can't Handle My Scale

Crashes

Page 51: Can't Handle My Scale

The larger your userbase, the more crashes will happen

Page 52: Can't Handle My Scale

Software isn’t perfect

Page 53: Can't Handle My Scale

Goal: limit crashes

Page 54: Can't Handle My Scale

Goal: recover from non-fatal errors

Page 55: Can't Handle My Scale

Goal: TRACK!

Page 56: Can't Handle My Scale

Servers

Page 57: Can't Handle My Scale
Page 58: Can't Handle My Scale
Page 59: Can't Handle My Scale
Page 60: Can't Handle My Scale

If your servers crash…

Page 61: Can't Handle My Scale

…how is that different than offline mode?

Page 62: Can't Handle My Scale

If possible, be ready for heavy traffic

Page 63: Can't Handle My Scale

Be ready for traffic at different times

Page 65: Can't Handle My Scale

Have a plan B

Page 66: Can't Handle My Scale

Services

Page 67: Can't Handle My Scale

Many services charge per user

Page 68: Can't Handle My Scale
Page 69: Can't Handle My Scale

Make sure you can afford a service

Page 70: Can't Handle My Scale

Services also tend to have caps

Page 71: Can't Handle My Scale

0

100

200

300

400

April May June July Untitled 1 Untitled 2 Untitled 3

Time

Page 72: Can't Handle My Scale

Make sure they won’t disappear (or start lying)

Page 73: Can't Handle My Scale

Customer Support

Page 74: Can't Handle My Scale

Expect ~10% of your users to contact you

Page 75: Can't Handle My Scale
Page 76: Can't Handle My Scale

More, if you have in-app feedback

Page 77: Can't Handle My Scale

Users like knowing they are heard

Page 78: Can't Handle My Scale

Someone needs to verify their reported bugs

Page 79: Can't Handle My Scale
Page 80: Can't Handle My Scale

The more obvious the bug, the more you will hear about it

Page 81: Can't Handle My Scale
Page 82: Can't Handle My Scale
Page 83: Can't Handle My Scale

Scale isn’t all bad

Page 84: Can't Handle My Scale

Scale means you’re succeeding

Page 85: Can't Handle My Scale

Scale means you’re having an impact

Page 86: Can't Handle My Scale

These are ultimately good problems to have

Page 87: Can't Handle My Scale

Thanks@MicheleTitolo