franco caporale couchbase milano

47
Supportare Milioni di Utenti con NoSQL Franco Caporale

Upload: mobile-web-italy-meetup

Post on 22-Jun-2015

120 views

Category:

Documents


3 download

DESCRIPTION

Franco Caporale, technology evangelist di Couchbase, parla di database NoSQL, scalabilità di applicazioni web e mobile games. In particolare viene trattato il caso Draw Something, il gioco di Zynga che l'anno scorso ha raggiunto 50 milioni di utenti e oltre 2 miliardi di disegni in sole 6 settimane.

TRANSCRIPT

Page 1: Franco Caporale Couchbase Milano

Supportare Milioni di Utenti con NoSQL

Franco Caporale

Page 2: Franco Caporale Couchbase Milano

Draw Something

Page 3: Franco Caporale Couchbase Milano

Draw Something – OMGPop

Page 4: Franco Caporale Couchbase Milano

Draw Something diventa virale in 3 settimane

19 17 15 13 11 9 7 5 3 3/1 28 26 24 22 20 18 16 14 12 10 8 2/6

Daily Active Users (millions)

21

2

4

6

8

10

12

14

16

Page 5: Franco Caporale Couchbase Milano

I dati crescono in modo non lineare…

19 17 15 13 11 9 7 5 3 3/1 28 26 24 22 20 18 16 14 12 10 8 2/6

Daily Active Users (millions)

21

2

4

6

8

10

12

14

16

In un mese 30,000,000 di downloads della app, oltre 5,000 disegni al secondo,

oltre 2,200,000,000 disegni immagazzinati, oltre 105,000 operazioni al secondo, e oltre 3.3 terabytes di dati in totale.

Page 6: Franco Caporale Couchbase Milano

Invece con RDBMS……

19 17 15 13 11 9 7 5 3 3/1 28 26 24 22 20 18 16 14 12 10 8 2/6

The Simpson’s: Tapped Out Daily Active Users (millions)

21

2

4

6

8

10

12

14

16

#2 Free app on iPad #3 Free app on iPhone

Page 7: Franco Caporale Couchbase Milano

MySQL o NoSQL?

Page 8: Franco Caporale Couchbase Milano

La maggioranza delle applicazioni utilizzano gli RDBMS

Page 9: Franco Caporale Couchbase Milano

E a volte puo’ diventare un po’ grande…..

http://www.seoclerks.com/imagedb/2005/BIG-CAT-FOUND-Spoh

Page 10: Franco Caporale Couchbase Milano

……o forse enorme!

http://www.2pep.com/extreme-funny-stuff/

Page 11: Franco Caporale Couchbase Milano

E complicato!

Page 12: Franco Caporale Couchbase Milano

I principali motivi per l’adozione del NoSQL

Schema rigido e non flessibile

Difficolta’ a scalare

Problemi di performance

Costi Tutti I precedenti

Altri

49%

35%

29%

16% 12% 11%

Source: Couchbase Survey, December 2011, n = 1351.

Page 13: Franco Caporale Couchbase Milano

Architettura moderna di un’applicazione web

Application Scales Out Just add more commodity web servers

Database Scales Up Get a bigger, more complex server

Nota – I database relazionali sono una tecnologia eccellente ma non per questo uso.

Page 14: Franco Caporale Couchbase Milano

I database NoSQL utilizzano la stessa logica dell’applicazione

Application Scales Out Just add more commodity web servers

Database Scales Out Just add more commodity data servers

Scalando orizzontalmente si riducono I costi e aumentano

le performance

NoSQL Database Servers

Page 15: Franco Caporale Couchbase Milano

Una Struttura dei Dati Diversa

Page 16: Franco Caporale Couchbase Milano

Modello Relazionale vs. A Documento

Modello “Relazionale” Modello “A documento”

Collezione di documenti complessi con formati arbitrari e schema variabile

Tabelle con schema rigido e struttura dei dati predefinita

JSON JSON

JSON

C1 C2 C3 C4

{ }

Page 17: Franco Caporale Couchbase Milano

Database a Documento

• Ogni record e’ un documento a se’ stante

• Ogni documento ha una struttura indipendente

