Esiste una regola, semplice da comprendere, ma se non si spiega, è difficile da intuire. Vogliamo  parlare di un “qualcosa”, un prodotto, un tema, con un obiettivo di “vendita”, che genericamente significa “convincere”, farne comprendere il valore. E allora spesso (sempre) si parla di “cos’è”, “cosa fa”, “come lo fa”, ma non del “perchè” quella cosa è stata creata così, quali sono i motivi che hanno spinto di investire tante forze nella sua creazione. Il perché una cosa è così è una delle cose più difficili da comunicare perché ne dobbiamo trasferire il valore, quella cosa, intima, che ci ha spinto nella creazione.

Succede normalmente per un informatico. Si parla di bit e di bytes, perché è ciò che abbiamo studiato, per passione, in primis, per quella voglia di creare, come i lego, un programma. Ma di fronte ad un cliente, spesso i bits e bytes sono incomprensibili. Bisogna parlare di vision, di obiettivi, di scenari e di requisiti. Quando questi sono chiari, allora consulenti, linguaggi, server e software diventano più chiari, comprensibili ed accettabili, per esempio nei costi.

Questo è il “golden circle” di cui Simon Sinek parla (ad esempio al TED).

Quindi allora la prima affermazione non è “cos’è il Computing”, ma “perché il Cloud Computing”.

E la risposta è: perché ci sono dei fenomeni globali che stanno cambiando il mondo che implicano nuovi modi di gestire l’ecosistema IT. Senza, non potremmo avere milioni/miliardi di smartphone, di app sullo smartphone, di utenti in Facebook o altri social, sempre connected, sempre disponibili.

Facciamo un esempio: come potrei pianificare di andare in produzione in maniera “tradizionale”, “on premise”, con il mio Social, cui credo fermamente, e credo di avere successo, supponendo che in sei mesi crescerò strepitosamente di 1000 utenti al giorno, per sei mesi di fila? Compro 10 macchine ogni giorno? Compro 100 macchine subito? Come faccio a installarle? Come faccio a gestirle? Come faccio ad averle in tempo? E se poi, succede qualcosa? Se cambia qualcosa per cui il mercato magari si ferma per un mese e io ho comprato 100 macchine in più? Come ripago quelle 100 macchine in più?

Lo scenario (che diversi si sono trovati nella situazione emozionante di dover gestire) è nuovo e diverso rispetto a scenari più tradizionali e meno esplosivi. Hanno bisogno di nuove idee. Di nuovo: perché devo farlo? Perché il mercato di oggi pretende nuovi modi di gestire domanda e offerta.

A questo punto, la domanda è: come gestisco il fenomeno? Mettendo al centro il concetto principale di questi fenomeni, ovvero la scalabilità, introducendo altri concetti a corredo quali elasticità, scalabilità orizzontale, estrema scalabilità, virtualizzazione, ecc…

A questo punto diventa possibile parlare del “cos’è” il Cloud Computing, cercando di risolvere un ultimo problema. Prendiamo la definizione da Wikipedia:

In informatica con il termine inglese cloud computing  si indica un insieme di tecnologie che permettono, tipicamente sotto forma di un servizio offerto da un provider al cliente, di memorizzare/archiviare e/o elaborare dati (tramite CPU o software) grazie all’utilizzo di risorse hardware/software distribuite e virtualizzate in Rete in un’architettura tipica client-server.

Sapendo quali sono gli elementi messi in gioco, mi viene da dire che Cloud Computing altro non è che una forma evoluta di hosting o housing, di siti web o di macchine (virtuali), in cui poi alla fine, si finisce a parlare di costi, e si banalizza: “il Cloud Computing costa troppo”.

Ma abbiamo esordito dicendo il perché: perché dobbiamo gestire situazioni nuove, grandi, emozionanti, che possono crescere a ritmi anche insostenibili, verso un provider di hosting tradizionale, o “on premise”, in casa nostra.

Il Cloud Computing è un modo NUOVO di gestire le risorse IT PERCHÈ ci sono NUOVI scenari di business, che con l’hosting tradizionale, o on premise, non possiamo gestire.

Poi, se vogliamo dirla tutta, troppe volte, oramai, si confonde il Cloud con il Web, perché se si legge la definizione di Cloud Computing, ci si può ritrovare elementi importanti del Web. Cosa differenzia il Cloud dal Web? Sono le due facce della stessa medaglia.

Il Web è la rete che vediamo come utenti e quindi ne percepiamo l’uso e l’interazione, ma non come è fatta, come cresce. Il Cloud entra in gioco qui: è la rete che non vediamo, i meccanismi interni, che la fanno crescere, essere sempre disponibile, essere ovunque.

