Qualche giorno fa il mio account adSense è stato disabilitato: perchè? Secondo Google “gravi e comprovati motivi”, come quando si veniva riformati a militare. Cotrollo i TOS, non mi pare di aver fatto nulla di male, forse manca il link alla privacy du tutte le pagine (su un blog personale, poi…), forse qualche parente ha fatto qualche click di troppo sui banner (ho una media di 2-3 click al giorno…): faccio ricorso chiedendo spiegazioni e la risposta di Google è “ricorso respinto per gravi e comprovati motivi”. Quindi non solo non ho capito cosa sia successo, ma ora ho la certezza che il mio account adSense non potrà essere più riabilitato.
Beh, non la prendo certo come fatto personale: il blog ha una media di un paio di centinaia di visitatori unici al giorno ed è tutta “gente del mestiere” o clienti, per cui sono partito ad usare adSense senza alcuna velleità di “far soldi”.
Certo che la cosa mi puzza alquanto, perchè se basta fare un paio di click al giorno per qualche settimana su un annuncio pubblicato da un sito “nemico” perchè venga “bannato” da adSense, beh, affidarsi al solo adSense mi sembra alquanto pericoloso!
Quindi, per chi vuole delle alternative perchè è stato bannato come o semplicemente perchè vuole dormire sonni tranquilli differenziando le fonti di entrate dalla pubblicità, vi presento qualche piattaforma che ho trovato interessante e che ho abilitato sul blog per capire se sono convenienti:

- adBrite è un sistema di vendita banner in cui si propone uno spazio del proprio sito a possibili compratori che, se interessati compreranno lo spazio sul sito. Oltre al classico banner, è possibile utilizzare adBrite anche per creare dei link in automatico sul testo del messaggio che rimandano a siti esterni nonchè inserire intere “sottopagine”. L’attivazione è pressochè immediata, ma non è semplice avere un sito interessante per un compratore.

- BitVertiser è un servizio analogo ad adSense e di immediata attivazione. Interessante che paghino dopo soli 10$ attraverso un accredito su paypal e la possibilità di creare toolbar personalizzate per il proprio sito

- affinity interpreta il contenuto della pagina per trovare possibili richiami a pubblicità. E’ possibile configurarlo per mostrare “intext link”, oppure per creare dei banner dall’aspetto simile ad un tag cloud. Una cosa un po’ noiosa è che per poter ricevere i pagamenti è necessario firmare una dichiarazione (tale Form W-8BEN).

- chitika è molto lento nell’attivazione in quanto, al pari di adSense viene controllato manualmente il sito. Nella maggior parte sei casi il sito viene attivato a livello “silver” con revenue non esaltanti; nel caso di un numero di impression elevato, si viene promossi a livello gold con revenue molto più elevate.

 

E’ senza dubbio il leitmotiv di questi giorni: Firefox ha appena rilasciato la versione 5 del suo browser, quando era solo da circa un mese che era “sul mercato” la versione 4 e buona parte degli utenti non ha ancora provveduto all’aggiornamento dalla ormai datata 3.6.
Ma non solo: è di oggi l’annuncio che la versione 4 non sarà più aggiornata e che entro l’anno sarà rilasciata sia la versione 6 che la versione 7!

Ma come mai tutta questa fretta? Gli sviluppatori sono presi da un “delirius coding”? Quali sono i pro e i contro di questa politica accelerata?

Partiamo dall’inizio e facciamo un po’ di chiarezza.

Innanzi tutto è bene precisare che Firefox è tuttora il browser più utilizzato: all’inizio c’era Netscape (il cui nome in codice era Mozilla) che una volta reso OpenSource e abbandonato da America on Line a fine anni ’90, è stato mantenuto dalla neonata Mozilla Foundation che ha creato il “Mozilla Suite”, cioè un insieme di programmi per il web tra cui il browser Mozilla Firefox.
Netscape è stato per molto tempo l’unica alternativa gratuita (ma terribilmente pesante) ad Internet Explorer. Quando è nato Mozilla Firefox, il “pubblico” si è innamorato di questo browser sia perchè è stata migliorata di molto la velocità rispetto a Netscape, sia per il rispetto degli standard HTML e W3C, sia perchè l’architettura totalemente aperta ha favorito quello che secondo me è il reale punto di forza di questo browser: i plugin esterni. Tutto questo, come già detto, ha reso Firefox il browser attualmente più utilizzato al mondo.

Negli ultimi anni si sono affacciati molti altri concorrenti OpenSource: uno di questi è Google Crome, che si è dimostrato particolarmente valido grazie alla sua velocità “turbo”, insidiando la supremazia di Firefox. Molti utenti, difatti, iniziano a preferire Chrome a Firefox, per cui alla Mozilla Foundation si è deciso di correre ai ripari.