• I documenti possono essere complessi • Richiedono una chiave unica • I dati sono immagazzinati in formato

JSON, XML o simili • Il contenuto puo’ essere indicizzato e

interrogato • Offrono sharding automatico e

repliche

{ “UUID”: “21f7f8de-8051-5b89-86“Time”: “2011-04-01T13:01:02.42“Server”: “A2223E”,

“Calling Server”: “A2213W”,“Type”: “E100”,“Initiating User”: “[email protected]”,“Details”:

{

“IP”: “10.1.1.22”,“API”: “InsertDVDQueueItem”,“Trace”: “cleansed”,“Tags”:

[

“SERVER”, “US-West”, “API”]

}

}

Page 18: Franco Caporale Couchbase Milano

Esempio Social Game Profilo Giocatore

{

"jsonType": "player",

"uuid": "35767d02-a958-4b83-8179-616816692de1",

"name": "Keith4540",

"hitpoints": 75,

"experience": 663,

"level": 4,

"loggedIn": false

}

ID Utente

Page 19: Franco Caporale Couchbase Milano

Esempio Social Game Oggetto

{

"jsonType": "item",

"name": "Katana_e5890c94-11c6-65746ce6c560",

"uuid": "e5890c94-11c6-4856-a7a6-65746ce6c560",

"ownerId": "Dale9887"

}

ID Oggetto

ID Utente

Page 20: Franco Caporale Couchbase Milano

Esempio Social Game Mostro

{

"jsonType": "monster",

"name": "Bauchan9932",

"uuid": "d10dfc1b-0412-4140-b4ec-affdbf2aa5ec",

"hitpoints": 370,

"experienceWhenKilled": 52,

"itemProbability": 0.5050581341872865

}

ID Mostro

Page 21: Franco Caporale Couchbase Milano

Esempio Blog Diviso su piu’ Documenti

{ “UUID”: “21f7f8de-8051-5b89-86“Time”: “2011-04-01T13:01:02.42“Server”: “A2223E”,

“Calling Server”: “A2213W”,“Type”: “E100”,“Initiating User”: “[email protected]”,“Details”:

{

“IP”: “10.1.1.22”,“API”: “InsertDVDQueueItem”,“Trace”: “cleansed”,“Tags”:

[

“SERVER”, “US-West”, “API”]

}

}

