Slide 1

Slide 1 text

A Silicon Valley-like startup... in Spain :) J. Javier Maestro – [email protected] Backend Engineer – Core & Scalability Team

Slide 2

Slide 2 text

Tuenti is...

Slide 3

Slide 3 text

No content

Slide 4

Slide 4 text

No content

Slide 5

Slide 5 text

No content

Slide 6

Slide 6 text

No content

Slide 7

Slide 7 text

No content

Slide 8

Slide 8 text

No content

Slide 9

Slide 9 text

Now, seriously... * the TV, Rockband and Paintball team building are real, though! :)

Slide 10

Slide 10 text

2006

Slide 11

Slide 11 text

No content

Slide 12

Slide 12 text

No content

Slide 13

Slide 13 text

Today

Slide 14

Slide 14 text

No content

Slide 15

Slide 15 text

No content

Slide 16

Slide 16 text

No content

Slide 17

Slide 17 text

No content

Slide 18

Slide 18 text

+200 employees 65% engineers 18 nationalities

Slide 19

Slide 19 text

Back to the Future?

Slide 20

Slide 20 text

No content

Slide 21

Slide 21 text

Tuenti Facts

Slide 22

Slide 22 text

BIG Numbers +10 million users +150 million daily chat messages +4 million daily uploaded photos

Slide 23

Slide 23 text

BIG Numbers +30 billion monthly page views +27k web requests/second +12Gbps peaks (including CDNs) +4Gbps just the datacenter +1000 servers

Slide 24

Slide 24 text

BIG Numbers 50% of users on site daily, averaging 3 sessions per day 82 minutes per day 20% of users use mobile features daily

Slide 25

Slide 25 text

La palabra más buscada en Google España (Google Zeitgeist 2009 y 2010 YTD)

Slide 26

Slide 26 text

No content

Slide 27

Slide 27 text

No content

Slide 28

Slide 28 text

No content

Slide 29

Slide 29 text

“The Spanish friendship map” by Barcelona Media

Slide 30

Slide 30 text

No content

Slide 31

Slide 31 text

Viral

Slide 32

Slide 32 text

No content

Slide 33

Slide 33 text

No content

Slide 34

Slide 34 text

No content

Slide 35

Slide 35 text

No content

Slide 36

Slide 36 text

No content

Slide 37

Slide 37 text

Tech Teams

Slide 38

Slide 38 text

Frontend

Slide 39

Slide 39 text

No content

Slide 40

Slide 40 text

Mobile

Slide 41

Slide 41 text

No content

Slide 42

Slide 42 text

Architecture

Slide 43

Slide 43 text

No content

Slide 44

Slide 44 text

Dev Tools

Slide 45

Slide 45 text

No content

Slide 46

Slide 46 text

Testing Framework

Slide 47

Slide 47 text

No content

Slide 48

Slide 48 text

QA Quality Assurance

Slide 49

Slide 49 text

No content

Slide 50

Slide 50 text

Systems

Slide 51

Slide 51 text

No content

Slide 52

Slide 52 text

IT (crowd :)

Slide 53

Slide 53 text

No content

Slide 54

Slide 54 text

Design & UX

Slide 55

Slide 55 text

No content

Slide 56

Slide 56 text

Backend

Slide 57

Slide 57 text

No content

Slide 58

Slide 58 text

+much more! User Support Sales, Marketing Law, Finance Office Staff Cleaning Staff

Slide 59

Slide 59 text

Magic stuff...

Slide 60

Slide 60 text

In the beginning… One or few servers for the entire application Monolithic structure Bottleneck: Database reads

Slide 61

Slide 61 text

Cache Switch out heavy DB reads for light cache reads Significant reduction in DB load Typical page load has under 2 or 3 queries, and up to hundreds of cache reads Bottleneck remains the same as before

Slide 62

Slide 62 text

Replication Master / Slave architecture Split up reads and writes Optimized configurations Bottleneck: dataset size

Slide 63

Slide 63 text

Data Separation Divide your schema into logical blocks One cluster per data type More complicated to manage in code. Bottleneck: Overload on a given data type

Slide 64

Slide 64 text

Data Partitioning Divide a single table into parts and spread them over several clusters Almost limitless scalability Not free – Code complexity increases significantly Bottleneck: dataset size (again)

Slide 65

Slide 65 text

Cache Partitioning Partitioning does not need to be limited to databases Partitioned Memcached and frontend farms Improves internal network usage Cross partitioning scheme between cache and database

Slide 66

Slide 66 text

Archiving Storing less-frequently- used data in alternative storage Keeps main table size within known limits Flexibility when choosing alternative storage

Slide 67

Slide 67 text

Client-side routing Use browser logic to load balance over frontend farms Reduce server load Remove a potential SPOF

Slide 68

Slide 68 text

Content Delivery Networks Static content Optimized for massive scaling Everything has a price – choose your optimizations wisely

Slide 69

Slide 69 text

Join us! http://jobs.tuenti.com

Slide 70

Slide 70 text

Internships Thesis Associate Engineer Engineer Senior Engineer

Slide 71

Slide 71 text