Censimento 2011 OnLine: ODISSEA.

Avendo un pò di tempo a disposizione (cosa già di per sè incredibile), mi sono messo a compilare il Questionario OnLine del Censimento 2011. Si, quello cartaceo l’ho ricevuto, ma a causa di un madornale errore di compilazione avrei dovuto chiederne una nuova copia e ho deciso, per semplicità, di compilarlo online.

Provo ad accedere al sito, inserisco codice fiscale e password e premo il tasto per iniziare la compilazione, ma dopo 60 secondi di caricamento… Un bell’HTTP 503.

A dire il vero, ero già pronto ad una situazione simile. Ieri ho aperto il sito, ho letto due cose e poi ho fatto un controllo veloce (inclinazione professionale): nessuna traccia di load balancer o di sistemi di caching. Era prevedibile quindi che tutto sarebbe stato inutilizzabile durante il picco di richieste, che sarebbe avvenuto, sempre ad occhio, per oggi, giorno del lancio ufficiale.

Insomma, sito lentissimo o down: impossibile compilare il questionario, per ora. Ok, mi rassegno, smetto di riprovare, ci penserò nei prossimi giorni. Ma non è la prima volta che succede una cosa simile (anzi, potrei dire che è successa ogni volta in cui ho avuto bisogno di usare un sito legato alla Pubblica Amministrazione), e sinceramente sono abbastanza stanco di questo.

A memoria:

  • Elezioni 2011: inizia lo scrutinio e il sito su cui vengono pubblicati i risultati inizia a caricare in modo lentissimo, e a tratti cade. Tutto questo aggiunto al ridicolo sistema di “load balancing manuale” studiato per l’occasione (probabilmente per supplire al ridicolo down delle Elezioni 2008).
  • Pubblicazione Commissioni Maturità 2011: sito web inutilizzabile per 24 ore, con continui errori e timeout.

Per dirla in altre parole, siti che, quando servono, sono inutilizzabili. Completamente, inutilizzabili. Con una aggravante: tutti, a maggior ragione chi se ne occupa, sapevano benissimo quando sarebbero serviti.

Noi che lavoriamo in questo settore sappiamo che  una adeguata, perfetta previsione del carico di lavoro è la base per la messa online di una struttura simile.

Noi che lavoriamo in questo settore, sappiamo che le soluzioni per reggere il forte carico di un sistema che probabilmente non necessita neanche di un DB centralizzato, se non per qualche elemento*, non sono poi così complesse.

Noi che lavoriamo in questo settore sappiamo che c’è la possibilità di avere n-mila server e di pagarli solo per il tempo in cui li si è usati. Sappiamo anche che questo ABBATTE i costi, e apre la strada a soluzioni prima impensabili.

Soprattutto, noi che lavoriamo in questo settore sappiamo che un errore in uno qualunque di questi punti vuol dire una sola cosa: contratto stracciato da parte del cliente, eventuali penali da pagare e reputazione praticamente rovinata (ci si vende per “persona che ti da una piattaforma stabile per il tuo grosso sito” e poi cade tutto?).

Alla luce di ciò mi chiedo: non è ora di far saltare qualche appalto per la gestione di strutture informatiche, visto che ci sono in giro sistemisti che non ne sbagliano una da anni e ogni volta ci mettono faccia e reputazione?

* Ovviamente, non so come siano stati studiati i database. Ma, con davanti agli occhi i fogli del questionario, posso dire che non c’è alcuna necessità di salvarli in tempo reale tutti nello stesso database, tutti i server devono poter accedere solo ad una tabella che impedisca la doppia compilazione del questionario. Il resto, può essere separato e riunito solo su necessità.

Continua il delirio della class-action contro Aruba

Solo un veloce aggiornamento sulla vicenda (di cui ho parlato dettagliatamente qui). L’idea di Class-Action contro Aruba da parte del Codacons ha riscosso molto meno successo di quanto pensassi. Immaginavo centinaia di commenti in pochi giorni sul blog dell’Avv. Rienzi (sul quale è stato formalmente richiesto dal Codacons di rilasciare una pre-adesione), invece dopo 5 giorni questi sono appena una sessantina, di cui almeno la metà sono contro l’azione di gruppo nei confronti del colosso dell’hosting o di persone che come me tentano di spiegare, a tempo perso, la situazione.