{

“_id”: “Coucbase_Hello_World”,

“author”: “dborkar”,

“type”: “post”

“title”: “Hello World”,

“format”: “markdown”,

“body”: “Hello from

[Couchbase](http://couchbase.com).”,

“html”: “<p>Hello from <a href=\“http: …

“comments”:[

“comment1_Couchbase_Hello_world”

]

} { “UUID”: “21f7f8de-8051-5b89-86“Time”: “2011-04-01T13:01:02.42“Server”: “A2223E”,

“Calling Server”: “A2213W”,“Type”: “E100”,“Initiating User”: “[email protected]”,“Details”:

{

“IP”: “10.1.1.22”,“API”: “InsertDVDQueueItem”,“Trace”: “cleansed”,“Tags”:

[

“SERVER”, “US-West”, “API”]

}

}

{

“_id”: “comment1_Couchbase_Hello_World”,

“format”: “markdown”,

“body”:”Awesome post!”

}

BLOG

COMMENTI

Page 22: Franco Caporale Couchbase Milano

Esempio: Profilo Utente Database Relazionale

Indirizzo Utente

1 DEN 30303 CO

2 MV 94040 CA

3 CHI 60609 IL

Informazioni Utente

KEY First ZIP_id Last

4 NY 10010 NY

1 Dipti 2 Borkar

2 Joe 2 Smith

3 Ali 2 Dodson

4 John 3 Doe

ZIP_id CITY ZIP STATE

1 2

2 MV 94040 CA

Per ottenere informazioni su un utente specifico, devi effettuare un JOIN tra due tabelle

Page 23: Franco Caporale Couchbase Milano

Tutti I dati di un utente in un singolo documento

{ “ID”: 1, “FIRST”: “Dipti”, “LAST”: “Borkar”, “ZIP”: “94040”, “CITY”: “MV”, “STATE”: “CA” }

JSON

= +

Esempio: Profilo Utente Database a Documento

Page 24: Franco Caporale Couchbase Milano

User ID Nome Cognome CAP

1 Dipti Borkar 94040

2 Joe Smith 94040

3 Ali Dodson 94040

4 Sarah Gorin NW1

5 Bob Young 30303

6 Nancy Baker 10010

7 Ray Jones 31311

8 Lee Chen V5V3

M

• • •

50000 Doug Moore 04252

50001 Mary White SW195

50002 Lisa Clark 12425

ID Paese TEL3

001

ID Paese Nome Paese

001 USA

002 UK

003 Argentina

004 Australia

005 Aruba

006 Austria

007 Brazil

008 Canada

009 Chile

• • •

130 Portugal

131 Romania

132 Russia

133 Spain

134 Sweden

User ID Foto ID Commento

2 d043 NYC

2 b054 Bday

5 c036 Miami

7 d072 Sunset

5002 e086 Spain

Tabella Foto

001

007

001

133

133

User ID Status ID Text

1 a42 At conf

4 b26 excited

5 c32 hockey

12 d83 Go A’s

5000 e34 sailing

Tabella Status

134

007

008

001

005

Tabella Paese

User ID Affl ID Affl Name

2 a42 Cal

4 b96 USC

7 c14 UW

8 e22 Oxford

Tabella Affiliazioni ID Paese

001

001

001

002

ID Paese

ID Paese

001

001

002

001

001

001

008

001

002

001

Tabella Utente

.

.

.

Effettuare una Modifica su RDBMS

Page 25: Franco Caporale Couchbase Milano

Modifiche su un database a documento

{ “ID”: 1, “FIRST”: “Don”, “LAST”: “Pinto”, “ZIP”: “94040”, “CITY”: “MV”, “STATE”: “CA”, “STATUS”: { “TEXT”: “At Conf”

}

}

“GEO_LOC”: “134” }, “COUNTRY”: ”USA”

Basta aggiungere le informazioni sul documento

JSON

, }

Page 26: Franco Caporale Couchbase Milano

Il NoSQL e i Social Games

Page 27: Franco Caporale Couchbase Milano

Catalogo dei NoSQL

Chiave-Valore

Memcached Redis

Struttura Dati Documento Colonna Grafico

MongoDB

Couchbase Cassandra

Cac

he

(mem

ory

on

ly)

Dat

abas

e

(mem

ory

/dis

k)

Neo4J

Page 28: Franco Caporale Couchbase Milano

Come scegliere il database NoSQL piu’ adatto?

Crescita rapida

Reattivita’ del gioco

Gioco globalizzato e sempre attivo

Modifiche frequenti e veloci

Scalabilita’

Performance

Sempre live

Modello dei dati flessibile

Page 29: Franco Caporale Couchbase Milano

Couchbase Open Source

• Il principale database NoSQL distribuito

• Supporta sia le applicazioni chiave-valore che a documento

• Tutti I componenti sono disponibili con licenza Apache 2.0 Public License

• Disponibile come pacchetto software sia nella versione Community che in quella Enterprise

Couchbase

Open Source Project

Page 30: Franco Caporale Couchbase Milano

Page 31: Franco Caporale Couchbase Milano

Scalabilita’ Semplice

Performance Elevate e Costanti

Sempre Live 24x365

Ingrandisci il tuo cluster con un click mentre l’applicazione

rimane live

Tempi di risposta costanti sotto il millisecondo per operazioni di

scrittura e lettura

L’applicazione non e’ mai inattiva anche in caso di

aggiornamenti, manutenzione etc.

Modello Dati Flessibile

Supporto per documenti JSON senza uno schema rigido

Principi Chiave di Couchbase Server

Page 32: Franco Caporale Couchbase Milano

Differenze Principali Rispetto ad Altri Database NoSQL

• Permette un altissimo numero di connessioni contemporanee (fondamentale per applicazioni web interattive)

• Nessun locks

• Cache nativa

• Hash partitioning (non range) non si formano “hotspots”

• Sharding automatico

Page 33: Franco Caporale Couchbase Milano

