Presentazione 2 Spaghi

393 views

Published on

La case history di 2 Spaghi

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
393
On SlideShare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
15
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Presentazione 2 Spaghi

  1. 1. Trova e Condividi i tuoi ristoranti preferiti
  2. 2. come nasce? L’idea di 2Spaghi nasce dall’ispirazione di popolari servizi Web2.0 USAun posto dove salvare totalmente guidato dai contenuti i propri ristoranti democratico ed user- generati dagli utenti preferiti centrico Obiettivo? scoprire nuovi posti dove mangiare
  3. 3. la vision2Spaghi nasce con lobiettivo di creare un luogo chediventi 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.
  4. 4. il lancio: luglio 2006Le 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
  5. 5. 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 concessionariaProgetti speciali: lancio del film Nero Bifamiliare con i ristoranti preferiti dei protagonisti
  6. 6. il mercato di riferimento
  7. 7. un caso di successo: Booking onlineA Dicembre del 2009 abbiamo lanciato il primoservizio di prenotazione online su tutti iristoranti (oltre 50.000) in Italia come serviziodedicato agli utenti e completamente free.Gli utenti lo hanno giudicato: 1. Comodo 2. Veloce 3. Gratuito +32.000 prenotazioni entrate +143.000 coperti prenotati
  8. 8. la SpagoGuida 201113 Novembre 2010 è uscita in libreria laSpagoGuida, la prima guida ai ristorantiinteramente creata grazie alle recensionidegli utenti
  9. 9. 2Spaghi Mobile APPS165.000 app scaricate 65.000 app scaricate
  10. 10. 2Spaghi Mobile APPSiPhone 165.000 app scaricate 65.000 app scaricate
  11. 11. 2Spaghi Mobile APPSiPhone 165.000 app scaricate Android 65.000 app scaricate
  12. 12. 2Spaghi Mobile APPSiPhone 165.000 app scaricate Android 65.000 app scaricate
  13. 13. 2Spaghi Mobile APPSiPhone 165.000 app scaricate Android 65.000 app scaricate
  14. 14. 2Spaghi Mobile APPSiPhone 165.000 app scaricate Android 65.000 app scaricate
  15. 15. 2Spaghi Mobile APPSiPhone 165.000 app scaricate Android 65.000 app scaricate
  16. 16. 2Spaghi Mobile APPS 230.000 app scaricateiPhone 165.000 app scaricate Android 65.000 app scaricate
  17. 17. Deal(nelle(pagine(dei(ristoran=.( riguardano(il(ristorante(selezionato,(( ristoran=(vicini(o(simili.(( 2Spaghi(u=lizza(una(piaEaforma( SPAGOBOX( di(backoffice(proprietaria(aEraverso(acquistabile(on5line(e(nella(GDO( la(quale(possiamo( Cena(scontata(in(un(ristorante( Visualizzare(i(deal(presen=(sul(( aderente(al(circuito.( gruppo(d’acquisto( EffeEuate(tuEe(le(associazioni( Collaborazione(commerciale(tra( 2Spaghi(e(gruppi(d’acquisto((
  18. 18. Piattaforma
  19. 19. Piattaforma2Spaghi ha scelto LAMP come piattaforma dierogazione dei suoi servizi web.La scelta è stata strategica perchè offre ampiaversatilità, grande scalabilità e performance elevate.
  20. 20. Piattaforma Perchè?
  21. 21. Piattaforma
  22. 22. PiattaformaLinux e ubuntu server 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.Apache MySQL PHP
  23. 23. Platform
  24. 24. PlatformApache 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 ;-)MySQL PHP Linux
  25. 25. Piattaforma
  26. 26. PiattaformaMySQL Rappresenta lo standard nel mondo dei DataBase relazionali OpenSource.Avaro di risorse (CPU) va configurato con attenzione (tuning) per evitare crolliimprovvisi e lock-table indesiderati.Le nuove versioni, a differenza delle precedenti, consentono una maggiorescalabilità (cluster, master/slave).È sempre meglio avere un DB server dedicato!PHP Linux Apache
  27. 27. Piattaforma
  28. 28. PiattaformaPHPIl linguaggi client-server più usato sul web e dal mondo Open Source nelle sueversioni 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 diproduzione rappresentano i suoi punti di forza.Stabilità e sicurezza lo rendono poi l’alleato ideale anche per architetture piùcomplesse.Linux Apache MySQL
  29. 29. Architettura
  30. 30. Architettura2006 2007 2008 2009 2010 2011
  31. 31. ArchitetturaHosting condiviso+MySQL7MB su Aruba da 35€ l’anno 2006 2007 2008 2009 2010 2011
  32. 32. Architettura Server Virtuale presso TOPIX Torino (front-end + DB Server) 4GB di RAM 1GB di HHDHosting condiviso+MySQL7MB su Aruba banda internet illimitata da 35€ l’anno 2006 2007 2008 2009 2010 2011
  33. 33. Architettura Primo Server proprietario (front-end + DB Server) Server Virtuale presso TOPIX Torino Athlon II X4 635 (4 x 2.9Mhz) (front-end + DB Server) 8GB di RAM 3GB di HHD 4GB di RAM 1GB di HHD Banda internet illimitataHosting condiviso+MySQL7MB su Aruba banda internet illimitata da 35€ l’anno 2006 2007 2008 2009 2010 2011
  34. 34. Architettura Secondo Server proprietario (DB server) Primo Server proprietario 8GB di RAM 3GB di HHD (front-end + DB Server) Phenom II X4 945 (4 x 3,0 Ghz) Server Virtuale presso TOPIX Torino Athlon II X4 635 (4 x 2.9Mhz) Banda internet illimitata (front-end + DB Server) 8GB di RAM 3GB di HHD 4GB di RAM 1GB di HHD Banda internet illimitataHosting condiviso+MySQL7MB su Aruba banda internet illimitata da 35€ l’anno 2006 2007 2008 2009 2010 2011
  35. 35. Architettura Secondo Server proprietario (DB server) Primo Server proprietario 8GB di RAM 3GB di HHD (front-end + DB Server) Phenom II X4 945 (4 x 3,0 Ghz) Server Virtuale presso TOPIX Torino Athlon II X4 635 (4 x 2.9Mhz) Banda internet illimitata (front-end + DB Server) 8GB di RAM 3GB di HHD 4GB di RAM 1GB di HHD Banda internet illimitataHosting condiviso+MySQL7MB su Aruba banda internet illimitata da 35€ l’anno 2006 2007 2008 2009 2010 2011 89.671 Visite
  36. 36. Architettura Secondo Server proprietario (DB server) Primo Server proprietario 8GB di RAM 3GB di HHD (front-end + DB Server) Phenom II X4 945 (4 x 3,0 Ghz) Server Virtuale presso TOPIX Torino Athlon II X4 635 (4 x 2.9Mhz) Banda internet illimitata (front-end + DB Server) 8GB di RAM 3GB di HHD 4GB di RAM 1GB di HHD Banda internet illimitataHosting condiviso+MySQL7MB su Aruba banda internet illimitata da 35€ l’anno 2006 2007 2008 2009 2010 2011 89.671 Visite 1.000.627 Visite
  37. 37. Architettura Secondo Server proprietario (DB server) Primo Server proprietario 8GB di RAM 3GB di HHD (front-end + DB Server) Phenom II X4 945 (4 x 3,0 Ghz) Server Virtuale presso TOPIX Torino Athlon II X4 635 (4 x 2.9Mhz) Banda internet illimitata (front-end + DB Server) 8GB di RAM 3GB di HHD 4GB di RAM 1GB di HHD Banda internet illimitataHosting condiviso+MySQL7MB su Aruba banda internet illimitata da 35€ l’anno 2006 2007 2008 2009 2010 2011 89.671 Visite 1.000.627 Visite 4.323.000 Visite
  38. 38. Architettura Secondo Server proprietario (DB server) Primo Server proprietario 8GB di RAM 3GB di HHD (front-end + DB Server) Phenom II X4 945 (4 x 3,0 Ghz) Server Virtuale presso TOPIX Torino Athlon II X4 635 (4 x 2.9Mhz) Banda internet illimitata (front-end + DB Server) 8GB di RAM 3GB di HHD 4GB di RAM 1GB di HHD Banda internet illimitataHosting condiviso+MySQL7MB su Aruba banda internet illimitata da 35€ l’anno 2006 2007 2008 2009 2010 2011 89.671 Visite 1.000.627 Visite 4.323.000 Visite 7.145.000 Visite
  39. 39. Architettura Secondo Server proprietario (DB server) Primo Server proprietario 8GB di RAM 3GB di HHD (front-end + DB Server) Phenom II X4 945 (4 x 3,0 Ghz) Server Virtuale presso TOPIX Torino Athlon II X4 635 (4 x 2.9Mhz) Banda internet illimitata (front-end + DB Server) 8GB di RAM 3GB di HHD 4GB di RAM 1GB di HHD Banda internet illimitataHosting condiviso+MySQL7MB su Aruba banda internet illimitata da 35€ l’anno 2006 2007 2008 2009 2010 2011 89.671 Visite 1.000.627 Visite 4.323.000 Visite 7.145.000 Visite 9.655.308 Visite
  40. 40. Architettura Secondo Server proprietario (DB server) Primo Server proprietario 8GB di RAM 3GB di HHD (front-end + DB Server) Phenom II X4 945 (4 x 3,0 Ghz) Server Virtuale presso TOPIX Torino Athlon II X4 635 (4 x 2.9Mhz) Banda internet illimitata (front-end + DB Server) 8GB di RAM 3GB di HHD 4GB di RAM 1GB di HHD Banda internet illimitataHosting condiviso+MySQL7MB su Aruba banda internet illimitata da 35€ l’anno 2006 2007 2008 2009 2010 2011 89.671 Visite 1.000.627 Visite 4.323.000 Visite 7.145.000 Visite 9.655.308 Visite 14..500.000 Visite
  41. 41. Architettura 2012
  42. 42. Architettura 2012A giugno 2011 per garantire ancora più affidabilità e velocità di calcoloabbiamo scelto di cambiare ancora server e provider.Il nuovo provider ci ha permesso di creare una nostra rete privata, connessa ainternet, tramite l’utilizzo di uno switch dedicato al quale sono connessi solo inostri server che sono rimasti 2 ma che sono cresciuti in potenza.Adesso infatti disponiamo di 2 server dotati di 24GB di Ram e di processoriIntel Xeon Quad-Core (x12) e dischi SAS da 300GB.Questo ci ha consentito di superare i 100.000 utenti giornalieri di SanValentino. Da sempre il nostro tallone di achille sia per numero di visite chenumero di accessi contemporanei.
  43. 43. Architettura MemC Redis
  44. 44. Architettura MemCaudience Redis
  45. 45. Architettura Web MemCaudience Redis
  46. 46. Architettura Web MemCaudience Redis DB Server
  47. 47. Architettura Web MemCaudience Redis DB Server BackUp
  48. 48. Architettura Web MemCaudience Redis DB Server Mobile BackUp
  49. 49. L’evoluzione dell’architettura*
  50. 50. L’evoluzione dell’architetturaprimo scenario (classico 2 livelli) *
  51. 51. L’evoluzione dell’architetturaprimo scenario (classico 2 livelli) RDBMS *
  52. 52. L’evoluzione dell’architettura primo scenario (classico 2 livelli)front-end front-end front-end front-end 1 2 3 ... RDBMS *
  53. 53. L’evoluzione dell’architettura primo scenario (classico 2 livelli)front-end front-end front-end front-end 1 2 3 ... API RDBMS *
  54. 54. L’evoluzione dell’architettura primo scenario (classico 2 livelli)front-end front-end front-end front-end 1 2 3 ...memcache (in memory) + Redis (html) API RDBMS *
  55. 55. L’evoluzione dell’architettura primo scenario (classico 2 livelli) secondo scenario (key-value 3 livelli)front-end front-end front-end front-end 1 2 3 ...memcache (in memory) + Redis (html) API RDBMS *
  56. 56. L’evoluzione dell’architettura primo scenario (classico 2 livelli) secondo scenario (key-value 3 livelli)front-end front-end front-end front-end 1 2 3 ...memcache (in memory) + Redis (html) API RDBMS RDBMS *
  57. 57. L’evoluzione dell’architettura primo scenario (classico 2 livelli) secondo scenario (key-value 3 livelli)front-end front-end front-end front-end front-end front-end front-end front-end 1 2 3 ... 1 2 3 ...memcache (in memory) + Redis (html) API RDBMS RDBMS *
  58. 58. L’evoluzione dell’architettura primo scenario (classico 2 livelli) secondo scenario (key-value 3 livelli)front-end front-end front-end front-end front-end front-end front-end front-end 1 2 3 ... 1 2 3 ...memcache (in memory) + Redis (html) API API RDBMS RDBMS *
  59. 59. L’evoluzione dell’architettura primo scenario (classico 2 livelli) secondo scenario (key-value 3 livelli)front-end front-end front-end front-end front-end front-end front-end front-end 1 2 3 ... 1 2 3 ...memcache (in memory) + Redis (html) memcache (in memory) + Redis (html) API API RDBMS RDBMS *
  60. 60. L’evoluzione dell’architettura primo scenario (classico 2 livelli) secondo scenario (key-value 3 livelli)front-end front-end front-end front-end front-end front-end front-end front-end 1 2 3 ... 1 2 3 ...memcache (in memory) + Redis (html) memcache (in memory) + Redis (html) API API RDBMS key-valye- key-valye- key-valye- RDBMS DB DB DB in memory *
  61. 61. L’evoluzione dell’architettura primo scenario (classico 2 livelli) secondo scenario (key-value 3 livelli)front-end front-end front-end front-end front-end front-end front-end front-end 1 2 3 ... 1 2 3 ...memcache (in memory) + Redis (html) memcache (in memory) + Redis (html) API API Business Logic* RDBMS key-valye- key-valye- key-valye- RDBMS DB DB DB in memory * Business Logic è lo strato che implementa la logica applicativa
  62. 62. L’evoluzione dell’architettura
  63. 63. L’evoluzione dell’architetturaNginxÈ un HTTP server con funzionalitàdi revers proxy. I test che stiamoportando avanti ci hanno datoottimi risultati in termini diperformance e stabilità nonchè inscalabilità.
  64. 64. L’evoluzione dell’architetturaNginx PHP fast-cgiÈ un HTTP server con funzionalità Usare PHP in questa modalitàdi revers proxy. I test che stiamo non lo rende più veloce ma ciportando avanti ci hanno dato offre la possibilità di isolareottimi risultati in termini di ilprocesso che non è piùperformance e stabilità nonchè in dipendente da Apache.scalabilità. Abbinato a Ngnix ci consente di creare e staticizzare parti di contenuto dinamico.
  65. 65. L’evoluzione dell’architetturaNginx PHP fast-cgi RedisÈ un HTTP server con funzionalità Usare PHP in questa modalità Usiamo redis per memorizzaredi revers proxy. I test che stiamo non lo rende più veloce ma ci l’HTML creato dinamicamente daportando avanti ci hanno dato offre la possibilità di isolare PHP in modo da velocizzareottimi risultati in termini di ilprocesso che non è più ulteriormente il front-end e nonperformance e stabilità nonchè in dipendente da Apache. dover richiedere ogni volta ilscalabilità. Abbinato a Ngnix ci consente di contenuto dinamico a PHP creare e staticizzare parti di contenuto dinamico.
  66. 66. L’evoluzione dell’architetturaNginx PHP fast-cgi RedisÈ un HTTP server con funzionalità Usare PHP in questa modalità Usiamo redis per memorizzaredi revers proxy. I test che stiamo non lo rende più veloce ma ci l’HTML creato dinamicamente daportando avanti ci hanno dato offre la possibilità di isolare PHP in modo da velocizzareottimi risultati in termini di ilprocesso che non è più ulteriormente il front-end e nonperformance e stabilità nonchè in dipendente da Apache. dover richiedere ogni volta ilscalabilità. Abbinato a Ngnix ci consente di contenuto dinamico a PHP creare e staticizzare parti di contenuto dinamico. ma come funziona?
  67. 67. L’evoluzione dell’architetturaNginx PHP fast-cgi RedisÈ un HTTP server con funzionalità Usare PHP in questa modalità Usiamo redis per memorizzaredi revers proxy. I test che stiamo non lo rende più veloce ma ci l’HTML creato dinamicamente daportando avanti ci hanno dato offre la possibilità di isolare PHP in modo da velocizzareottimi risultati in termini di ilprocesso che non è più ulteriormente il front-end e nonperformance e stabilità nonchè in dipendente da Apache. dover richiedere ogni volta ilscalabilità. Abbinato a Ngnix ci consente di contenuto dinamico a PHP creare e staticizzare parti di contenuto dinamico. ma come funziona? Nginx
  68. 68. L’evoluzione dell’architetturaNginx PHP fast-cgi RedisÈ un HTTP server con funzionalità Usare PHP in questa modalità Usiamo redis per memorizzaredi revers proxy. I test che stiamo non lo rende più veloce ma ci l’HTML creato dinamicamente daportando avanti ci hanno dato offre la possibilità di isolare PHP in modo da velocizzareottimi risultati in termini di ilprocesso che non è più ulteriormente il front-end e nonperformance e stabilità nonchè in dipendente da Apache. dover richiedere ogni volta ilscalabilità. Abbinato a Ngnix ci consente di contenuto dinamico a PHP creare e staticizzare parti di contenuto dinamico. ma come funziona? risponde a tutte le richieste HTTP al pari di Apache. Grazie alle sue caratteristiche di revers proxy è possibile scrivere HTML Nginx statico e usare degli includes dinamici verso script PHP
  69. 69. L’evoluzione dell’architetturaNginx PHP fast-cgi RedisÈ un HTTP server con funzionalità Usare PHP in questa modalità Usiamo redis per memorizzaredi revers proxy. I test che stiamo non lo rende più veloce ma ci l’HTML creato dinamicamente daportando avanti ci hanno dato offre la possibilità di isolare PHP in modo da velocizzareottimi risultati in termini di ilprocesso che non è più ulteriormente il front-end e nonperformance e stabilità nonchè in dipendente da Apache. dover richiedere ogni volta ilscalabilità. Abbinato a Ngnix ci consente di contenuto dinamico a PHP creare e staticizzare parti di contenuto dinamico. ma come funziona? risponde a tutte le richieste HTTP al pari di Apache. Grazie alle sue caratteristiche di revers proxy è possibile scrivere HTML Nginx statico e usare degli includes dinamici verso script PHP <!--#include virtual="/includes/title.php?$QUERY_STRING" -->
  70. 70. L’evoluzione dell’architetturaNginx PHP fast-cgi RedisÈ un HTTP server con funzionalità Usare PHP in questa modalità Usiamo redis per memorizzaredi revers proxy. I test che stiamo non lo rende più veloce ma ci l’HTML creato dinamicamente daportando avanti ci hanno dato offre la possibilità di isolare PHP in modo da velocizzareottimi risultati in termini di ilprocesso che non è più ulteriormente il front-end e nonperformance e stabilità nonchè in dipendente da Apache. dover richiedere ogni volta ilscalabilità. Abbinato a Ngnix ci consente di contenuto dinamico a PHP creare e staticizzare parti di contenuto dinamico. ma come funziona? risponde a tutte le richieste HTTP al pari di Apache. Grazie alle sue caratteristiche di revers proxy è possibile scrivere HTML Nginx statico e usare degli includes dinamici verso script PHP Diciamo a Ngnix di andare a recuperare il contenuto dalla pagina title.php passando anche i <!--#include virtual="/includes/title.php?$QUERY_STRING" --> 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
  71. 71. L’evoluzione dell’architetturaNginx PHP fast-cgi RedisÈ un HTTP server con funzionalità Usare PHP in questa modalità Usiamo redis per memorizzaredi revers proxy. I test che stiamo non lo rende più veloce ma ci l’HTML creato dinamicamente daportando avanti ci hanno dato offre la possibilità di isolare PHP in modo da velocizzareottimi risultati in termini di ilprocesso che non è più ulteriormente il front-end e nonperformance e stabilità nonchè in dipendente da Apache. dover richiedere ogni volta ilscalabilità. Abbinato a Ngnix ci consente di contenuto dinamico a PHP creare e staticizzare parti di contenuto dinamico. ma come funziona? risponde a tutte le richieste HTTP al pari di Apache. Grazie alle sue caratteristiche di revers proxy è possibile scrivere HTML Nginx statico e usare degli includes dinamici verso script PHP Diciamo a Ngnix di andare a recuperare il contenuto dalla pagina title.php passando anche i <!--#include virtual="/includes/title.php?$QUERY_STRING" --> parametri che ci servono con ? $QUERY_STRING La seconda volta che il contenuto viene richiesto Nginx non lo chiede a PHP ma A questo punto PHP in modalità direttamente a Redis che lo eroga fino alla sua fast-cgi esegue lo script e scadenza. Terminata la cache il giro ricomincia. contestualmente crea la sezione HTML momorizzandola su Redis
  72. 72. le metriche 03/2007 03/2008 03/2009 03/2010 03/2011 03/2012Utenti 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
  73. 73. Grazie
  74. 74. GrazieDomande?
  75. 75. Domande?
  76. 76. Stage?Se sei interessato ad un periodo di stage con noi scrivi a redazione@2spaghi.it Diventa Fan http://www.facebook.com/2Spaghi

×