Così tanto FLOP che da ieri ho iniziato a taggare i miei tweet riguardo la vicenda con il tag #FLOP oltre che #Aruba e #Codacons.

Segnalo l’articolo di Antonio Angelino, che riprende in parte i miei punti del precedente post ed estende il discorso. Per chi fosse interessato ad approfondire un minimo il discorso tecnico o a leggere pareri di professionisti come me, segnalo questo thread su HostingTalk.it.

Sto anche continuando a leggere (e a rispondere) divertito ai commenti dei vari utenti che si lamentano delle perdite milionarie subite a causa del down di 12 ore si un hosting lowcost da 30 € annuali che non offre garanzie da contratto. Inutile commentarli o rispondere a uno a uno, ma nell’insieme emergono alcuni punti interessanti. Non intendo trattarli nel dettaglio (anche perchè un professionista del settore o presunto tale -questo dovrebbe essere il mio target, considerato che non so scrivere in modo umano- dovrebbe capire senza troppe spiegazioni), ma solo elencarli:

  • Nessuno dei clienti che intendono proseguire nell’azione contro Aruba ha letto il contratto prima di sottoscriverlo. Appare ovvio, perchè al suo interno è esplicitamente contemplata la possibilità di danni per incendio e l’impossibilità di offrire rimborsi ai clienti. Più in generale non ci si rende conto che al momento della firma di un contratto per un servizio lowcost, la sostanza dell’accordo tra Provider e Cliente è “Ok Cliente, io ti do un servizio che costa la metà, ma sappi che per abbassare il prezzo devo togliere garanzie, va bene?”.
  • C’è una scarsissima conoscenza del mercato. Anche una nocciolina (fatta eccezione per qualche mia amica l’arachide è la cosa più stupida che conosca), vedendo che esistono pacchetti di hosting da 10 €, da 40 €, da 250 € e da 1500, tenterebbe di informarsi e di capirne le differenze, arrivando così in ben poco tempo a parlare di uptime, garanzie, penali etc.
  • C’è anche una conoscenza tecnica pari a zero. E’ comprensibile ovviamente, ma quello che non è comprensibile è la pari presunzione di esprimere pareri a riguardo. Ci sono persone che parlano di “server di emergenza” senza sapere minimamente cosa significhino la parola failover o la parola sincronizzazione, altri che parlando di “misure di emergenza” che Aruba AVREBBE DOVUTO mettere in atto senza riuscire minimamente a spiegare di cosa si stia parlando.
  • Si nota anche un certo livello di illogicità: c’è chi fatica a capire che anche se ha acquistato 20 pacchetti da 40 €, questi rimangono 20 pacchetti lowcost, o chi tira fuori la solita storia del mancato pagamento del rinnovo causa imprevisto dell’ultimo momento (si, esatto, quello li, quello che ti impedisce di pagare al sessantesimo giorno il dominio, senza che si capisca bene cosa hai fatto per i 59 giorni precedenti).
  • AGGIUNTA: Me l’ero dimenticata ma è di importanza fondamentale. Certi utenti hanno un’idea di “pagamento rateale” abbastanza alterata. Il ragionamento, in sostanza è: “sono dieci anni che pago 30 euro, quindi dovrebbero aggiungere ridondanza”. Bene, svelerò un segreto: no, non funziona così. Pagare 30 euro annuali per 10 anni non obbliga l’azienda ad offrire un servizio da 300 euro annuali.

E molto, molto altro. #FLOP

Giorgio

PS: Non so quale sia la fonte dell’immagine di Aruba in fiamme. Io l’ho presa QUI.

Class-Action contro Aruba. Delirio?