Dietro le Quinte di Couchbase

Page 34: Franco Caporale Couchbase Milano

3 3 2

Server Singolo- Operazione Scrittura con Couchbase

Managed Cache

Dis

k Q

ueu

e

Replication Queue

App Server

Doc 1’

Doc 1

Doc 1’ Doc 1

Doc 1’

Disk

To other node

Couchbase Server Node

Page 35: Franco Caporale Couchbase Milano

GET

D

oc

1

3 3 2

Server Singolo- Operazione Lettura con Couchbase

Dis

k Q

ueu

e

Replication Queue

App Server

Doc 1

Doc 1 Doc 1

Managed Cache

Disk

To other node

Couchbase Server Node

Page 36: Franco Caporale Couchbase Milano

COUCHBASE SERVER CLUSTER

Operazioni di Base sul Cluster

• Tutti I nodi sono uguali e I documenti sono ugualmente distribuiti

• Ogni server contiene sia I documenti attivi che quelli replica

• La mappa del cluster ha le coordinate su dove si trovano I documenti L’applicazione non ha bisogno di saperlo

User Configured Replica Count = 1

READ/WRITE/UPDATE

ACTIVE

Doc 5

Doc 2

Doc

Doc

Doc

SERVER 1 ACTIVE

Doc 4

Doc 7

Doc

Doc

Doc

SERVER 2

Doc 8

ACTIVE

Doc 1

Doc 3

Doc

Doc

Doc

REPLICA

Doc 4

Doc 1

Doc 8

Doc

Doc

Doc

REPLICA

Doc 6

Doc 3

Doc 2

Doc

Doc

Doc

REPLICA

Doc 7

Doc 9

Doc 5

Doc

Doc

Doc

SERVER 3

Doc 6

APP SERVER 1

COUCHBASE Client Library CLUSTER MAP

COUCHBASE Client Library CLUSTER MAP

APP SERVER 2

Doc 9

Page 37: Franco Caporale Couchbase Milano

Aggiungere Nodi al Cluster

• Due servers aggiunti con un solo click

• I documenti vengono automaticamente ribilanciati attraverso il cluster Col minimo spostamento di documenti possibile

• La mappa del cluster viene aggiornata

• L’applicazione ora e’ supportata da un numero maggiore di servers.

REPLICA

ACTIVE

Doc 5

Doc 2

Doc

Doc

Doc 4

Doc 1

Doc

Doc

SERVER 1

REPLICA

ACTIVE

Doc 4

Doc 7

Doc

Doc

Doc 6

Doc 3

Doc

Doc

SERVER 2

REPLICA

ACTIVE

Doc 1

Doc 3

Doc

Doc

Doc 7

Doc 9

Doc

Doc

SERVER 3

SERVER 4

SERVER 5

REPLICA

ACTIVE

REPLICA

ACTIVE

Doc

Doc 8 Doc

Doc 9 Doc

Doc 2 Doc

Doc 8 Doc

Doc 5 Doc

Doc 6

READ/WRITE/UPDATE READ/WRITE/UPDATE

APP SERVER 1

COUCHBASE Client Library CLUSTER MAP

COUCHBASE Client Library CLUSTER MAP

APP SERVER 2

COUCHBASE SERVER CLUSTER

User Configured Replica Count = 1

Page 38: Franco Caporale Couchbase Milano

Caduta di un Nodo

REPLICA

ACTIVE

Doc 5

Doc 2

Doc

Doc

Doc 4

Doc 1

Doc

Doc

SERVER 1

REPLICA

ACTIVE

Doc 4

Doc 7

Doc

Doc

Doc 6

Doc 3

Doc

Doc

SERVER 2

REPLICA

ACTIVE

Doc 1

Doc 10

Doc

Doc

Doc 7

Doc 9

Doc

Doc

SERVER 3

SERVER 4

SERVER 5

REPLICA

ACTIVE

REPLICA

ACTIVE

Doc 9

Doc 8

Doc Doc 6 Doc

Doc

Doc 5 Doc 10

Doc 2

Doc 8 Doc

Doc

• I server della app accedono ai dati

• Le richieste al Server 3 falliscono

