59
The problems with dog food eating your own Phil Calçado SoundCloud Thursday, October 17, 13

APIs: The Problems with Eating your Own Dog Food

Embed Size (px)

DESCRIPTION

SoundCloud's web and mobile properties are all built on top of our Public API. While building the user-interface atop a RESTful layer has proven itself a sound decision, the one-size-fits-all nature of a Public API is not ideal. When it comes to data transfer and HTTP resource modelling, each client has their own needs, and in the end hacks and workarounds have to be implemented in both clients and servers. Feature development also becomes complicated, with coordination between multiple teams required for every single little feature. SoundCloud is now moving to a different model, where clients have their own façade APIs, modelled after their core characteristics and needs. We are also using the architecture to break away from Conway’s Law and building more cross-functional, end-to-end teams. From: http://gotocon.com/berlin-2013/presentation/APIs:%20The%20Problems%20with%20Eating%20your%20Own%20Dog%20food To implement this, a lot of change in our architecture, tech stack and development processes were required. In this talk we will explore the challenges we had, the options we investigated and how ultimately SoundCloud decided to move forward.

Citation preview

Page 1: APIs: The Problems with Eating your Own Dog Food

The problems with

dog food

eating your own

Phil CalçadoSoundCloud

Thursday, October 17, 13

Page 2: APIs: The Problems with Eating your Own Dog Food

Thursday, October 17, 13

Page 3: APIs: The Problems with Eating your Own Dog Food

>11 hours ofaudio uploaded every minute

Thursday, October 17, 13

Page 4: APIs: The Problems with Eating your Own Dog Food

~200million usersevery month

Thursday, October 17, 13

Page 5: APIs: The Problems with Eating your Own Dog Food

Thursday, October 17, 13

Page 6: APIs: The Problems with Eating your Own Dog Food

Thursday, October 17, 13

Page 7: APIs: The Problems with Eating your Own Dog Food

http://bit ly/tech-behind-new-twittercomThursday, October 17, 13

Page 8: APIs: The Problems with Eating your Own Dog Food

Thursday, October 17, 13

Page 9: APIs: The Problems with Eating your Own Dog Food

Just before

releasethe beta

Thursday, October 17, 13

Page 10: APIs: The Problems with Eating your Own Dog Food

http://bit ly/improving-performance-twittercomThursday, October 17, 13

Page 11: APIs: The Problems with Eating your Own Dog Food

Thursday, October 17, 13

Page 12: APIs: The Problems with Eating your Own Dog Food

Ship it?

Thursday, October 17, 13

Page 13: APIs: The Problems with Eating your Own Dog Food

Ship it!(just overprovision the api)

Thursday, October 17, 13

Page 14: APIs: The Problems with Eating your Own Dog Food

~3 back-end requests

Thursday, October 17, 13

Page 15: APIs: The Problems with Eating your Own Dog Food

~159 back-end requests

Thursday, October 17, 13

Page 16: APIs: The Problems with Eating your Own Dog Food

haproxywere the

First to break

Thursday, October 17, 13

Page 17: APIs: The Problems with Eating your Own Dog Food

memcachedThen

Thursday, October 17, 13

Page 18: APIs: The Problems with Eating your Own Dog Food

Rails/MySQLThen

Thursday, October 17, 13

Page 19: APIs: The Problems with Eating your Own Dog Food

need faster api

Railswon’t go away

Thursday, October 17, 13

Page 20: APIs: The Problems with Eating your Own Dog Food

SoundCloud.com

Thursday, October 17, 13

Page 21: APIs: The Problems with Eating your Own Dog Food

Sounds & Sets

Social Graph

Premium Features Search

Activity Stream

API

Thursday, October 17, 13

Page 22: APIs: The Problems with Eating your Own Dog Food

Sounds & Sets

Social Graph

Premium Features Search

Activity Stream

API

Thursday, October 17, 13

Page 23: APIs: The Problems with Eating your Own Dog Food

0%

25%

50%

75%

100%

Original Services Extracted

Database Other HTTP

Thursday, October 17, 13

Page 24: APIs: The Problems with Eating your Own Dog Food

0%

25%

50%

75%

100%

Original Services Extracted

Database Other HTTP

Thursday, October 17, 13

Page 25: APIs: The Problems with Eating your Own Dog Food

0%

25%