Ieri, Venerdì 29 Aprile 2011, alle 4 di mattina un corto circuito nella sala batterie del sistema UPS della WebFarm di Arezzo del gruppo Aruba ha causato uno spegnimento di tutta la struttura, portando offline i milioni di siti ospitati, caselle email, server dedicati etc. Ne hanno parlato testate autorevoli, come il TGCOM, il Quotidiano Nazionale o il Giornale.

Alle 10.30 è iniziata la rimessa in tensione delle sale. In qualche ora tutti i server erano nuovamente alimentati e i servizi iniziavano a tornare online (discorso diverso chiaramente per le macchine con filesystem corrotti a causa dello spegnimento improvviso). In serata, poi, è arrivato il Comunicato Stampa.

Il Comunicato spiega che si è attivato normalmente il sistema antincendio della sala UPS, ma che poi il fumo, diffuso in tutta la struttura, ha fatto scattare anche quello delle sale dati che ha causato l’interruzione di corrente. Sembra quindi che dopo il corto circuito relativo agli UPS sia entrato in funzione senza problemi il sistema di bypass di questi ultimi e le sale dati siano rimaste alimentate, salvo poi essere “spente” per un “errore” del sistema antincendio. Ma la questione è di poca importanza, perchè comunque i Vigili del Fuoco avrebbero chiesto di staccare l’interruttore generale prima di intervenire.

La cosa veramente interessante (cioè, ridicola) in tutta la vicenda è la Class-Action (cos’è?) che il Codacons ha promesso nei confronti di Aruba, per i disagi causati ai clienti durante il downtime. Da leggere assolutamente i commenti sul blog dell’Avv. Rienzi di chi non si rende conto che nessuno ha in mano coltelli, ma c’è un contratto, firmato, di chi ha una mail fondamentale per il suo lavoro ma la mette su un lowcost, di chi ha un sito fondamentale tramite il quale fa un immenso fatturato ma decide di ospitarlo su un pacchetto lowcost senza garanzie etc etc.

Mi fanno piacere i commenti di chi ha si scelto di ospitare un E-Commerce (anzi, 30) su sistema lowcost, ma sapeva a cosa andava incontro, sapeva cosa stava comprando e ha agito di conseguenza. Sono molti anche quelli che insultano il Codacons contro la class-action, da notare chi assume un atteggiamento “pan per focaccia” nei confronti dell’avvocato e del suo blog. C’è poi chi come al solito incolpa l’Italia, e confonde il bollino dorato “Uptime Garantito” con una garanzia da contratto e non si rende conto che per quel prezzo è semplicemente IMPOSSIBILE offrire garanzie. Ovviamente ci sono anche il MIO commento e quello dello (stimato) ex-collega Domenico De Monte.

Il punto focale è che il contratto firmato dai clienti spiega chiaramente che non sono fornite garanzie in termini di uptime, e che il prodotto offerto è soggetto a questo tipo di problemi. Il pacchetto di hosting è quindi qualcosa di “best effort”, ovvero “il meglio possibile”, in parole povere Aruba promette di offrire al cliente un buon servizio (ovviamente non può essere down 24ore al giorno), ma senza offrire garanzie in caso di problemi. Il cliente deve quindi saper valutare, decidere se il rischio di downtime per lui è accettabile.

Se lo ritiene accettabile, utilizza un servizio risparmiando non pochi euro (per soluzioni con delle garanze di uptime si parlerebbe di prezzi intorno alle migliaia di euro annuali), ma accetta di non richiedere risarcimenti in caso di downtime. Se non lo ritiene accettabile, ovvero crede che il rischio sia troppo alto e che l’eventuale perdita sarebbe troppo grossa, deve guardare da altre parti e tirare fuori il libretto degli assegni.

Una class-action che costringa il provider a risarcire i clienti quando da contratto negava questa possibilità, nata da clienti insoddisfatti di un servizio che hanno semplicemente sbagliato a comprare, sarebbe distruttiva per il settore: si costringerebbero le aziende ad offrire risarcimenti in situazioni economicamente impossibili. Il che può portare ad una sola cosa: la fine del lowcost. Essendo costretti a fornire risarcimenti in caso di problemi, i provider deciderebbero di offrire solo servizi all’altezza di una simile prospettiva, al fine di evitare inutili perdite.

