Esempio di architettura distribuita basata su PHP, CouchDB e Mobile

50
Esempio di Architettura Distribuita basata su PHP, CouchDB e Mobile PHP Goes Mobile, Milano 13-04-2012 Stefano Maraspin @maraspin

description

Caso di studio di un'architettura distribuita basata su PHP, CouchDB e Mobile, presentato al PHP Goes Mobile di Milano il 13/04/2012

Transcript of Esempio di architettura distribuita basata su PHP, CouchDB e Mobile

Page 1: Esempio di architettura distribuita basata su PHP, CouchDB e Mobile

Esempio di Architettura Distribuita basata su PHP, CouchDB e Mobile

PHP Goes Mobile, Milano 13-04-2012

Stefano Maraspin @maraspin

Page 2: Esempio di architettura distribuita basata su PHP, CouchDB e Mobile

Managing Partner di MV Associati

Membro Fondatore del PUG FriuliPHP 5 ZCE

@maraspin

[email protected]

Stefano Maraspin

2

Page 3: Esempio di architettura distribuita basata su PHP, CouchDB e Mobile

IL CONTESTO

Page 4: Esempio di architettura distribuita basata su PHP, CouchDB e Mobile
Page 5: Esempio di architettura distribuita basata su PHP, CouchDB e Mobile

DOVE VOGLIAMO ARRIVARE?

Page 6: Esempio di architettura distribuita basata su PHP, CouchDB e Mobile

RAPIDITA’

Page 7: Esempio di architettura distribuita basata su PHP, CouchDB e Mobile

RISPARMIO

Page 8: Esempio di architettura distribuita basata su PHP, CouchDB e Mobile

FEEDBACK

Page 9: Esempio di architettura distribuita basata su PHP, CouchDB e Mobile

FASCINO

Page 10: Esempio di architettura distribuita basata su PHP, CouchDB e Mobile

I CLIENTI ORDINANO…

Page 11: Esempio di architettura distribuita basata su PHP, CouchDB e Mobile

LA CUCINA RICEVE

Page 12: Esempio di architettura distribuita basata su PHP, CouchDB e Mobile

FEEDBACK / REAZIONE IMMEDIATI

Page 13: Esempio di architettura distribuita basata su PHP, CouchDB e Mobile
Page 14: Esempio di architettura distribuita basata su PHP, CouchDB e Mobile

Partiamo da...

14

Page 15: Esempio di architettura distribuita basata su PHP, CouchDB e Mobile

…E SE?

Page 16: Esempio di architettura distribuita basata su PHP, CouchDB e Mobile

Allora...

16

Page 17: Esempio di architettura distribuita basata su PHP, CouchDB e Mobile

Cosa scegliere?

17

Page 18: Esempio di architettura distribuita basata su PHP, CouchDB e Mobile

Incontriamo Mr. Brewer

18

http://www.julianbrowne.com/article/viewer/brewers-cap-theoremhttp://ksat.me/a-plain-english-introduction-to-cap-theorem/

Page 19: Esempio di architettura distribuita basata su PHP, CouchDB e Mobile

Scelta Fatta!

19

Page 20: Esempio di architettura distribuita basata su PHP, CouchDB e Mobile

Cos’è CouchDB?• Datastore Documentale (schemaless)• Database / Documenti• JSON• REST

20

Page 21: Esempio di architettura distribuita basata su PHP, CouchDB e Mobile

Incontriamo Futon

21

Page 22: Esempio di architettura distribuita basata su PHP, CouchDB e Mobile

Replicazione Semplice

22

Supporto per modalità PULL e PUSH

Page 23: Esempio di architettura distribuita basata su PHP, CouchDB e Mobile

Ma Semplice Davvero!

23

Aggiornati non solo i dati ma anche le viste (design docs)

Page 24: Esempio di architettura distribuita basata su PHP, CouchDB e Mobile

Versioni• ID / _rev• Aggiornamento ottimista, senza lock• MVCC• Aggiornamenti atomici sui documenti• Coerenza Eventuale

24

Page 25: Esempio di architettura distribuita basata su PHP, CouchDB e Mobile

Scenario di conflitto

25