Quindi, stiamo parlando di un cambiamento, prossimo, inesorabile. Gli altri possono non credere al Cloud Computing, ma non noi. E quindi dobbiamo avere a che fare con quelle abitudini che ci danno confort, che sono difficili da cambiare, spesso perché ci manca il tempo di affrontare. Possiamo giustificare gli altri (forse) ma non noi. Noi ne parliamo ne siamo convinti…ne siamo realmente convinti? Ci crediamo? Allora facciamoci la domanda. Siamo noi primi utilizzatori del Cloud Computing? Noi stiamo chiedendo al “nostro cliente” di fidarsi di noi, che il Cloud Computing è una figata pazzesca, andiamo!….e poi noi siamo come quelli che per pubblicità (o per soldi) dicono una cosa e dietro ne fa un’altra.

Rispetto a questa necessità, ossia, se vogliamo proporre il Cloud Computing allora noi dobbiamo esserne i primi sponsor, allora diamo due nuove definizioni di Web e Cloud.

Web è la rete dove vivi parte della tua vita: è un po’ come il nostro posto di lavoro. Non ci appartiene, non conosciamo le logiche infrastrutturali che la tengono in vita. È un po’ la differenza tra dipendente ed imprenditori. Nel Web noi siamo i dipendenti.

Cos’è il Cloud? È la rete in cui porti parte della tua vita: è un po’ come la nostra casa, che fa parte di quel progetto imprenditoriale personale che appunto è la nostra vita. Se uno riconosce il valore del Cloud Computing fino a portarci la propria vita, allora sarà molto più semplice convincere le persone a fare il passaggio verso il Cloud Computing. È la rete che gestisce parte della tua vita. È la rete che cresce con l’evolvere della tua vita.

Per parlare di Cloud Computing, bisogna spostare parte della propria vita nel Cloud.

Finalmente, dopo un po’ di lavoro, e grazie ai nuovi costi di Windows Azure (115€ di credito mensile! per gli sviluppatori MSDN, ma anche i programmi WebSpark), ho portato un po’ della mia vita da sviluppatore nel Cloud. Ho creato la mia macchina virtuale (Windows Server 2012 Datacenter) con Visual Studio 2010 e ho portato Calybra 2 lì. La manutenzione spicciola, cioè per esempio il fatto di rigenerare l’installer perchè sono state aggiornate le View (è una applicazione MVVM) da Claudio, non serve nemmeno che usi il portatile di casa, ma lo faccio in remoto (sto anche cercando un client RDP per Windows Phone 8 e collegarmi dal mio Nokia Lumia 820!)

2013.07.05 VS2010

L’ultimo aggiornamento di Windows Azure permette due cose fondamentali:

  1. fatturazione al minuto e non più all’ora (quindi se lavorate solo 10 minuti, pagherete per 10 minuti e non per un’ora intera)
  2. se spegnete la macchina virtuale, la macchina spenta non costa niente (cosa che fino ad un mese fa non succedeva: la macchina la pagavate comunque)

E’ una fantastica opportunità!

Ovviamente non è una macchina da sviluppo intensivo (a parte configurare la VM con più processori e più RAM, ma per adesso non ci provo) ma il suo lavoro, lo fa. Mi serviva un ambiente per la manutenzione spicciola, che non è più quello corrente (VS2010+.NET 4.0, rispetto a VS2012/2013 + .NET 4.5). Ed è anche un ambiente di sviluppo che posso tenere anche da qui a 10 anni (vabbè, per allora ci penseremo!) ma comunque che non devo ricreare ogni volta che re-installo il PC.

Le VM di Azure sono anche ottime per usare gli ambienti di Preview! Su Azure è apparsa infatti per la prima volta una immagine di macchina pronta per lo sviluppo software, in questo caso con la prima preview pubblica di VS2013!

2013.07.05 VS2013

Così come è possibile ad esempio creare una macchina Sharepoint 2013 (a proposito: sapete che domani a Pordenone, in Consorzio Universitario, io e Marco abbiamo organizzato un evento Sharepoint? Partecipate  – ci saranno Paolo Pialorsi, Igor Macori e Michele Riberti: è un evento gratuito, basta iscriversi qui).

Tornando a Calybra, come ho portato il codice sorgente nella VM? Ovviamente con Team Foundation Services 2012: il codice è nel cloud e posso fare CheckIn/CheckOut sia sulla VM che sul PC! E’ la rivoluzione che abbiamo cominciato in ufficio e che ho prontamente portato anche a casa.

2013.07.05 TFS

