Presentazione 2 Spaghi

Post on 17-Jan-2015

322 views 2 download

description

La case history di 2 Spaghi

transcript

Trova e Condividi i tuoi ristoranti preferiti

come nasce?

L’idea di 2Spaghi nasce dall’ispirazione di popolari servizi Web2.0 USA

un posto dove salvare i propri ristoranti

preferiti

guidato dai contenuti generati dagli utenti

totalmente democratico ed user-

centrico

Obiettivo?

scoprire nuovi posti dove mangiare

la vision

2Spaghi nasce con l'obiettivo di creare un luogo che diventi leader per:

• Trovare il ristorante giusto per la cena che si sta organizzando (mappe, reviews, domande alla community).

• Permettere ai ristoratori di entrare in contatto e discutere con i propri clienti e potenziali.

il lancio: luglio 2006

Le prime funzionalita: Google Maps Mashup, ristoranti ordinati per più salvato, SpagoLista, commenti degli utenti

• Passaparola come modello di Marketing

• Partecipazione ad eventi organizzati dalla blogosfera italiana (barcamp)‏

• Feedback subito positivi

i primi due anni: business model

Durante 2007 prime sperimentazioni sul modello di business:

Advertising: Google Adsense e da Settembre ’07 concessionaria pubblicitaria specializzata in food (Vinoclic)‏

Newsletter: sponsorizzate: vendute dalla concessionaria

Progetti speciali:

lancio del film Nero Bifamiliare con i ristoranti preferiti dei protagonisti

il mercato di riferimento

un caso di successo: Booking online

+32.000 prenotazioni entrate

A Dicembre del 2009 abbiamo lanciato il primo servizio di prenotazione online su tutti i ristoranti (oltre 50.000) in Italia come servizio dedicato agli utenti e completamente free.

Gli utenti lo hanno giudicato:

1. Comodo2. Veloce3. Gratuito

+143.000 coperti prenotati

la SpagoGuida 2011

13 Novembre 2010 è uscita in libreria la SpagoGuida, la prima guida ai ristoranti interamente creata grazie alle recensioni degli utenti

2Spaghi Mobile APPS

165.000 app scaricate 65.000 app scaricate

2Spaghi Mobile APPS

iPhone 165.000 app scaricate 65.000 app scaricate

2Spaghi Mobile APPS

iPhone Android165.000 app scaricate 65.000 app scaricate

2Spaghi Mobile APPS

iPhone Android165.000 app scaricate 65.000 app scaricate

2Spaghi Mobile APPS

iPhone Android165.000 app scaricate 65.000 app scaricate

2Spaghi Mobile APPS

iPhone Android165.000 app scaricate 65.000 app scaricate

2Spaghi Mobile APPS

iPhone Android165.000 app scaricate 65.000 app scaricate

2Spaghi Mobile APPS

iPhone Android

230.000 app scaricate

165.000 app scaricate 65.000 app scaricate