Insomma, se volete sottoscrivere questa class-action, fatelo ma ricordate:

  1. Chi ha subito danni li ha subiti in quanto non ha letto il contratto e ha acquistato un servizio inadatto alle sue esigenze
  2. No, non avete perso email. Il protocollo SMTP è studiato per far fronte a queste situazioni
  3. Una azione simile, se vinta dai consumatori, creerebbe conseguenze catastrofiche sul mercato
  4. Eventi simili sono rarissimi, si fa prima a cancellare e ripartire

Vi terrò aggiornati.

Giorgio

Amazon AWS – Nessun downtime dovuto al terremoto

Ieri, 11 Marzo 2011 uno dei più forti terremoti degli ultimi 150 anni ha colpito il Giappone. A poco più di 24 ore dal sisma si contano già 1500 morti. Si contano le vittime e si teme per Fukushima I, centrale nucleare colpita dal sisma che pare abbia causato la distruzione del sarcofago di uno dei reattori (6 già attivi e 2 in costruzione).

Le autorità rassicurano, considerata la differente tipologia del reattore e le differenti misure di sicurezza, è impossibile il ripetersi di un incidente simile a quello di Chernobyl del 1986.

Comunque, lascio il lavoro da reporter alla BBC che ne sa sicuramente più di me e torno al mio. Guardate l’immagine qui sotto:

Si tratta di uno screenshot della pagina in cui è riassunto lo stato di tutti i servizi Amazon AWS di tutte le regioni. Come potete notare, durante e dopo il sisma la struttura Amazon di Tokyo non ha subito nessun downtime nè nessun rallentamento. Quando dico che mi fido ciecamente del Cloud computing.

Sono curioso, voglio vedere se Amazon rilascerà un comunicato ufficiale sull’accaduto.

L’ultimo pensiero va, ovviamente, alle vittime del sisma e alle decine di migliaia di persone che hanno perso tutto.

Anche i più grandi tra i grandi…

…eh si, volano giù

Sono un Google-Lover. Da quando esiste, ho spostato tutte le mie applicazioni su Google App Engine. Non mi dilungo nei dettagli, ma la struttura fa impressione: scala senza il minimo problema, sia per quanto riguarda la parte web che la parte db/storage, e non ha i limite che ha Amazon AWS. Ho fatto diversi test sul servizio, se a qualcuno interessano potrei pubblicare un post descrivendone i risultati.

Torniamo al down: il 24 Febbraio stavo lavorando ad una mia applicazione basata su GAE, quando, intorno alle 17.00, tutte le richieste hanno iniziato a finire in timeout. Appena il tempo di realizzare (ho impiegato 30 minuti per convincermi che il servizio era veramente down) e il mio aggregatore mi segnala un nuovo post nel gruppo GAE Downtime Notify di Google in cui vengono pubblicate informazioni sui down previsti e su quelli un pò meno previsti. Sono circa le 17.30.

Il suo contenuto è:

Since 7:53am PST, App Engine has been experiencing an unexpected outage affecting the majority of App Engine applications.  The team is working quickly to correct the cause and will have an ETA on the fix shortly.

Please watch this thread for updates. We sincerely apologies for the inconvenience.

Il servizio rimane KO, e alle 18.30 circa ricevo un confortante aggiornamento:

We are still actively working on the on-going outage.  We’ve also experienced a problem with our backup datacenter. We will continue to provide status updates on this thread every thirty minutes.

Il messaggio mi informa che stanno lavorando al problema, ma che ci sono altri problemi con il datacenter secondario (su cui, probabilmente, avevano pianificato di swappare il traffico in caso di failure del primario).

Dopo altri 20 minuti, alle 18.50 (o qualcosa di simile) la mia applicazione riprende a rispondere, ma segnala che il DataStore è in read-only. Un nuovo post conferma quanto ho appena notato:

As of 9:48am, all applications should now be available in read-only mode.

Aspetto altri 20 minuti e tutto torna a funzionare normalmente, anche se in modo estremamente lento. Probabilmente -penso- sono partiti tutti i processi cron schedulati durante il down.