Inutile nascondersi dietro ad un dito, quindi: il reale motivo di questa accelerazione nel rilascio di nuove versioni di Firefox è proprio dovuto alla necessità di dover competere con Chrome in termini di velocità, nel tentativo di arginare la migrazione di utenti verso il browser concorrente.

Ma questo servirà realmente a tenersi stretti gli utenti?

La mia opinione è no, proprio perchè a causa di questo velocissimo piano di sviluppo, anche gli sviluppatori di plugin esterni devono essere altrettanto veloci nel rilascio degli aggiornamenti. Ovviamente non si può pretendere che gli sviluppatori esterni, che spesso non hanno alle spalle colossi come la Mozilla Foundation, riescano a tenere il passo dei velocissimi ritmi della casa madre, cosa che porterà inevitabilmente ad avere plugin incompatibili ed inutilizzabili, perdendo quello che è, a mio avviso, il reale motivo di successo, da sempre, di Firefox cioè la possibilità di espansione grazie ad elementi esterni.

Poi solo il tempo decreterà se ho ragione io oppure la Mozilla Foundation…

 

Come spiegato precedentemente, con Google App Engine abbiamo a disposizione un framework server-side per creare applicazioni web che risiedono sul Cloud di Google. Questo è un bel passo in avanti per il programmatore, in quanto ha a disposizione un sistema per creare la propria applicazione senza dover pensare a tutte le problematiche di scalabilità e di storage distribuito proprie di un sistema in cloud: è sufficiente utilizzare le API di Google per gestire queste operazioni ed ecco che la vostra applicazione gestirà automaticamente tutte le peculiarità del Cloud.

Bene, ma lato client?

La nostra Web Application potrà fare cose davvero interessanti, ma se vengono presentate in una maniera poco accattivante l’applicazione non riscuoterà il successo sperato. Come già accennato precedentemente, è possibile utilizzare una versione appositamente creata di django o fare i salti mortali per usare Scala/Lift, però esite un altro sistema messo a disposizione direttamente da Google: il Web Toolkit.

Giusto per capire, mentre Google App Engine si occupa della parte server, Google Web Toolkit si occupa della parte client: questo SDK permette di avere delle primitive in Java per creare l’interfaccia utente in Web 2.0 della nostra applicazione, quindi la possibilità di creare pulsanti, finestre flottanti, ecc.

Mentre con Google App Engine si ha la libertà di scegliere il linguaggio da utilizzare, con il Google Web Toolkit si è legati a Java: in pratica l’interfaccia web viene scritta in Java e poi il compilatore crea il codice Javascript ottimizzato che sarà inviato al browser. Ecco perchè, a mio avviso, per avere una migliore “development experience” con i Tools di Google è opportuno scegliere Java come linguaggio di programmazione.

 

Google App Engine è il sistema più semplice per collaudare le potenzialità di un servizio PaaS. Difatti è un servizio che permette di ospitare la propria Web Application all’interno dell’infrastruttura cloud di Google.
E tutto sommato è anche una soluzione economica: difatti Google mette a disposizione gratuitamente uno storage di 500 MB e una potenza di calcolo sufficiente ad ospitare una applicazione con un numero di visite di circa 5 milioni al mese. Se questi valori dovessero andar stretti, è possibile utilizzare il servizio di billing per acquistare storage oppure potenza di calcolo.

E’ possibile accedere alla propria app sia tramite un sottodominio di “appspot.com”, sia attraverso un proprio dominio che però deve essere configurato con le Google Apps.

Google mette a disposizione due sandbox collaudate per sviluppare le proprie applicazioni: una in Java e l’altra in Python. Questo sembrerebbe precludere l’utilizzo di Google App Engine agli sviluppatori Ruby e PHP, anche se una possibile soluzione è quella di utilizzare Java per pubblicare un interprete PHP o Ruby e, quindi, riuscire ad utilizzare questi linguaggi.
In realtà questa non può essere la miglior soluzione in quanto è “un passaggio in più” che rende l’esecuzione della propria applicazione meno performante e perciò consiglio vivamente di utilizzare una sandbox supportata direttamente; in qualsiasi caso, se volete provare questa strada, date un’occhiata a Quercus per interpretare il PHP o jRuby per Ruby on Rails.

Nel caso in cui vogliate utilizzare direttamente uno dei due linguaggi, è possibile utilizzare il framework Django scegliendo la sandbox Python (in realtà serve una versione modificata chiamata Django norel per via del datastore non relazionale) oppure Lift scegliendo Java, anche se in questo caso è necessario passare per un interprete Java/Scala un po’ come per PHP o Ruby.

Come vedremo in un successivo articolo, Google mette a disposizione anche un suo framework in Java per creare applicazioni Web 2.0, Google Web Toolkit; questo per dire che per massimizzare l’investimento nello studio degli SDK di Google, forse la scelta di Java è la più indicata.

