Esempio di architettura distribuita basata su PHP, CouchDB e Mobile

Post on 27-Jan-2015

107 views 1 download

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

Esempio di Architettura Distribuita basata su PHP, CouchDB e Mobile

PHP Goes Mobile, Milano 13-04-2012

Stefano Maraspin @maraspin

Managing Partner di MV Associati

Membro Fondatore del PUG FriuliPHP 5 ZCE

@maraspin

s.maraspin@mvassociati.it

Stefano Maraspin

2

IL CONTESTO

DOVE VOGLIAMO ARRIVARE?

RAPIDITA’

RISPARMIO

FEEDBACK

FASCINO

I CLIENTI ORDINANO…

LA CUCINA RICEVE

FEEDBACK / REAZIONE IMMEDIATI

Partiamo da...

14

…E SE?

Allora...

16

Cosa scegliere?

17

Incontriamo Mr. Brewer

18

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

Scelta Fatta!

19

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

20

Incontriamo Futon

21

Replicazione Semplice

22

Supporto per modalità PULL e PUSH

Ma Semplice Davvero!

23

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

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

24

Scenario di conflitto

25

CouchDB – The definitive guide – O’Reilly

Risoluzione del Conflitto

26

CouchDB – The definitive guide – O’Reilly

CouchApps

27

Implicazione

28

SAREMO PRESTO DISOCCUPATI!

…o forse no

30

Classico Backend

31

Business Logic

32

Poi tutto impacchettato

33

Mandato a CouchDB

34

Localmente, poi si arrangia lui…

E QUINDI PRESENTATO AI CLIENT

L’ELEFANTE LA SPUNTA SEMPRE!

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

37

UNA PALLOTTOLA D’ARGENTO?

Alto consumo di disco

39

0

2000

4000

6000

8000

10000

12000

14000

16000

DB Size (MB)

NB Quanto sopra su update!

Che Succede?

40

Questione di affidabilità, performance

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

COMPATTIAMO QUANDO POSSIBILE…

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

compattazione

43

Possiamo sempre scalare…

44

O forse no?

45

Una soluzione al problema

46

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

DOMANDE?

Grazie per l’attenzione

Stefano Maraspin@maraspins.maraspin@mvassociati.it