Il TRAUMA PSICOLOGICO NELLO SVILUPPO DEL BAMBINO

CAD
SVILUPPO
La nuvola elastica di Amazon
GIOCHI
RUBRICHE
Di Michele Costabile
Un servizio che permette
di avere una presenza
web sempre adeguata
al traffico generato, senza
acquistare un server.
Dopo
la registrazione
per il servizio
abbiamo
a disposizione
parecchia
documentazione
per iniziare
il nostro
progetto.
N
el numero precedente abbiamo
parlato di Amazon S3, Ec2, Sqs
e SimpleDB, un catalogo di servizi
da considerare fra le diverse opzioni
per la creazione di applicazioni sul
Web. I servizi di Amazon sono pensati per dare agli sviluppatori un’opportunità di avere una presenza ricca sul web, senza investire in un server di proprietà e senza la rigidità di
un servizio pensato solo per la pubblicazione.
Per spiegarci in due parole, l’offerta
di Amazon consiste di quattro filoni
principali: macchine virtuali in diverse varianti di Unix (Ec2), spazio
su disco (S3), accodamento di messaggi (Sqs) e un semplice database
(SimpleDB) con un modello di fatturazione a consumo.
Collettivamente questi servizi sono
indicati col nome di Aws (Amazon
Web Services), mentre le sigle stanno per Electric Compute Cloud (Ecc)
Simple Storage Services (S3) e Simple Queue Services (Sqs).
I servizi accessori
S3 crea la base per tutti gli altri servizi offrendo le funzioni minime per
la memorizzazione di dati. I prezzi
sono abbastanza abbordabili. Il calcolatore per il calcolo delle ipotesi di
spesa che troviamo all’indirizzo calculator.s3.amazonaws.com/calc5.ht
ml ci fa un preventivo di $3,80 nell’ipotesi di uno spazio occupato medio
mensile di 2 GByte, un trasferimento
di dati in ingresso e in uscita di uno
e dieci GByte rispettivamente per un
migliaio di richieste di consultazione. Non c’è un limite allo spazio occupato e non c’è limite per le dimensioni dei file da immagazzinare.
Sqs è un semplice servizio di accodamento di messaggi, un sistema
per la memorizzazione di richieste di
calcolo semplice e efficace, che ha
preceduto di molti anni i database
nella timeline delle tecnologie informatiche per l’elaborazione dei dati.
Quando occorre inserire una registrazione in prima nota o tenere traccia di una spesa, si può usare l’accodamento di un messaggio al posto di
una transazione interattiva in tempo
reale con la certezza che il messaggio può essere recapitato anche
quando il sistema che lo deve ricevere non è in linea e che la consegna
avverrà una e una sola volta.
SimpleDB è quello che dice il nome,
un sistema per la memorizzazione di
dati strutturati che imita un database. L’interfaccia non è Sql, ma si basa su comandi proprietari, come Get,
Put e Dolete.
Le interrogazioni sono eseguite con
un comando Query, che permette test di uguaglianza e di confronto,
214
PC Professionale - Luglio/Agosto 2008
consente di unire condizioni con
And e Or e ha gli operatori Intersection e Union per offrire una parte
della potenza di Sql.
Ognuno di questi servizi può essere
acquistato separatamente e utilizzato da un client situato in un punto
qualsiasi di Internet. Per esempio, si
può ovviare alle limitazioni di un
contratto web con spazio limitato
mettendo i file più grossi, come i video, in Amazon S3.
La nube elastica
di computer
Amazon Ec2 è il servizio che ci interessa di più in questa sezione della rivista, dato che è quello che può
dare il motore a tutti gli altri servizi
di memorizzazione dei dati per
creare applicazioni.
Come abbiamo detto, al cuore di
Ec2 c’è la scelta, la configurazione e
l’attivazione di un’immagine di una
macchina virtuale, conservata in
uno spazio S3. Si può scegliere l’immagine preferita fra le molte configurazioni precostituite, oppure configurare la propria versione.
Di ogni macchina virtuale si possono scegliere diverse misure, come
RUBRICHE
SVILUPPO
le magliette, dalla small, con 1,7
GByte di memoria, un processore e
160 GByte di disco, alla extra large
con 7 GByte di memoria, otto processori virtuali e 1690 GByte di spazio su disco.
Si può decidere di volta in volta che
tipo di macchina allocare per le esigenze di processing del momento.
Le macchine virtuali possono essere attivate in più copie e anche distribuite geograficamente sui server
di Amazon in diverse locazioni.
Quasi tutti i sistemi a disposizione
sono varianti di Unix. Troviamo diverse versioni e configurazioni di
Linux: Fedora Core, Ubuntu e a
farla da padrone, ma anche Open
Solaris corredato di ambiente Java
e dell’ottimo server Glassfish. C’è
un tutorial che mostra come installare Window Server in un emulatore (www.howtoforge.com/amazon_elastic_compute_cloud_qem),
ma due livelli di emulazione ci
paiono davvero un’esagerazione.
Dove sta il bello
Il fascino della soluzione sta nel fatto che si ha la possibilità di configurare la propria macchina virtuale
come si preferisce scegliendo in
completa libertà il linguaggio e il
framework da usare per lo sviluppo
ma senza impegnarsi nell’acquisto
di un server.
Il biglietto di ingresso è basso perché l’uso di una macchina per un
paio di giorni costa meno di cinque
dollari e si paga solo per il periodo
di effettivo uso.
È interessante la possibilità di sperimentare sistemi operativi, framework e altre configurazioni senza spendere cifre sostanziali, almeno fino a che il traffico resta basso,
come su un sistema di prova.
Si può pensare anche di armare
una batteria di configurazioni alternative per uno studio di fattibilità o
una scelta architetturale senza perdere tempo ad aspettare l’arrivo di
sistemi reali e senza dover trovare
un posto alle macchine al termine
della prova. Uno dei vantaggi delle
macchine virtuali di Ec2 è che cessano di esistere e di costare appena
sono spente.
Quando il traffico comincia a salire,
naturalmente sale anche la bolletta
di Amazon, però abbiamo la possi-
bilità di moltiplicare le macchine
virtuali in uso per creare un datacenter abbastanza agguerrito da
sopportare una citazione sulla home page di Msn o Slashdot.
Il caso più eclatante è quello di
Animoto.com, un servizio che fa il
montaggio di una sequenza di fotografie in un film. Grazie al passaparola su Facebook, Animoto è
passata da 25.000 a 250.000 utenti
in tre giorni con 20.000 nuove registrazioni ogni ora.
In un post sul blog della società sono citate cifre impressionanti, come
un picco di 25.000 utenti contemporanei per ora.
Lo storage di Animoto è in S3, grazie a questo, i responsabili della società non hanno avuto il problema
di riorganizzare i sistemi per fare
fronte al successo insperato e hanno potuto concentrarsi sulla stabilità dell’applicazione, che ha mostrato immediatamente tutti i bug
più nascosti sotto il nuovo carico.
Un ultimo punto di interesse per le
grandi aziende sta nel fatto che
Amazon ha creato un servizio di assistenza a pagamento, che sicuramente viene incontro alle esigenze
di affidabilità degli utenti corporate,
che possono prendere una decisione
con maggiore leggerezza se viene
schivata l’obiezione di imbarcarsi in
un progetto basato sul fai da te.
Insomma, abbiamo visto diverse interessanti opportunità in questi servizi di Amazon, quindi siamo andati più a fondo per sperimentare dove stanno i difetti.
Prepariamoci
per lavorare
Per iniziare a registrarci per l’uso di
Amazon Elastic Compute Cloud dovremo registrarci e indicare un numero di carta di credito per la fatturazione. L’operazione è semplicissima per chi ha già un account utente
su Amazon: in ogni caso occorre registrarsi per usare Ec2 e gli altri servizi, ma i dati di pagamento possono
essere gli stessi dell’account standard. Un account non comporta nessuna spesa: la carta di credito viene
caricata solo delle spese dovute a un
consumo effettivo di risorse.
Durante la registrazione viene creato un certificato e una chiave per la
crittografia che dovremo usare in seguito per accedere al servizio.
Gli strumenti necessari per configurare e pilotare i sistemi virtuali sono
a disposizione nello spazio dedicato
alle risorse per l’uso dei servizi:
aws.amazon.com/resources.
L’installazione è semplicissima: occorre semplicemente decomprimere
l’archivio zip in cui sono distribuiti in
una directory qualsiasi e impostare
una variabile per puntare alla directory di installazione con il comando
$ export EC2_HOME=<path-to-tools>
su Unix, oppure su Windows.
C:\> set EC2_HOME=<path-to-tools>
Bisogna aggiungere alla variabile
PATH l’indirizzo della directory bin
Si può fare
una stima di
quanto sarà
la nostra spesa
utilizzando
il calcolatore
JavaScript
che troviamo
all’indirizzo
calculator.s3.am
azonaws.com/ca
lc5.html
215
PC Professionale - Luglio/Agosto 2008
RUBRICHE
SVILUPPO
all’interno della cartella che ospita
gli strumenti e l’installazione è terminata. Il dialogo fra il codice locale e il data center viene autenticato
dal certificato che abbiamo scaricato durante la registrazione per l’uso del servizio, bisogna quindi
informare il codice della posizione
del certificato e della chiave pubblica. In questo esempio chiameremo cert-XYZ.pem il certificato e
pk-XYZ.pem la chiave pubblica. In
realtà i nomi sono molto più lunghi.
Assumiamo anche che la directory
in cui conservare i certificati sia
~/.ec2 su Unix e C:\ec2 su Windows. Ecco infine i comandi di configurazione, su Unix
$ export EC2_PRIVATE_KEY=~/.ec2/pkXYZ.pem
$ export EC2_CERT=~/.ec2/cert-XYZ.pem
Su Windows
C:\> set EC2_PRIVATE_KEY=c:\ec2\pkXYZ.pem
C:\> set EC2_CERT=c:\ec2\cert-XYZ.pem
Dopo la configurazione, si lancia il
comando
ec2-add-keypair gsg-keypair > id_rsa-ilmio-keypair
per creare una coppia di chiavi per
la connessione in un file di testo,
chiamato per esempio id_rsa-ilmiokeypair.
Apriamo il file il-mio-keypair con un
editor di testi per eliminare tutto
quello che sta prima o dopo le linee
che delimitano la chiave
“——-BEGIN RSA PRIVATE KEY——-”
“——-END RSA PRIVATE KEY——-”
Le linee che delimitano la chiave
vanno conservate.
Avviamo il motore
(virtuale)
A questo punto possiamo attivare
una macchina virtuale
ec2-run-instances ami-2bb65342 -k ilmiokeypair
l’output del comando è simile a
questo:
RESERVATION
r-7430c31d
924417782495 default
INSTANCE
i-ae0bf0c7
ami2bb65342 pending gsg-keypair 0
m1.small 2008-03-21T16:19:25+0000
us-east-1°
Il secondo campo della linea che inizia con INSTANCE è la chiave che
possiamo usare per pilotare la specifica istanza della macchina virtuale
modello ami-2bb65432, che è un Linux Fedora Core 4 in configurazione
minima.
La nostra macchina è avviata, ma
ancora non possiamo raggiungerla.
Come in qualsiasi datacenter che si
rispetti, dobbiamo aprire le porte del
firewall per poter arrivare al nostro
sistema dall’esterno. Apriamo quindi la porta 22, usata da Ssh
PROMPT> ec2-authorize default -p 22
PERMISSION
default ALLOWS tcp
22
22
FROM CIDR 0.0.0.0/0
Apriamo anche la porta 80, quella
del server Web. Naturalmente, in un
caso reale possiamo riservarci di
aprire l’accesso a una porta sensibile
solo dopo l’installazione di tutto il
necessario.
PROMPT> ec2-authorize default -p 80
PERMISSION
default ALLOWS tcp
80
80
FROM CIDR 0.0.0.0/0
Colleghiamoci
Adesso possiamo collegarci al sistema. Scopriamo il suo hostname con
il comando
PROMPT> ec2-describe-instances iae0bf0c7
RESERVATION
r-7430c31d
924417782495 default
INSTANCE
i-ae0bf0c7
ami2bb65342 ec2-67-202-7-236.compute1.amazonaws.com
L’ultimo campo della seconda linea è
il nome del nostro sistema, possiamo
quindi collegarci come root con il comando
ssh -i id_rsa-ilmio-keypair root@ ec2-67202-7-236.compute-1.amazonaws.com
grazie all’autenticazione tramite certificato, avremo una shell come root
sul sistema remoto senza dover digi-
216
PC Professionale - Luglio/Agosto 2008
tare una password. A questo punto
possiamo osservare la configurazione del server Apache, tenendo presente che la radice del server è in
/var/www/html e i file di log sono in
/etc/httpd/logs.
Questo meccanismo di autenticazione richiede un po’ di configurazione
agli utenti Windows che usano l’utility open source putty (www.putty.
org). Per configurare la connessione
con putty bisogna prima tradurre le
chiavi nel formato utilizzato dal programma usando l’utility puttygen.
Successivamente si deve configurare il file di credenziali creato nel
passaggio precedente per la connessione al server.
Ulteriori dettagli si trovano nella
Getting Started Guide che introduce
all’uso dei servizi e si può trovare
aprendo la pagina di documentazione (developer.amazonwebservices.
co) e facendo un clic su Elastic Compute Cloud.
Armiamo la macchina
e usciamo dal porto
L’immagine di macchina virtuale
che abbiamo utilizzato comprende
un server Apache e una minima pagina di accoglienza. Possiamo osservare la home page di default collegandoci con il browser all’indirizzo
che abbiamo ricavato dal comando
ec2-describe-instances, un indirizzo
simile a ec2-67-202-7-236.compute1.amazonaws.com.
Per caricare sul server una pagina,
possiamo usare il comando scp che
fa parte del corredo di putty ed è
nell’installazione standard di diversi
sistemi Unix. Scp permette di copiare in modo sicuro file e directory da
un sistema all’altro.
Ad esempio, il comando
scp -i id_rsa-ilmio-keypair file_locale
[email protected]:/tmp
trasferisce un file chiamato file_locale nella directory /tmp del sistema
remoto.
Conviene conservare una copia locale di tutti i file da trasferire, perché
se si segue il percorso che abbiamo
illustrato, si crea una nuova macchina virtuale ad ogni avvio partendo
da un’immagine pulita, cioè si parte
ogni volta da zero. Può essere utile
creare un archivio in formato zip, che potremo aprire sul sistema Fedora Core
4 con il comando unzip.
In definitiva, il modo di
operare è lo stesso che si
usa con qualsiasi sistema
Unix installato in una server farm: trasferimenti con
scp e sessioni in riga di comando con ssh.
Naturalmente si può pensare di dotare la macchina
di un’interfaccia grafica e
collegarsi in una sessione
grafica, ma la sicurezza ne
soffre gravemente. Anche
Microsoft permette di installare server Windows
2008 senza interfaccia grafica, per
migliorare la robustezza del sistema.
Dischi smemorati
Una delle specificità che derivano
dalla natura delle macchine virtuali
è che quello che si carica è un’immagine della macchina in un dato
Videata affascinante se si ha
l’animo del sysadmin. Siamo
connessi come root sul
sistema remoto.
momento. Se si avvia una macchina
e si altera lo stato del sistema, creando e modificando file, l’immagine
originaria rimane intatta.
Insomma, contrariamente a quanto
ci si potrebbe aspettare abbiamo
parecchio spazio su disco a disposizione, ma è uno spazio volatile.
La soluzione consiste nel creare
un’istantanea del sistema
virtuale dopo averlo configurato come lo vogliamo
conservare e salvare l’istantanea in S3. La documentazione mostra la procedura dettagliata da seguire. Naturalmente dovremo avere creato un account anche su S3.
Esiste un’altra soluzione
per l’uso di spazio su disco permanente: si possono creare volumi
permanenti e montarli su una macchina esattamente come si può
montare un Cdrom o un disco Usb.
I comandi del toolkit di Amazon
che permettono di farlo sono ec2create-volume e ec2-attach-volume. L’elenco dei volumi disponibili
RUBRICHE
SVILUPPO
La nostra spesa è sotto controllo in tempo reale. Abbiamo
lasciato acceso il nostro sistema per due giorni e mezzo
spendendo circa cinque dollari.
è ec2-attach-volume. Per maggiori
informazioni si può leggere la voce
del blog di sviluppo che illustra la
funzione ( http://aws.typepad.
com/aws/2008/ 04/block-to-the-fu.
html). Naturalmente c’è anche l’opzione di usare S3, ma la complicazione sta nel dover utilizzare interfacce
applicative specifiche, che è ben diverso da un volume di memorizzazione integrato normalmente nel sistema. La volatilità dei dischi può
comunque essere gradita nel contesto giusto. Nel caso di una scuola,
per esempio, partire da una situazione nota a priori, che si ripristina senza sforzo è quello che si cerca faticosamente di ottenere. Lo stesso vale
quando si ha un’applicazione matura e un processo di installazione automatizzato.
Un plugin di Maven, che permette
di automatizzare la catena di compilazione di un’applicazione Java con
la distribuzione automatica su un
server Ec2 dei prodotti di compilazione si trova nello spazio dedicato
ai progetti open source di Google:
code.google.com/p/cloudtools/.
Un sito nomade
Un aspetto dei sistemi virtuali di Ec2
che può lasciare perplessi è che la
configurazione della rete è dinamica
e l’indirizzo cambia a ogni riavvio,
così come cambia l’indirizzo configurato nel Dns. Insomma, la nostra
casa sul web si sposta di continuo.
La soluzione più semplice al proble-
Il resoconto scaricato in formato Csv da Amazon. Abbiamo
formattato condizionalmente la colonna UsageType per
distinguere l’attività del sistema, il traffico in ingresso e uscita.
ma sta nel configurare un Dns dinamico, come
per esempio
dyndns.com. Un articolo sul blog di
Codesta spiega dettagliatamente come fare ( blog.codesta.com/codesta_weblog/ 2008/02/amazon-ec2—wh.html).
Un occhio ai costi
Abbiamo lasciato acceso giorno e
notte un sistema sperimentando una
spesa giornaliera intorno ai due dollari e mezzo. La macchina della prova è un sistema entry level, con un
traffico minimo, poco più di trecento
righe di log al giorno.
Una spesa vicina a 75 dollari al mese
non è particolarmente conveniente
per un hosting dedicato, ma nemmeno troppo distante dall’offerta commerciale corrente, specie considerando la debolezza del dollaro rispetto all’euro. Ricordiamo che il termine
di confronto è un piano di hosting
che ci lasci il completo controllo della configurazione della macchina e
includa la possibilità di collegarsi come amministratore.
Per una startup con un piano industriale 75 dollari al mese sono una
spesa più che abbordabile e, soprattutto, l’hosting virtuale dà la possibilità di partire con una spesa modesta
e scalare a piacere se arriva il successo. Il vantaggio principale è che ci si
può dimenticare della creazione dell’infrastruttura e si può riconfigurare
tutto in qualsiasi momento, aggiungendo, togliendo e cambiando a pia-
218
PC Professionale - Luglio/Agosto 2008
cere senza aspettare la consegna
delle macchine e pianificare la manutenzione. Lasciamo a chi è coinvolto il compito di monetizzare il
vantaggio di non impegnare risorse
mentali e economiche fuori dall’obiettivo principale e di avere una
flessibilità assoluta, senza ordini
hardware, o tempi di consegna e installazione.
Nel caso di un professionista tenere
accesa una macchina sette giorni su
sette può essere gravoso, ma è comunque interessante che con meno
di cinque Euro si può accendere una
macchina sull’istante, usarla per tre
giorni per provare una configurazione, sperimentare un’installazione o
studiare un ambiente e dimenticarsene, senza strascichi a lavoro concluso. Per chi organizza dei corsi il
punto di interesse può essere la stabilità della configurazione di partenza e il fatto di doversi occupare solo
dei sistemi in dotazione agli studenti.
Per contro, se si pianifica il supporto
per un’applicazione, è da considerare l’ipotesi di Google AppEngine,
che è pur sempre un’offerta di hosting, anche se non c’è la possibilità
di scegliere la piattaforma di sviluppo. Se Python è una scelta adeguata
per i piani di sviluppo e il team a disposizione, è da considerare nel bilancio che Google AppEngine dovrebbe offrire un contratto gratuito al
livello di ingresso. Se viceversa si
preferisce, ad esempio, Ruby, la flessibilità di un sistema completamente
a disposizione è indispensabile.
•