Esiste infine una terza Sandbox implementata in via sperimentale che consente di programmare in Go. Go è un linguaggio di programmazione semplice, nuovo, estremamente efficiente e nato proprio per lavorare su ambienti cluster e cloud. Anche se poco diffuso sembrerebbe un’ottima scelta per non dover lavorare su linguaggi potenti ma complessi come Java o Python.

Un discorso a parte merita il datastore: per memorizzare i dati da gestire con l’applicazione, Google mette a disposizione un suo sistema moltro simile all’SQL classico, ma con alcune limitazioni per renderlo efficiente su un sistema estremamente distribuito come è il suo cloud. GQL, ad esempio, permette di lavorare con una sola tabella alla volta e non permette in alcun modo le operazioni di join. In pratica tutte le funzionalità “relazionali” sono disabilitate, cosa che lo rende molto simile a NoSQL.

 

In questo articolo valuteremo alcuni servizi PaaS per ospitare web application.

Questo perchè non tutte le applicazioni sono uguali e, innanzi tutto, bisogna capire cosa dovrà fare l’applicazione per scegliere il linguaggio e il framework di sviluppo più opportuno e quindi, di conseguenza, il servizio PaaS adeguato. Non bisogna essere “talebani” focalizzandosi su un solo sistema per tutta la vita, bensi conoscere e saper valutare le differenze in modo da scegliere di volta in volta quello più adatto alle necessità dell’applicazione.

Premettiamo una cosa: se, come nel 99% dei casi, la nostra applicazione non è altro che un sito web con qualche feature 2.0, con collegamenti a database e vi aspettate che generi un traffico relativamente poco impegnativo, scegliere PHP non è sbagliato. Se invece si tratta di quell’1% dei casi in prevedete che l’applicazione verrà utilizzata intensamente (indendiamoci… voglio dire milioni di contatti giornalieri, non qualche centinaio o qalche migliaio), PHP probabilmente non è la scelta più adatta.

Difatti, se prendiamo in esame l’utilizzo delle risorse hardware, salta subito all’occhio che la maggior parte dei siti web passano il loro tempo “in idle”, cioè non sono costantemente visitati. In una simile situazione, che è la più comune e quindi anche la più semplice da affrontare, l’utilizzo di un linguaggio come PHP su una piattaforma di tipo PaaS tradizionale basata su una installazione LAMP condivisa è una scelta economicamente e tecnicamente poco impegnativa e che permette uno sviluppo dell’applicazione che è tutto sommato abbastanza facile.

LAMP, per chi non lo sapesse, è l’acronimo di Linux Apache MySQL PHP, cioè i quattro componenti che formano questo tipo di servizio PaaS. Risulta evidente che avere solo quattro componenti da gestire rende il sistema estremamente facile (e quindi economico), però impone dei limiti tali per cui in quel restante 1% dei casi si rende necessario un sistema molto più complesso.

Difatti, nel restante 1% dei casi concepiremo la nostra applicazione per non essere usata “spot” ma per essere un qualcosa che una volta lanciato continua ad operare; già da subito capiamo che scegliere una piattaforma LAMP per lo sviluppo non è la scelta migliore in quanto riusciremmo in pochi secondi a prendere possesso di tutte le risorse hardware della macchina facendola “sedere”. Per applicazioni di questo tipo Rails, Python e Java/Scala (e perchè no C++) sono linguaggi molto più adatti perchè permettono di lavorare a più stretto contatto con il sistema… anche se magari sembrano molto più impegnativi .

Inoltre, in una situazione di questo tipo, è importante prevedere che la nostra applicazione sia “scalabile” e che quindi non sia un unico grosso processo che gira su una macchina, ma che sia formata da più processi ed elementi che possono girare indipendentemente su più macchine. Così facendo la nostra applicazione potrà beneficiare delle potenzialità delle piattaforme cloud che permettono di istanziare nuovo hardware virtuale “on demand” permettendo alla nostra applicazione di scalare virtualmente all’infinito senza però dissanguarci per creare una infrastruttura hardware adeguata… oltre ad aggiungere una importantissima tolleranza ai guasti.

Oltre ai servizi PaaS su piattaforma LAMP dei “soliti noti” e di parecchi piccoli ma efficienti ISP, esistono già in commercio alcuni servizi PaaS “non LAMP” che sono in grado di scalare facilmente, anche se non sono proprio a buon mercato. I più conosciuti sono:

Se, invece, volete avere il massimo controllo di ogni componente e crearvi la vostra piattaforma “non LAMP” sopra una infrastruttura IaaS, vedremo in un prossimo articolo quali sono i componenti essenziali che la compongono.