how ask.fm was built

46
How ask .fm was built Valery Vishnyakov ask.fm/balepc

Upload: balepc

Post on 09-Aug-2015

109 views

Category:

Technology


1 download

TRANSCRIPT

Page 1: How Ask.fm was built

How ask.fm was built

Valery Vishnyakov

ask.fm/balepc

Page 2: How Ask.fm was built

Covered topics

• Scaling Database

• Scaling Application

• Scaling Infrastructure

Page 3: How Ask.fm was built

Started as a side project

Page 4: How Ask.fm was built

• 0 users

• 1 server

• 3 tech guys

2010

Page 5: How Ask.fm was built

Is ask.fm big?

Users Servers Tech guys

Ask.fm 135m 800 15

Twitter* 554m ~3500 1800

StackOverflow** 4m 25 24

* https://about.twitter.com/company ** http://bit.ly/1rEl8sX

Page 6: How Ask.fm was built

No white spots

Page 7: How Ask.fm was built

Initial stack

Page 8: How Ask.fm was built

Scaling UP application

Page 9: How Ask.fm was built

Not a sponsor slide

Page 10: How Ask.fm was built

Scaling OUT application

Page 11: How Ask.fm was built

User uploaded content

Page 12: How Ask.fm was built

• 97k users

• 9 servers

• 3 tech guys

2011

Page 13: How Ask.fm was built

Scaling database

Page 14: How Ask.fm was built

Caching

Page 15: How Ask.fm was built

Redis

Page 16: How Ask.fm was built

Read scalability

Page 17: How Ask.fm was built

Decision time

Middleware Logical partitioning

Page 18: How Ask.fm was built

App-level logical partitioning

Page 19: How Ask.fm was built

Preparation

• Choose Key + IDs

• Avoid JOINS

• Remove DB Constraints

Page 20: How Ask.fm was built

Sharding schema

• node0 • shard0

• questions_by_user • shard1

• questions_by_user

• node1 • shard2

• questions_by_user • shard3

• questions_by_user • …

Page 21: How Ask.fm was built

Maneuver

Page 22: How Ask.fm was built

Adding more servers

Page 23: How Ask.fm was built

DB Scaling takeaways

• Divide and conquer

• MySQL is good (schema change could be painful)

• Cache on all layers

• Scale out, not just up

• Denormalize

Page 24: How Ask.fm was built

When 256 is not enough?

user_id % 256

Page 25: How Ask.fm was built

2012

• 2M users

• 3 tech guys

• 46 servers

Page 26: How Ask.fm was built

More on scaling application

Page 27: How Ask.fm was built

Middleware

Page 28: How Ask.fm was built

End of AWS era

Page 29: How Ask.fm was built

New data center

Page 30: How Ask.fm was built

Bare metal

Page 31: How Ask.fm was built

Infrastructure evolution

Public Cloud => Bare metal => Private Cloud

Page 32: How Ask.fm was built

SPAM

Page 33: How Ask.fm was built

SPAM fighting evolution

‣ IP addresses

‣ Captcha

‣ Links

‣ Patterns

‣ Users

‣ Beneficiary

‣…

Page 34: How Ask.fm was built

Moderation

How to moderate 4M photos every day?

Page 35: How Ask.fm was built

Philippines

Page 36: How Ask.fm was built

2013

• 31M users

• 440 servers

• 6 tech guys

Page 37: How Ask.fm was built

Exponential growth

Page 38: How Ask.fm was built

Functionality switches

• Media content

• Likes

• Wall

Page 39: How Ask.fm was built

Trend Driven Development

TDD

Page 40: How Ask.fm was built

Lessons learned

• Monitoring

• Incremental rollout

• Use battle-proven techniques

Page 41: How Ask.fm was built

Android & iOS

Page 42: How Ask.fm was built

2014

• 105M users

• 12 tech guys

• ~700 servers

Page 43: How Ask.fm was built

Nowadays challenges

• DC High-Availability

• Fault-tolerance

• Scaling teams

Page 44: How Ask.fm was built

• Do not over engineer

• Stay small

• Avoid SPOF

• Performance as a feature

• Plan for scaling out

Global takeaways

Page 45: How Ask.fm was built

What could we do differently?

• More SOA

• Plan hiring ahead

• Don’t f**k up tests

Page 46: How Ask.fm was built

Questions?