Autore del libro: Cal Henderson
Editore: O'Reilly
Recensione di: Cosimo
Giudizio:
Data: 21/10/2006
Lo strillo in copertina dice "The Flickr Way".
Infatti il libro spiega tutta una serie di soluzioni tecniche mirate
all'ottimizzazione delle prestazioni e alla scalabilità, che derivano
dall'esperienza dell'autore Cal Henderson come capo progetto di
Flickr.
Per i pochi che non lo sapessero, Flickr, acquistato di recente da
Yahoo, è uno dei maggiori siti web di photo-sharing.
L'argomento principale è la scalabilità, che molto spesso
viene confusa con la prestazione pura. Un sistema scalabile non è necessariamente
un sistema veloce.
Per scalabilità si intende l'abilità di un'architettura o di un sistema
nel mantenere lo stesso livello di prestazioni al crescere dell'utilizzo e/o della
base dati e rimanere nel contempo gestibile.
L'autore sostiene (e a ragione!) che scalabilità non significa
necessariamente utilizzare Java. Sfatiamo questi falsi miti!
Sistemi scalabili sono stati e possono essere scritti in qualsiasi linguaggio,
compilato o interpretato che sia.
11 capitoli per un totale di 330 pagine in cui la progettazione e lo
sviluppo delle applicazioni web sono affrontate da tutti i possibili punti
di vista. Ad esempio, la gestione dell'hardware necessario, e i modi in
cui l'hardware deve supportare la nostra applicazione al crescere della
mole di utenti.
Progettare una buona applicazione quindi puo' voler dire curarsi di
aspetti quali i tempi di approvvigionamento dei propri fornitori di
hardware, l'utilizzo di un data center, una rete elettrica e una
connessione a internet di backup.
Chi ha un'esperienza di lavoro in team alle spalle, apprezzerà sicuramente il capitolo 3, interamente dedicato agli ambienti di sviluppo, in cui vengono enunciate e spiegate in dettaglio le tre leggi fondamentali:
L'aspetto secondo me più interessante di questo libro è che fornisce delle linee guida valide sia che l'applicazione da gestire abbia 10 utenti, sia che ne abbia 10 mila! In questo modo si puo' imparare a prevedere efficacemente la crescita della propria applicazione di diversi ordini di grandezza. Il che non è detto che avvenga necessariamente... :-)
Altri capitoli riguardano internazionalizzazione, localizzazione e unicode,
integrità e sicurezza dei dati, con particolare attenzione alle problematiche
di Cross Site Scripting e SQL Injection, invio e ricezione automatici
di email e web services.
In ogni capitolo, l'argomento viene spiegato in dettaglio, con parole semplici
e pochi tecnicismi, e dove rilevante, con degli esempi pratici e
riferimenti a moduli o script in PHP e Perl e qualche volta
anche Ruby, Python o altri linguaggi.
Parte rilevante del libro sono i due capitoli sull'analisi delle prestazioni
di un'applicazione web, tutt'altro che banale, e sulle statistiche e il monitoraggio.
Per capire dove un'applicazione "perde" tempo è necessario il profiling
del proprio codice e, se presente, del motore database che si utilizza.
L'autore spiega come individuare i potenziali colli di bottiglia, sia hardware
che software e fornisce utili suggerimenti su come poter intervenire.
Consiglio la lettura a sviluppatori web o responsabili di sviluppo alla ricerca di una visione più ampia del proprio lavoro. Potranno fare tesoro della preziosa esperienza fatta da Henderson durante lo sviluppo (e la crescita) di Flickr.