|
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:
- "Use source control"
- "Have a one-step build"
- "Track your bugs"
Chiaramente, si puo' anche non essere d'accordo, ma per un'applicazione complessa
è d'obbligo adottare almeno due di queste "regole". Sul sistema di source control, tutti siamo d'accordo. Personalmente lo trovo irrinunciabile ormai.
Un processo di build tipo one-step è uno strumento che possa essere
utilizzato dagli sviluppatori per aggiornare l'applicazione in produzione
partendo dai sorgenti rilasciati, che funzioni automaticamente, senza
intervento manuale.
Gestire i difetti dell'applicazione è chiaramente necessario, anche
quando l'applicazione è semplice. Il bug tracking di CPAN
in questo senso è un ottimo esempio.
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.
Conclusioni
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.
Pro
- Un condensato dell'esperienza pratica del gigante Flickr, che puo' essere
utile allo scriptino PHP quanto alla complessa web application.
- Copre la gestione di un'applicazione a 360°, progetto, sviluppo, deployment,
forniture hardware, data center... Tutto.
- Linguaggio semplice e chiaro. Nessuna volontà di tecnicismo.
Contro
|