CouchDB – The definitive guide – O’Reilly

Page 26: Esempio di architettura distribuita basata su PHP, CouchDB e Mobile

Risoluzione del Conflitto

26

CouchDB – The definitive guide – O’Reilly

Page 27: Esempio di architettura distribuita basata su PHP, CouchDB e Mobile

CouchApps

27

Page 28: Esempio di architettura distribuita basata su PHP, CouchDB e Mobile

Implicazione

28

Page 29: Esempio di architettura distribuita basata su PHP, CouchDB e Mobile

SAREMO PRESTO DISOCCUPATI!

Page 30: Esempio di architettura distribuita basata su PHP, CouchDB e Mobile

…o forse no

30

Page 31: Esempio di architettura distribuita basata su PHP, CouchDB e Mobile

Classico Backend

31

Page 32: Esempio di architettura distribuita basata su PHP, CouchDB e Mobile

Business Logic

32

Page 33: Esempio di architettura distribuita basata su PHP, CouchDB e Mobile

Poi tutto impacchettato

33

Page 34: Esempio di architettura distribuita basata su PHP, CouchDB e Mobile

Mandato a CouchDB

34

Localmente, poi si arrangia lui…

Page 35: Esempio di architettura distribuita basata su PHP, CouchDB e Mobile

E QUINDI PRESENTATO AI CLIENT

Page 36: Esempio di architettura distribuita basata su PHP, CouchDB e Mobile

L’ELEFANTE LA SPUNTA SEMPRE!

Page 37: Esempio di architettura distribuita basata su PHP, CouchDB e Mobile

Parecchia scelta• Chill• Doctrine CouchDB• PHP CouchDB Extension• PHPillow• Sag• Settee• Plain CURL (don’t forget it’s HTTP)

37

Page 38: Esempio di architettura distribuita basata su PHP, CouchDB e Mobile

UNA PALLOTTOLA D’ARGENTO?

Page 39: Esempio di architettura distribuita basata su PHP, CouchDB e Mobile

Alto consumo di disco

39

0

2000

4000

6000

8000

10000

12000

14000

16000

DB Size (MB)

NB Quanto sopra su update!

Page 40: Esempio di architettura distribuita basata su PHP, CouchDB e Mobile

Che Succede?

40

Questione di affidabilità, performance

Page 41: Esempio di architettura distribuita basata su PHP, CouchDB e Mobile

C’è dell’altro• Mantenuta traccia dei documenti

eliminati (replicazione)• Spazio su disco viene dedicato anche

alle viste (che vengono precalcolate e quindi mantenute incrementalmente)

• Quando si esegue la compattazione, fa prima una copia di tutti i dati

41

Page 42: Esempio di architettura distribuita basata su PHP, CouchDB e Mobile

COMPATTIAMO QUANDO POSSIBILE…

Page 43: Esempio di architettura distribuita basata su PHP, CouchDB e Mobile

Raw Performance• 3000 evt/sec in batch mode• 400 evt/sec inserimento• 100 evt/sec update• 10 evt/sec update durante

compattazione

43

Page 44: Esempio di architettura distribuita basata su PHP, CouchDB e Mobile

Possiamo sempre scalare…

44

Page 45: Esempio di architettura distribuita basata su PHP, CouchDB e Mobile

O forse no?

45

Page 46: Esempio di architettura distribuita basata su PHP, CouchDB e Mobile

Una soluzione al problema

46

Page 47: Esempio di architettura distribuita basata su PHP, CouchDB e Mobile

La Morale• CouchDB è un’ottima soluzione per

contesti distribuiti• Non è adatto per le situazioni in cui ci

siano frequenti aggiornamenti sui dati e carichi (ingenti) costanti

• L’API REST ci aiuta a scalare le letture

• Bigcouch viene in aiuto sulle scritture• L’utilizzo combinato di PHP e

couchapp sembra una strada promettente47

Page 48: Esempio di architettura distribuita basata su PHP, CouchDB e Mobile

DOMANDE?

Page 50: Esempio di architettura distribuita basata su PHP, CouchDB e Mobile

Grazie per l’attenzione

Stefano [email protected]@mvassociati.it