• Il Cluster identifica che un nodo e’ offline Le repliche vengono promosse ad attive e la mappa del cluster viene aggiornata

• Le richieste della app ora si dirigono sul server appropriato

• Il tutto e’ seguito dal ribilanciamento dei dati

Doc

Doc 1 Doc 3

APP SERVER 1

COUCHBASE Client Library CLUSTER MAP

COUCHBASE Client Library CLUSTER MAP

APP SERVER 2

User Configured Replica Count = 1

COUCHBASE SERVER CLUSTER

Page 39: Franco Caporale Couchbase Milano

Cross Data Center Replication (XDCR)

COUCHBASE SERVER CLUSTER NY DATA CENTER

ACTIVE

Doc

Doc 2

SERVER 1

Doc 9

SERVER 2

SERVER 3

RAM

Doc Doc Doc

ACTIVE

Doc

Doc

Doc RAM

ACTIVE

Doc

Doc

Doc RAM

DISK

Doc Doc Doc

DISK

Doc Doc Doc

DISK

COUCHBASE SERVER CLUSTER SF DATA CENTER

ACTIVE

Doc

Doc 2

SERVER 1

Doc 9

SERVER 2

SERVER 3

RAM

Doc Doc Doc

ACTIVE

Doc

Doc

Doc RAM

ACTIVE

Doc

Doc

Doc RAM

DISK

Doc Doc Doc

DISK

Doc Doc Doc

DISK

Page 40: Franco Caporale Couchbase Milano

Altri Usi Comuni del NoSQL

Page 41: Franco Caporale Couchbase Milano

Market Adoption – Customers

Internet Companies Enterprises

More than 300 customers -- 5,000 production deployments worldwide

Page 42: Franco Caporale Couchbase Milano

Caratteristiche dei Dati

• Struttura definita dall’utente (Twitter feeds)

• Serve supporto per crescita esponenziale (Apps virali)

• Struttura dei dati non omogenea

• C’e’ necessita’ di cambiare struttura frequentemente

• Lunghezza dei documenti variabile

• Struttura dei dati gerarchica

Couchbase e’ la scelta ideale

Page 43: Franco Caporale Couchbase Milano

Requisiti di Performance

• Latenze estremamente basse (es. 1millisecondo)

• Traffici elevati (es. 200000 ops/sec)

• Numero di utenti elevato

• Domanda non preventivabile con crescite improvvise

• C’e’ predominanza di accesso diretto ai documenti

• Alto traffico in lettura e scrittura

Couchbase e’ la scelta ideale

Page 44: Franco Caporale Couchbase Milano

Applicazioni Comuni Social Gaming

• Couchbase

contiene I dati sugli utenti e I giochi

• Esempi clienti: Zynga, Tapjoy, Ubisoft, Tencent

Apps Mobili

• Couchbase contiene dati

su utenti e contenuti

• Esempi clienti: Kobo, Playtika

Pubblicita’ Online

• Couchbase contiene info sugli utenti per un accesso veloce

• Esempi clienti: AOL, Mediamind, Convertro

Informazioni di Sessione

• Couchbase come database chiave-valore

• Esempi clienti: Concur, Sabre

Profili Utenti

• Couchbase come database chiave-valore

• Esempi clienti: Tunewiki

Cache ad Alta Disponibilita’

• Couchbase utilizzato come livello di cache

• Esempi clienti: Orbitz

Metadata e Contenuti • Couchbase insieme ad

Elasticsearch

• Esempi clienti: McGraw Hill

Aggregazione Dati

• Couchbase aggrega I dati dai social media

• Esempi clienti: Sambacloud

Page 45: Franco Caporale Couchbase Milano

Questions?

Page 46: Franco Caporale Couchbase Milano

Non dimenticate di………

Scaricare e fare pratica con Couchbase Server

http://www.couchbase.com/download

Iscrivervi sul gruppo di Couchbase Italia su LinkedIn

http://www.linkedin.com/groups/Couchbase-Italia-4932288

Iscrivervi sul nostro Community Portal http://www.couchbase.com/communities/user/register

Page 47: Franco Caporale Couchbase Milano

Grazie a Tutti!

[email protected]