Arriva un nuovo update:

As of 10:09am, all application should be serving traffic and successfully reading/writing from the datastore.  Again, apologies for the inconvenience of the outage.  We will follow up with a post-mortem.

Per me si chiude qui, nel senso che dalle 19.30 più o meno, lentezza a parte, riprende a funzionare tutto. Per altri utenti no, Google infatti parla di problemi ancora presenti su “a small percentage of datastore entity groups”. Più tardi, in una rettifica, parleranno di problemi di inconsistenza del DataStore per circa 25 applicazioni.

La sera del 25 Febbraio (il giorno dopo) Google pubblica un aggiornamento:

We continue to work diligently in the wake of yesterday’s unforeseen App Engine outage on a number of issues, so we wanted to provide you an update with our current list of tasks.

– Applications will not be charged for any App Engine resource usage that occurred during Feb 24th, 2010.

– We are still working on fix for writes and transactional reads affecting a small number of datastore entity groups.  We have determined that approximately 25 application IDs have been affected by this issue.  If you feel you are having difficulties with certain entity groups in your application, please respond to this thread with your App ID.

– We are working hard on putting together a detailed post mortem that we will be making public.  We expect to have this available to you next week.

Again we sincerely apologize for yesterday’s service disruption.  We take App Engine’s reliability very seriously and we are confident we can use the hard lessons learned from yesterday’s event to improve our offering to you.

Attendo il post-mortem fino al 5 Marzo, quando, finalmente, ricevo la tanto attesa mail. Inizia con un riepilogo sul downtime:

On February 24th, 2010, all Googe App Engine applications were in varying degraded states of operation for a period of two hours and twenty minutes from 7:48 AM to 10:09 AM PT | 15:48 to 18:09 GMT.

The underlying cause of the outage was a power failure in our primary datacenter. While the Google App Engine infrastructure is designed to quickly recover from these sort of failures, this type of rare problem, combined with internal procedural issues  extended the time required to restore the service.

Parla di “internal procedural issues”, “problemi nelle procedure interne” meglio descritti poco sotto:

– Although we had procedures ready for this sort of outage, the oncall staff was unfamiliar with them and had not trained sufficiently with the specific recovery procedure for this type of failure.

– Recent work to migrate the datastore for better multihoming changed and improved the procedure for handling these failures significantly. However, some documentation detailing the procedure to support the datastore during failover incorrectly referred to the old configuration. This led to confusion during the event.

– The production team had not agreed on a policy that clearly indicates when, and in what situations, our oncall staff should take aggressive user-facing actions, such as an unscheduled failover.  This led to a bad call of returning to a partially working datacenter.

– We failed to plan for the case of a power outage that might affect some, but not all, of our machines in a datacenter (in this case, about 25%). In particular, this led to incorrect analysis of the serving state of the failed datacenter and when it might recover.

In breve (ed in italiano): lo staff oncall non era pronto a far fronte a questo tipo di problemi. La documentazione di supporto, si riferiva ad una versione obsoleta del sistema (e probabilmente totalmente incompatibile, perchè è stato recentemente aggiornato il sistema di replicazione del DS), e i tecnici che avrebbero dovuto iniziare il failover si sono trovati davanti a due procedure contrastanti senza sapere quale utilizzare.

I sistemi di controllo interni hanno poi segnalato come utilizzabile un datacenter che non lo era, poichè non erano studiati per considerare una perdita di alimentazione parziale e non totale. Lo staff, infine, dopo aver tentato, con esito negativo, di spostare il traffico in read-only sul datacenter secondario, ha deciso di girare di nuovo il tutto sul primario, credendo, erroneamente, che stesse tornando online.

Dalla cronologia, riportata in calce al post mortem,  scopro in dettaglio cosa è successo durante le due ore di down (riporto gli orari originali, tenete conto che noi siamo avanti di 9 ore):

Alle 7.48 si iniziano a riscontrare errori nel traffico servito dal DC primario. Alle 7.53 i “Google Site Reliabilty Engineers” segnalano che nel DC c’è stata una perdita di alimentazione, e che a causa di un problema con l’alimentazione secondaria circa il 25 % dei server sono in crash.