E’ veramente un nuovo modo di vivere (da sviluppatore). Risolta definitivamente l’ansia dei backup, perchè ho in maniera molto semplice almeno 5 copie del progetto:

  • 1 sul PC di sviluppo
  • 1 sulla VM
  • 1 su TFS
  • 1 su un PC sempre acceso che sincronizza ogni giorno i progetti TFS e tutti i miei files su Skydrive (questo sarà oggetto di un altro post)
  • 1 su un NAS (su cui viene fatto il backup del PC detto prima, tramite Cobian Backup)

Prevenire è meglio che curare.

L’unico problema che devo risolvere ancora è il fatto che il progetto usa assembly firmate con strong naming, ma i files .pfx (protetti da password) saltano ogni volta che ricompilo il progetto passando da un PC di sviluppo all’altro (ossia salto tra la VM e il PC di sviluppo). Ma per adesso, non è un grosso problema.

Un’introduzione al Cloud Computing e ai suoi principi, gli scenari di utilizzo, i modelli di servizio.

Uno scenario per il Cloud Computing. Un modello di business presentato prima di tutto come verrebbe implementato in un modello pre-Cloud Computing,con tutte le “semplicità” del caso, il successo, ma anche tutti i problemi che sorgeranno durante la messa in opera del software.

Nel caso si abbia bisogno di generare un file CSV dinamicamente da una applicazione Web, si può incorrere nel problema dell’encoding dei caratteri. Questo articolo riporta la soluzione.

Sto lavorando ad un progetto Web (in ASP.NET MVC 3) in cui è necessario scaricare dei plug-in per la gestione di uno scanner via web.

Funziona tutto bene sotto Internet Explorer perchè il plug-in (da scaricare ed installare nel browser) prende la forma di un file .cab. Ma quando si deve andare sotto Firefox o Mac l’installazione del plug-in fallisce: nel primo caso, il plug-in ha estensione .xpi, mentre sottoMac ha estensione .pkg. Facendo il deployment sotto Windows Azure, ottenevo semplicemente un errore 404 – File Not Found, senza capire il perchè.

Eseguendo l’applicazione “on-premise”, l’errore diventa più chiaro:

HTTP Error 404.3 – Not Found

The page you are requesting cannot be served because of the extension configuration. If the page is a script, add a handler. If the file should be downloaded, add a MIME map.

Cercando su Internet troviamo: http://www.iis.net/ConfigReference/system.webServer/staticContent/mimeMap

La configurazione per mappare una estensione ad un MIME Type, in primis la si può fare da IIS. Ma con .NET 4.x, su può gestire tutto via web.config attraverso il tag <system.webServer>. E quindi, nel mio caso:

<system.webServer>
<validation validateIntegratedModeConfiguration=”false”/>
<modules runAllManagedModulesForAllRequests=”true”/>
<staticContent>
<!– http://www.iis.net/ConfigReference/system.webServer/staticContent/mimeMap –>
<mimeMap fileExtension=”.xpi” mimeType=”application/octet-stream” />
<mimeMap fileExtension=”.pkg” mimeType=”application/octet-stream” />
</staticContent>
</system.webServer>

E tutto funziona, anche sotto Windows Azure.

Finalmente è pronta! Calybra, la bilancia per gelatai che io e Marco Pozzan abbiamo contribuito a sviluppare creando il software (sviluppato in tecnologia Microsoft .NET e Windows Presentation Foundation) affronterà il mercato con uno stand della neonata Naonix al Sigep di Rimini, dal 21 gennaio. E’ emozionante!

Ecco il video pubblicato su Youtube che la presenta:

Credo molto nell’HTML5. Mi sono convinto che una applicazione Web sia decisamente più pratica da sviluppare e manutenere, specie grazie a ASP.NET MVC (almeno per i miei gusti).

E adesso che si stanno diffondendo i giochi scritti in HTML5 (e soprattutto sul Canvas) è un escalation di entusiasmi.

Oggi ho raggiunto il culmine avendo trovato Angry Birds (visto, ma mai giocato) scritto in HTML5. Lo trovate su http://chrome.angrybirds.com/. Attenti: molto coinvolgente!

In questo blog ci sono articoli interessanti a “internals” su .NET.

Anche questo sulle Dependency Property di WPF….

Quando ho tempo….

Per riferimento, quando avrò tempo di leggerli, un paio di post sui costi di Windows Azure:

http://robindotnet.wordpress.com/2011/07/18/host-your-clickonce-deployment-in-azure-for-pennies-per-month/

http://blogs.msdn.com/b/windowsazurestorage/archive/2010/07/09/understanding-windows-azure-storage-billing-bandwidth-transactions-and-capacity.aspx

My tweets

Follow

Get every new post delivered to your Inbox.