50%

75%

100%

Original Services Extracted

Database Other HTTP

about the same, tbh

Thursday, October 17, 13

Page 26: APIs: The Problems with Eating your Own Dog Food

need faster Rails

Railswon’t go away

Thursday, October 17, 13

Page 27: APIs: The Problems with Eating your Own Dog Food

Thursday, October 17, 13

Page 28: APIs: The Problems with Eating your Own Dog Food

lots of I/Oconcurrency friendly

Thursday, October 17, 13

Page 29: APIs: The Problems with Eating your Own Dog Food

parallelismdoesn’t like

Rails

Thursday, October 17, 13

Page 30: APIs: The Problems with Eating your Own Dog Food

timeThursday, October 17, 13

Page 31: APIs: The Problems with Eating your Own Dog Food

concurrency?

Can wemake it like

Thursday, October 17, 13

Page 32: APIs: The Problems with Eating your Own Dog Food

timeThursday, October 17, 13

Page 33: APIs: The Problems with Eating your Own Dog Food

timeThursday, October 17, 13

Page 34: APIs: The Problems with Eating your Own Dog Food

Thursday, October 17, 13

Page 35: APIs: The Problems with Eating your Own Dog Food

Thursday, October 17, 13

Page 36: APIs: The Problems with Eating your Own Dog Food

is there?

Whatelse

Thursday, October 17, 13

Page 37: APIs: The Problems with Eating your Own Dog Food

Thursday, October 17, 13

Page 38: APIs: The Problems with Eating your Own Dog Food

Thursday, October 17, 13

Page 39: APIs: The Problems with Eating your Own Dog Food

Thursday, October 17, 13

Page 40: APIs: The Problems with Eating your Own Dog Food

Thursday, October 17, 13

Page 41: APIs: The Problems with Eating your Own Dog Food

Thursday, October 17, 13

Page 42: APIs: The Problems with Eating your Own Dog Food

timeThursday, October 17, 13

Page 43: APIs: The Problems with Eating your Own Dog Food

timeThursday, October 17, 13

Page 44: APIs: The Problems with Eating your Own Dog Food

Thursday, October 17, 13

Page 45: APIs: The Problems with Eating your Own Dog Food

about

the network?

What

Thursday, October 17, 13

Page 46: APIs: The Problems with Eating your Own Dog Food

GET /tracks/trending/music

Thursday, October 17, 13

Page 47: APIs: The Problems with Eating your Own Dog Food

GET /tracks/genres

GET /tracks/trending/music

Thursday, October 17, 13

Page 48: APIs: The Problems with Eating your Own Dog Food

GET /tracks/trending/music

GET /tracks/genres

GET /tracks/genres/jazz

Thursday, October 17, 13

Page 49: APIs: The Problems with Eating your Own Dog Food

GET /tracks/trending/music

GET /tracks/genres

GET /tracks/genres/jazz

GET /tracks/123Thursday, October 17, 13

Page 50: APIs: The Problems with Eating your Own Dog Food

a custom API?about

What

Thursday, October 17, 13

Page 51: APIs: The Problems with Eating your Own Dog Food

GET /tracks/suggested

Thursday, October 17, 13

Page 52: APIs: The Problems with Eating your Own Dog Food

GET /tracks/suggestedGET /tracks/123

Thursday, October 17, 13

Page 53: APIs: The Problems with Eating your Own Dog Food

api.soundcloud.com

iOS Android Desktop Widget 3rd PartyThursday, October 17, 13

Page 54: APIs: The Problems with Eating your Own Dog Food

api-mobile

iOS Android Desktop Widget

api web api-partn

3rd Party

Thursday, October 17, 13

Page 55: APIs: The Problems with Eating your Own Dog Food

comes

next?

What

Thursday, October 17, 13

Page 56: APIs: The Problems with Eating your Own Dog Food

babysitting

Rails

Stop

Thursday, October 17, 13

Page 57: APIs: The Problems with Eating your Own Dog Food

Enable &

app devsempower

Thursday, October 17, 13

Page 58: APIs: The Problems with Eating your Own Dog Food

“Experience

api?based”

Thursday, October 17, 13

Page 59: APIs: The Problems with Eating your Own Dog Food

phil calçado

http://philcalcado.com@pcalcado

www.soundcloud.com

Thursday, October 17, 13