Alle 8.01 viene confermato che GAE è down. Viene deciso di darne comunicazione ufficiale agli utenti. Alle 8.22 viene confermato che diverse macchine non sono ripartite, e che il cluster GFS e BigTable non sono funzionanti a causa dell’alto numero di server persi. Si decide di avviare la procedura di failover verso il DC secondario.

Alle 8.40 viene scoperto un conflitto nella documentazione sulle procedure di failover. Non potendo decidere quale fosse la procedura da utilizzare, gli ingegneri decidono di contattare la persona responsabile del cambio di procedura. Alle 8.44, mentre una parte dello staff sta ancora lavorando alla procedura di failover, si tenta di servire il traffico in sola lettura dal DC primario. Un problema nella configurazione, però, impedisce al DC secondario di servire il traffico.

Alle 9.08, mentre parte dello staff sta tentando di risolvere il problema di configurazione nel DC secondario che impedisce di servire le richieste e un’altra parte sta ancora lavorando alla procedura di failover, il “Primary OnCall Engineer” ritenendo che il DC primario fosse tornato completamente operativo e pronto a servire tutte le richieste, avendo in mano dati dei sistemi di diagnosi che confermavano ciò, senza sapere però che non era mai usccesso prima che un DC dopo un danno simile tornasse utilizzabile, devia nuovamente il traffico su quest’ultimo, nel tentativo di far tornare online il servizio.

Alle 9.18 si rendono conto che il DC primario non è tornato online, e che non può servire il traffico. Si concentrano quindi gli sforzi sul DC secondario, si devia nuovamente lì tutto il traffico e si inizia la procedura di failover.

Alle 9.35 viene raggiunto un ingegnere con esperienza nella procedura e si inizia il failover. Alle 9.48 il DC secondario inizia a servire le richieste in read-only.

Alle 9.53 viene confermata la corretta procedura di failover per il read-write, e si avvia il processo.

Alle 10.09 il processo termina, ed il traffico riprende ad essere servito normalmente. Google App Engine da questo momento è considerato online.

Il post-mortem contiene anche una serie di correzioni che Google intende attuare per evitare il ripetersi di casi simili:

As a result, we have instituted the following procedures going forward:

– Introduce regular drills by all oncall staff of all of our production procedures. This will include the rare and complicated procedures, and all members of the team will be required to complete the drills before joining the oncall rotation.

– Implement a regular bi-monthly audit of our operations docs to ensure that all needed procedures are properly findable, and all out-of-date docs are properly marked “Deprecated.”

– Establish a clear policy framework to assist oncall staff to quickly and decisively make decisions about taking intrusive, user-facing actions during failures. This will allow them to act confidently and without delay in emergency situations.

We believe that with these new procedures in place, last week’s outage would have been reduced in impact from about 2 hours of total unavailability to about 10 to 20 minutes of partial unavailability.

In response to this outage, we have also decided to make a major infrastructural change in App Engine. Currently, App Engine provides a one-size-fits-all Datastore, that provides low write latency combined with strong consistency, in exchange for lower availability in situations of unexpected failure in one of our serving datacenters. In response to this outage, and feedback from our users, we have begun work on providing two different Datastore configurations:

– The current option of low-latency, strong consistency, and lower availability during unexpected failures (like a power outage)

– A new option for higher availability using synchronous replication for reads and writes, at the cost of significantly higher latency

We believe that providing both of these options to you, our users, will allow you to make your own informed decisions about the tradeoffs you want to make in running your applications.

Termina con delle scuse:

We sincerely apologize for the impact of Feb 24th’s service disruption on your applications. We take great pride in the reliability that App Engine offers, but we also recognize that we can do more to improve it. You can be confident that we will continue to work diligently to improve the service and ensure the impact of low level outages like this have the least possible affect on our customers.

Un down, prima o poi capita a tutti. Per quanto mi riguarda, rinnovo la mia fiducia nella grande G.

Giorgio