Presentazione 2 Spaghi
-
Upload
universita-di-milano -
Category
Documents
-
view
322 -
download
2
description
Transcript of Presentazione 2 Spaghi
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
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 [email protected]
Diventa Fan
http://www.facebook.com/2Spaghi