SPAGOBOX(acquistabile(on5line(e(nella(GDO(

Cena(scontata(in(un(ristorante(aderente(al(circuito.(

Deal(nelle(pagine(dei(ristoran=.(

riguardano(il(ristorante(selezionato,((ristoran=(vicini(o(simili.((

Collaborazione(commerciale(tra(2Spaghi(e(gruppi(d’acquisto((

2Spaghi(u=lizza(una(piaEaforma(di(backoffice(proprietaria(aEraverso(

la(quale(possiamo(

Visualizzare(i(deal(presen=(sul((gruppo(d’acquisto(EffeEuate(tuEe(le(associazioni(

Piattaforma

2Spaghi ha scelto LAMP come piattaforma di erogazione dei suoi servizi web.

La scelta è stata strategica perchè offre ampia versatilità, grande scalabilità e performance elevate.

Piattaforma

Piattaforma

Perchè?

Piattaforma

Piattaforma

Linux e ubuntu server

Apache MySQL PHP

La scelta di Ubuntu Server è stata la migliore scelta per noi.

Pur non essendo la migliore distribuzione(redhat, fedora, centOS, etc), accorpa caratteristiche che, per chi come noi non ha grandi competenze di tipo sistemistico, sono una manna dal cielo, ad esempio l’aggiornamento e l’installazione tramite apt-get dei pacchetti precompilati.

C’è poi un fattore più opportunistico, il costo pari a 0 (ZERO) per cui non è necessario dotarsi di costose licenze software o di assistenza sistemistica dedicata. Inoltre il tutto può girare su Harware obsoleto avendo una consumo di risorse eseguo.

Platform

WebServer robusto e veloce è l’ambiente ideale per erogare pagine web e siti con molte visite sviluppate in PHP.

È possibile configurare ogni singolo parametro di erogazione per trovare la migliore configurazione possibile (tuning). Questa possibilità naturalmente aumenta il rischio di errori.

Tra le infinite possibilità e moduli configurabili il più interessante è il mod_rewrite, sistema ottimale per creare URL parlanti (SEO oriented). Che di questi tempi non si sa mai ;-)

Platform

Apache

MySQL PHP Linux

Piattaforma

Rappresenta lo standard nel mondo dei DataBase relazionali OpenSource.

Avaro di risorse (CPU) va configurato con attenzione (tuning) per evitare crolli improvvisi e lock-table indesiderati.

Le nuove versioni, a differenza delle precedenti, consentono una maggiore scalabilità (cluster, master/slave).

È sempre meglio avere un DB server dedicato!

MySQL

PHP Linux Apache

Piattaforma

Piattaforma

Il linguaggi client-server più usato sul web e dal mondo Open Source nelle sue versioni più recenti (>=5.0) ha raggiunto una maturità ed affidabilità notevoli.

L’introduzione di OO e parser XML evoluto, ma anche migliaia di function già pronte che velocizzano il lavoro dello sviluppatore accorciando i tempi di produzione rappresentano i suoi punti di forza.

Stabilità e sicurezza lo rendono poi l’alleato ideale anche per architetture più complesse.

PHP

Linux Apache MySQL

Piattaforma

Architettura

Architettura

2006 2007 2008 2009 2010 2011

Architettura

2006 2007 2008 2009 2010 2011

Hosting condiviso+MySQL7MB su Aruba da 35€ l’anno

Architettura

2006 2007 2008 2009 2010 2011

Hosting condiviso+MySQL7MB su Aruba da 35€ l’anno

Server Virtuale presso TOPIX Torino(front-end + DB Server)

4GB di RAM 1GB di HHD banda internet illimitata

Architettura

2006 2007 2008 2009 2010 2011

Hosting condiviso+MySQL7MB su Aruba da 35€ l’anno

Server Virtuale presso TOPIX Torino(front-end + DB Server)

4GB di RAM 1GB di HHD banda internet illimitata

Primo Server proprietario (front-end + DB Server)

Athlon II X4 635 (4 x 2.9Mhz)8GB di RAM 3GB di HHD

Banda internet illimitata

Architettura

2006 2007 2008 2009 2010 2011

Hosting condiviso+MySQL7MB su Aruba da 35€ l’anno

Server Virtuale presso TOPIX Torino(front-end + DB Server)

4GB di RAM 1GB di HHD banda internet illimitata

Primo Server proprietario (front-end + DB Server)

Athlon II X4 635 (4 x 2.9Mhz)8GB di RAM 3GB di HHD

Banda internet illimitata

Secondo Server proprietario (DB server)

8GB di RAM 3GB di HHDPhenom II X4 945 (4 x 3,0 Ghz)

Banda internet illimitata

Architettura

2006 2007 2008 2009 2010 2011

Hosting condiviso+MySQL7MB su Aruba da 35€ l’anno

Server Virtuale presso TOPIX Torino(front-end + DB Server)

4GB di RAM 1GB di HHD banda internet illimitata

Primo Server proprietario (front-end + DB Server)

Athlon II X4 635 (4 x 2.9Mhz)8GB di RAM 3GB di HHD

Banda internet illimitata

Secondo Server proprietario (DB server)

8GB di RAM 3GB di HHDPhenom II X4 945 (4 x 3,0 Ghz)

Banda internet illimitata

89.671 Visite

Architettura

2006 2007 2008 2009 2010 2011

Hosting condiviso+MySQL7MB su Aruba da 35€ l’anno

Server Virtuale presso TOPIX Torino(front-end + DB Server)

4GB di RAM 1GB di HHD banda internet illimitata

Primo Server proprietario (front-end + DB Server)

Athlon II X4 635 (4 x 2.9Mhz)8GB di RAM 3GB di HHD

Banda internet illimitata

Secondo Server proprietario (DB server)

8GB di RAM 3GB di HHDPhenom II X4 945 (4 x 3,0 Ghz)

Banda internet illimitata

89.671 Visite 1.000.627 Visite

Architettura

2006 2007 2008 2009 2010 2011

Hosting condiviso+MySQL7MB su Aruba da 35€ l’anno

Server Virtuale presso TOPIX Torino(front-end + DB Server)

4GB di RAM 1GB di HHD banda internet illimitata

Primo Server proprietario (front-end + DB Server)

Athlon II X4 635 (4 x 2.9Mhz)8GB di RAM 3GB di HHD

Banda internet illimitata

Secondo Server proprietario (DB server)

8GB di RAM 3GB di HHDPhenom II X4 945 (4 x 3,0 Ghz)

Banda internet illimitata

89.671 Visite 1.000.627 Visite 4.323.000 Visite 7.145.000 Visite

Architettura

2006 2007 2008 2009 2010 2011

Hosting condiviso+MySQL7MB su Aruba da 35€ l’anno

Server Virtuale presso TOPIX Torino(front-end + DB Server)

4GB di RAM 1GB di HHD banda internet illimitata

Primo Server proprietario (front-end + DB Server)

Athlon II X4 635 (4 x 2.9Mhz)8GB di RAM 3GB di HHD

Banda internet illimitata

Secondo Server proprietario (DB server)

8GB di RAM 3GB di HHDPhenom II X4 945 (4 x 3,0 Ghz)

Banda internet illimitata

89.671 Visite 1.000.627 Visite 4.323.000 Visite 7.145.000 Visite 9.655.308 Visite

Architettura

2006 2007 2008 2009 2010 2011

Hosting condiviso+MySQL7MB su Aruba da 35€ l’anno

Server Virtuale presso TOPIX Torino(front-end + DB Server)

4GB di RAM 1GB di HHD banda internet illimitata

Primo Server proprietario (front-end + DB Server)

Athlon II X4 635 (4 x 2.9Mhz)8GB di RAM 3GB di HHD

Banda internet illimitata

Secondo Server proprietario (DB server)

8GB di RAM 3GB di HHDPhenom II X4 945 (4 x 3,0 Ghz)

Banda internet illimitata

89.671 Visite 1.000.627 Visite 4.323.000 Visite 7.145.000 Visite 9.655.308 Visite 14..500.000 Visite

Architettura2012

Architettura2012

A giugno 2011 per garantire ancora più affidabilità e velocità di calcolo abbiamo scelto di cambiare ancora server e provider.

Il nuovo provider ci ha permesso di creare una nostra rete privata, connessa a internet, tramite l’utilizzo di uno switch dedicato al quale sono connessi solo i nostri server che sono rimasti 2 ma che sono cresciuti in potenza.

Adesso infatti disponiamo di 2 server dotati di 24GB di Ram e di processori Intel Xeon Quad-Core (x12) e dischi SAS da 300GB.

Questo ci ha consentito di superare i 100.000 utenti giornalieri di San Valentino. Da sempre il nostro tallone di achille sia per numero di visite che numero di accessi contemporanei.

Architettura

MemC

Redis

Architettura

audience

MemC

Redis

Architettura

audience

WebMemC

Redis

Architettura

DB Server

audience

WebMemC

Redis

Architettura

DB Server

audience

BackUp

WebMemC

Redis

Architettura

DB Server

audience

BackUp

Mobile

WebMemC

Redis

L’evoluzione dell’architettura

*

L’evoluzione dell’architettura

primo scenario (classico 2 livelli)

*

L’evoluzione dell’architettura

RDBMS

primo scenario (classico 2 livelli)

*

L’evoluzione dell’architettura

RDBMS

front-end

1front-end

2front-end

3front-end

...

primo scenario (classico 2 livelli)

*

L’evoluzione dell’architettura

API

RDBMS

front-end

1front-end

2front-end

3front-end

...

primo scenario (classico 2 livelli)

*

L’evoluzione dell’architettura

API

RDBMS

front-end

1front-end

2front-end

3front-end

...

primo scenario (classico 2 livelli)

memcache (in memory) + Redis (html)

*

L’evoluzione dell’architettura

API

RDBMS

front-end

1front-end

2front-end

3front-end

...

primo scenario (classico 2 livelli) secondo scenario (key-value 3 livelli)

memcache (in memory) + Redis (html)

*

L’evoluzione dell’architettura

API

RDBMS

front-end

1front-end

2front-end

3front-end

...

primo scenario (classico 2 livelli)

RDBMS

secondo scenario (key-value 3 livelli)

memcache (in memory) + Redis (html)

*

L’evoluzione dell’architettura

API

RDBMS

front-end

1front-end

2front-end

3front-end

...

primo scenario (classico 2 livelli)

RDBMS

front-end

1front-end

2front-end

3front-end

...

secondo scenario (key-value 3 livelli)

memcache (in memory) + Redis (html)

*

L’evoluzione dell’architettura

API

RDBMS

front-end

1front-end

2front-end

3front-end

...

primo scenario (classico 2 livelli)

API

RDBMS

front-end

1front-end

2front-end

3front-end

...

secondo scenario (key-value 3 livelli)

memcache (in memory) + Redis (html)

*

L’evoluzione dell’architettura

API

RDBMS

front-end

1front-end

2front-end

3front-end

...

primo scenario (classico 2 livelli)

API

RDBMS

front-end

1front-end

2front-end

3front-end

...

secondo scenario (key-value 3 livelli)

memcache (in memory) + Redis (html)memcache (in memory) + Redis (html)

*

in memory

L’evoluzione dell’architettura

API

RDBMS

front-end

1front-end

2front-end

3front-end

...

primo scenario (classico 2 livelli)

API

RDBMS

front-end

1front-end

2front-end

3front-end

...

secondo scenario (key-value 3 livelli)

memcache (in memory) + Redis (html)memcache (in memory) + Redis (html)

key-valye-DB

key-valye-DB

key-valye-DB

*

in memory

L’evoluzione dell’architettura

API

RDBMS

front-end

1front-end

2front-end

3front-end

...

primo scenario (classico 2 livelli)

API

RDBMS

front-end

1front-end

2front-end

3front-end

...

secondo scenario (key-value 3 livelli)

memcache (in memory) + Redis (html)memcache (in memory) + Redis (html)

key-valye-DB

Business Logic*

key-valye-DB

key-valye-DB

*Business Logic è lo strato che implementa la logica applicativa

L’evoluzione dell’architettura

L’evoluzione dell’architettura

NginxÈ un HTTP server con funzionalità di revers proxy. I test che stiamo portando avanti ci hanno dato ottimi risultati in termini di performance e stabilità nonchè in scalabilità.

L’evoluzione dell’architettura

NginxÈ un HTTP server con funzionalità di revers proxy. I test che stiamo portando avanti ci hanno dato ottimi risultati in termini di performance e stabilità nonchè in scalabilità.

PHP fast-cgiUsare PHP in questa modalità non lo rende più veloce ma ci offre la possibilità di isolare ilprocesso che non è più dipendente da Apache. Abbinato a Ngnix ci consente di creare e staticizzare parti di contenuto dinamico.

L’evoluzione dell’architettura

NginxÈ un HTTP server con funzionalità di revers proxy. I test che stiamo portando avanti ci hanno dato ottimi risultati in termini di performance e stabilità nonchè in scalabilità.

PHP fast-cgiUsare PHP in questa modalità non lo rende più veloce ma ci offre la possibilità di isolare ilprocesso che non è più dipendente da Apache. Abbinato a Ngnix ci consente di creare e staticizzare parti di contenuto dinamico.

RedisUsiamo redis per memorizzare l’HTML creato dinamicamente da PHP in modo da velocizzare ulteriormente il front-end e non dover richiedere ogni volta il contenuto dinamico a PHP

L’evoluzione dell’architettura

NginxÈ un HTTP server con funzionalità di revers proxy. I test che stiamo portando avanti ci hanno dato ottimi risultati in termini di performance e stabilità nonchè in scalabilità.

PHP fast-cgiUsare PHP in questa modalità non lo rende più veloce ma ci offre la possibilità di isolare ilprocesso che non è più dipendente da Apache. Abbinato a Ngnix ci consente di creare e staticizzare parti di contenuto dinamico.

RedisUsiamo redis per memorizzare l’HTML creato dinamicamente da PHP in modo da velocizzare ulteriormente il front-end e non dover richiedere ogni volta il contenuto dinamico a PHP

ma come funziona?

L’evoluzione dell’architettura

NginxÈ un HTTP server con funzionalità di revers proxy. I test che stiamo portando avanti ci hanno dato ottimi risultati in termini di performance e stabilità nonchè in scalabilità.

PHP fast-cgiUsare PHP in questa modalità non lo rende più veloce ma ci offre la possibilità di isolare ilprocesso che non è più dipendente da Apache. Abbinato a Ngnix ci consente di creare e staticizzare parti di contenuto dinamico.

RedisUsiamo redis per memorizzare l’HTML creato dinamicamente da PHP in modo da velocizzare ulteriormente il front-end e non dover richiedere ogni volta il contenuto dinamico a PHP

ma come funziona?

Nginx

L’evoluzione dell’architettura

NginxÈ un HTTP server con funzionalità di revers proxy. I test che stiamo portando avanti ci hanno dato ottimi risultati in termini di performance e stabilità nonchè in scalabilità.

PHP fast-cgiUsare PHP in questa modalità non lo rende più veloce ma ci offre la possibilità di isolare ilprocesso che non è più dipendente da Apache. Abbinato a Ngnix ci consente di creare e staticizzare parti di contenuto dinamico.

RedisUsiamo redis per memorizzare l’HTML creato dinamicamente da PHP in modo da velocizzare ulteriormente il front-end e non dover richiedere ogni volta il contenuto dinamico a PHP

ma come funziona?risponde a tutte le richieste HTTP al pari di Apache. Grazie alle sue caratteristiche di revers proxy è possibile scrivere HTML

statico e usare degli includes dinamici verso script PHPNginx

L’evoluzione dell’architettura

NginxÈ un HTTP server con funzionalità di revers proxy. I test che stiamo portando avanti ci hanno dato ottimi risultati in termini di performance e stabilità nonchè in scalabilità.

PHP fast-cgiUsare PHP in questa modalità non lo rende più veloce ma ci offre la possibilità di isolare ilprocesso che non è più dipendente da Apache. Abbinato a Ngnix ci consente di creare e staticizzare parti di contenuto dinamico.

RedisUsiamo redis per memorizzare l’HTML creato dinamicamente da PHP in modo da velocizzare ulteriormente il front-end e non dover richiedere ogni volta il contenuto dinamico a PHP

ma come funziona?risponde a tutte le richieste HTTP al pari di Apache. Grazie alle sue caratteristiche di revers proxy è possibile scrivere HTML

statico e usare degli includes dinamici verso script PHP

<!--#include virtual="/includes/title.php?$QUERY_STRING" -->

Nginx

L’evoluzione dell’architettura

NginxÈ un HTTP server con funzionalità di revers proxy. I test che stiamo portando avanti ci hanno dato ottimi risultati in termini di performance e stabilità nonchè in scalabilità.

PHP fast-cgiUsare PHP in questa modalità non lo rende più veloce ma ci offre la possibilità di isolare ilprocesso che non è più dipendente da Apache. Abbinato a Ngnix ci consente di creare e staticizzare parti di contenuto dinamico.

RedisUsiamo redis per memorizzare l’HTML creato dinamicamente da PHP in modo da velocizzare ulteriormente il front-end e non dover richiedere ogni volta il contenuto dinamico a PHP

ma come funziona?risponde a tutte le richieste HTTP al pari di Apache. Grazie alle sue caratteristiche di revers proxy è possibile scrivere HTML

statico e usare degli includes dinamici verso script PHP

<!--#include virtual="/includes/title.php?$QUERY_STRING" -->

Diciamo a Ngnix di andare a recuperare il contenuto dalla

pagina title.php passando anche i parametri che ci servono con ?

$QUERY_STRING

A questo punto PHP in modalità fast-cgi esegue lo script e

contestualmente crea la sezione HTML momorizzandola su Redis

Nginx

L’evoluzione dell’architettura

NginxÈ un HTTP server con funzionalità di revers proxy. I test che stiamo portando avanti ci hanno dato ottimi risultati in termini di performance e stabilità nonchè in scalabilità.

PHP fast-cgiUsare PHP in questa modalità non lo rende più veloce ma ci offre la possibilità di isolare ilprocesso che non è più dipendente da Apache. Abbinato a Ngnix ci consente di creare e staticizzare parti di contenuto dinamico.

RedisUsiamo redis per memorizzare l’HTML creato dinamicamente da PHP in modo da velocizzare ulteriormente il front-end e non dover richiedere ogni volta il contenuto dinamico a PHP

ma come funziona?risponde a tutte le richieste HTTP al pari di Apache. Grazie alle sue caratteristiche di revers proxy è possibile scrivere HTML

statico e usare degli includes dinamici verso script PHP

<!--#include virtual="/includes/title.php?$QUERY_STRING" -->

Diciamo a Ngnix di andare a recuperare il contenuto dalla

pagina title.php passando anche i parametri che ci servono con ?

$QUERY_STRING

A questo punto PHP in modalità fast-cgi esegue lo script e

contestualmente crea la sezione HTML momorizzandola su Redis

La seconda volta che il contenuto viene richiesto Nginx non lo chiede a PHP ma

direttamente a Redis che lo eroga fino alla sua scadenza. Terminata la cache il giro ricomincia.

Nginx

le metriche

03/2007 03/2008 03/2009 03/2010 03/2011 03/2012

Utenti registrati 1.357 5.104 11.689 20.000 41.600 68.500

Visitatori 54.461 277.124 603.019 850.000 1.400.000 2.200.000

Pagine Viste 140.000 630.000 1.200.000 1.700.000 3.000.000 4.500.000

Commenti 1.459 8.657 21.105 40.500 76.500 135.000

Grazie

Domande?

Grazie

Domande?

Grazie

Stage?

Se sei interessato ad un periodo di stage con noi scrivi a redazione@2spaghi.it

Diventa Fan

http://www.facebook.com/2Spaghi