Cloud computing, una bella esperienza

Negli ultimi tempi, ho avuto il piacere di sperimentare direttamente una realizzazione in ottica cloud computing.

Brevemente: ho lavorato alla progettazione e allo sviluppo di un’applicazione CRM fully WEB 2.0 in un ambiente cloud. Partendo da una soluzione preesistente open source, sviluppata secondo logiche tradizionali, si è realizzata una completa reingegnerizzazione per garantirne l’esecuzione in un cloud environment.

La capacità di auto provisioning dei sistemi del cloud hosting provider, specifici meccanismi di sicurezza per la trasmissione/elaborazione dei dati e le tecnologie scelte per development/deployment, hanno contribuito alla realizzazione di un prodotto con una notevole capacità di crescita sia per potenza di elaborazione sia per funzionalità erogabili.

Le tecnologie di prodotto sono: Java (per il backend) e PHP (per i moduli di gestione del frontend). L’implementazione è incentrata su un layer applicativo in grado di garantire l’esecuzione autocontenitiva (supportata da soluzioni di persistenza dei dati, H8) su Virtual Machine e web/application server distribuiti.

Gli ambienti usati per development/deployment e l’approccio progettuale scelto, hanno favorito la realizzazione di una soluzione in grado di aprirsi con un minimo sforzo ad una moltitudine di canali (da IPhone ai web browser tradizionali).

Puntando al cloud computing è, inoltre, stato possibile innescare un circolo virtuoso, ottenendo vantaggi immediatamente percepibili sui costi complessivi di attivazione, gestione e manutenzione delle infrastrutture hardware e software di base.

Sul piano dello sviluppo software, devo dire che esistono strumenti ed accorgimenti tecnici in grado di agevolare il porting di applicazioni tradizionali (p.e. Java apps) verso contesti cloud.

Riassumendo (punti di vista personali):

1) per il successo di progetti destinati al mondo cloud, è fondamentale la scelta di una appropriata metodologia di progettazione agile. Nel caso in esame, per i tempi strettissimi e le esigenze di refactoring, la scelta è ricaduata su un approccio di XP (eXtreme Programming);

2) è consigliabile scegliere o partire da tecnologie intrinsecamente aperte al mondo cloud come per esempio Java (ma lo stesso discorso può essere anche applicato ad una parte del mondo Microsoft) ed alcune altre tecnologie/framework per il mondo Web (non tutte!);

3) uno sviluppo software destinato al mondo cloud, a mio avviso, non può prescindere da un disegno architetturale di tipo SOA (Service Oriented Architecture);

4) è anche interessante conoscere i pareri discordanti sul cloud computing. Per esempio, le considerazioni di Richard Stallman (guru del movimento del software libero) riportate in questo articolo (in italiano). Stallman, comunque, fa riferimento ad un tipo di cloud computing maggiormente orientato a certe applicazioni aperte al grande pubblico.

Concludo proponendo un interessante video introduttivo sul cloud computing (stesso video, ma in inglese qui).

Quali sono le principali piattaforme cloud sul mercato? Quali i principali vendor di infrastrutture cloud? Quali i principali vendor di applicazioni cloud? Ecco un buon articolo per trovare le risposte e scoprire l’andamento del mercato.

Leave a comment

Your comment