Sviluppo cloud: 9 trucchi da sapere prima di iniziare

Lo sviluppo e il test delle applicazioni nel cloud stanno guadagnando popolarità, poiché sempre più aziende lanciano iniziative di cloud computing pubbliche e private. Lo sviluppo nel cloud in genere include ambienti di sviluppo integrati, componenti di gestione del ciclo di vita delle applicazioni (come test e gestione della qualità, codice sorgente e gestione della configurazione, strumenti di distribuzione continua) e componenti di test della sicurezza delle applicazioni.

Sebbene i dirigenti tecnologici e gli sviluppatori con esperienza nello sviluppo basato su cloud affermino che lo sviluppo in questi ambienti offre chiari vantaggi, come il risparmio sui costi e una maggiore velocità di commercializzazione, avvertono anche che ci sono sfide e sorprese a cui prestare attenzione.

[Ottieni le spiegazioni e i consigli pratici di cui hai bisogno per trarre vantaggio reale dal cloud computing nel rapporto speciale di 21 pagine di Cloud Computing Deep Dive PDF degli editori. | Rimani aggiornato sul cloud con la newsletter di Cloud Computing Report. ]

Non è chiaro quanto sia probabile che lo sviluppo comune nel cloud diventi. Ma l'analisi del settore mostra che è in aumento. In una nota di ricerca del febbraio 2011, Gartner ha affermato che i clienti che hanno partecipato ai simposi dell'azienda nel 2010 hanno espresso "un forte aumento di interesse" per il cloud computing per migliorare lo sviluppo e la manutenzione delle applicazioni Web personalizzate esistenti.

"Lo vedo di più nella prototipazione e nello sviluppo di filiali parallele, ma c'è anche un'enorme crescita nello spazio dei test di carico e delle prestazioni", afferma Eric Knipp, principale analista di ricerca di Gartner.

Se stai cercando di avventurarti nello sviluppo del cloud per la prima volta, ecco nove tipi di ostacoli che potresti incontrare e suggerimenti su come affrontarli dagli sviluppatori che hanno effettivamente svolto il lavoro.

Aspetto 1: il cloud non funziona sempre come il "mondo reale"

Gli sviluppatori potrebbero scoprire che la configurazione che usano in produzione è difficile da replicare sui servizi cloud. Ad esempio, con un'applicazione che sviluppi nel cloud prima di riportare l'esecuzione in locale, potresti dover testare un sistema legacy che non puoi semplicemente copiare su un servizio cloud, afferma Knipp: "Ciò significa che potrebbero essercene molte più cose che gli sviluppatori devono interrompere per ottenere un'app di prova attiva e funzionante. "

La tecnologia di virtualizzazione dei servizi può aiutare, afferma Knipp, e gli sviluppatori possono trarre vantaggio dalle offerte di mercato che consentono lo sviluppo di filiali multiple / parallele. Prendi il caso di iTKO, che offre una suite software chiamata Lisa che aiuta le aziende a spostare le applicazioni aziendali nel cloud.

Gli sviluppatori abituati allo sviluppo non cloud potrebbero anche incontrare sorprese quando si tratta di creare applicazioni Web nel cloud. Ad esempio, Greg Taylor, che ha creato un'applicazione di registrazione online per la Ohio Music Education Association, non si aspettava di aver bisogno di una conoscenza così approfondita della struttura del database e di come gli utenti avrebbero interagito con esso quando ha creato l'applicazione.

L'app, che gestisce la registrazione degli artisti musicali scolastici nei contenuti musicali di tutto lo stato, utilizza un database MySQL come back-end e Alpha Five 10.5 di Alpha Software per il front-end. "Vengo da un background FileMaker Pro [e] quel prodotto è estremamente indulgente per quanto riguarda la struttura del database", afferma Taylor. "Un design scadente può ancora essere utilizzato con un discreto successo".

Ma lo sviluppo con MySQL ha costretto Taylor ad essere estremamente organizzato in modo che l'app Web avesse le migliori prestazioni possibili. Tornare alla struttura della tabella per aggiungere più campi richiede tempo, poiché implica la rotazione tra diversi strumenti di sviluppo, Navicat per MySQL e Alpha Five per il design della pagina Web, afferma. Il primo strumento crea la struttura del database, mentre il secondo crea le pagine con cui l'utente interagisce per inserire e modificare le informazioni nel database.

"Questo potrebbe non essere un problema per gli sviluppatori che sfruttano un database che è già stato creato", afferma Taylor. "Usavano semplicemente Alpha Five per sviluppare le pagine Web a cui un utente avrebbe accesso. Nel mio caso, stavo sviluppando contemporaneamente sia il database che le pagine Web, il che mi avrebbe richiesto di passare da uno strumento di sviluppo all'altro se non avessi pianificato accuratamente."

Per evitare questo continuo round trip, Taylor ha dovuto cambiare il suo approccio allo sviluppo del database: "Sviluppando un chiaro ERD [diagramma delle relazioni di entità] con tutti i campi necessari prima, la mia app Web è efficiente e il mio tempo di sviluppo complessivo è notevolmente ridotto".

In alcuni casi, gli strumenti di sviluppo cloud funzionano come il mondo reale, almeno della versione di ieri del mondo reale. Jeff Hensley, analista senior HRIS presso DaVita, una società di assistenza sanitaria specializzata in dialisi renale, è rimasto sorpreso dal fatto che gli sviluppatori che lavoravano nel cloud avessero bisogno di utilizzare strumenti da riga di comando, XML e SQL, "che mi hanno ricordato i vecchi tempi del DOS". Si aspetta che l'approccio della vecchia scuola cambi nel tempo con l'aumentare dell'adozione.

DaVita utilizza sia piattaforme di distribuzione delle applicazioni basate su cloud sia server ospitati per sviluppare e fornire applicazioni di data warehouse per le risorse umane e di business intelligence.

Aspetto dello sviluppo nel cloud 2: alcune app non sono ideali per lo sviluppo nel cloud

Ad esempio, Dan Stueck, vicepresidente IT di Faith Educational Ministries, evita di sviluppare applicazioni di fascia alta nel cloud che hanno limitazioni normative o di sicurezza dei dati estreme o si affidano a progetti di codifica legacy, come quelli di Cobol. "Quei due sono probabilmente meglio tenuti in casa", dice, "il primo per ovvi problemi di sicurezza e il secondo per il problema della lingua" morta ".

Dove Stueck ha utilizzato il cloud è eseguire un server di sviluppo sul servizio cloud pubblico di Amazon.com e creare un sistema informativo per gli studenti, un archivio delle trascrizioni degli studenti e un'applicazione per la vendita di libri scolastici a casa nel cloud.

Aspetto dello sviluppo del cloud 3: gli sviluppatori spesso non amano il territorio del cloud sconosciuto

"La cosa probabilmente più inaspettata è stata la buona accoglienza dell'intero progetto [sviluppo cloud] da parte dei team di gestione e vendita e da tutti coloro che utilizzano il sistema, [e] la scarsa ricezione da parte dell'organizzazione IT e in particolare degli sviluppatori "dice Mark Warren, capo architetto di 20/20.

Il personale IT era abituato a lavorare con Microsoft .Net, SQL Server, Java e altre piattaforme di sviluppo tradizionali, afferma Warren, e Force.com era un modello completamente diverso. "Se conosci SQL e Java, questa è la tua cassetta degli attrezzi, e non vorrai andare su questa piattaforma completamente aliena che sta arrivando", dice Warren.

Di conseguenza, l'applicazione di vendita è stata sviluppata principalmente dal personale aziendale, non dagli sviluppatori IT. Ciò ha comportato una serie di sfide, afferma Warren, la più grande delle quali è stata la mancanza di comprensione tra gli uomini d'affari sulla gestione del cambiamento e sulla governance IT. "L'IT ha un livello di disciplina che gli uomini d'affari non sono abituati a imporre loro", afferma Warren. "Abbiamo dovuto aggiornarli rapidamente sui problemi di gestione del cambiamento".

Per quanto riguarda la riluttanza delle persone tecnologiche a sviluppare in un ambiente cloud, ci sono programmi che l'IT può implementare per aiutare ad adottare il cloud computing internamente, afferma Warren. "La formazione è certamente un buon metodo per facilitare", dice. "Tuttavia, a meno che la cultura dell'IT non sia aperta a nuovi metodi e tecnologie, il cambiamento organizzativo [ottenere nuovi sviluppatori] potrebbe essere l'unica opzione".

Tocco sullo sviluppo cloud 4: la mancanza di documentazione ostacola gli sviluppatori cloud

"Mi aspetto che questo cambi con l'aumentare della domanda e sempre più aziende iniziano ad adattare il concetto di cloud", afferma Hensley. "Siamo stati in grado di combatterlo collaborando con una società di consulenza".

Tocco dello sviluppo cloud 5: i problemi di rete possono tormentare gli ambienti cloud privati

Embarcadero sta utilizzando il suo data center virtualizzato per la creazione e il test delle applicazioni. "Per i cloud privati ​​interni, abbiamo un paio di opzioni: la scelta della data / ora pianificata e la gestione temporanea dei server in un certo ordine", afferma Intersimone. "Esistono processi di compilazione automatizzata e test del fumo automatizzati che sono sempre in esecuzione nel nostro cloud privato principale e anche negli uffici di sviluppo regionale".

Per ottenere un ambiente più disponibile, Intersimone afferma che sta esaminando un contenitore cloud e un'offerta di rete privata virtuale di CohesiveFT che può essere installata in cloud pubblici e privati ​​per fornire scalabilità su richiesta, failover, ripristino di emergenza e preparazione ai disastri.

Altri problemi che possono influenzare lo sviluppo e il test riguardano i ritardi e la latenza della rete e le dimensioni dei tubi di rete, soprattutto in alcune parti del mondo. Embarcadero ha centri di ricerca e sviluppo a Scotts Valley, California, Monterey, California, Toronto, San Pietroburgo, Florida e Iasi, Romania, oltre a una manciata di piccoli team e individui in tutto il mondo.

L'ambiente di sviluppo geograficamente diversificato di Embarcadero "rende più difficile sincronizzare check-in, build e test automatici", afferma Intersimone. Per risolvere alcuni di questi problemi, gli sviluppatori eseguono build locali e regionali, così come il check-in del codice, sui server virtuali disponibili a tutti. Gli sviluppatori eseguono anche build locali sulle proprie macchine. Embarcadero garantisce che questi non perdano la sincronizzazione con le versioni master sul cloud privato utilizzando Subversion, uno strumento open source per il controllo del codice sorgente.

"Quando si verifica una build, viene eseguito un test automatizzato per convalidare la build", afferma Intersimone. "Quindi le notifiche vengono inviate a tutti i team di sviluppo e la build viene automaticamente trasferita su un muro cinese a un gran numero di macchine virtuali di test automatizzate presso i nostri centri di sviluppo." I test automatici e manuali vengono eseguiti sulla build risultante per verificare lo stato e le e-mail vengono inviate agli altri membri del team al termine del processo. "Tutto questo accade continuamente durante la vita di sviluppo di un progetto", afferma.

Gotcha 6 dello sviluppo cloud: è facile far funzionare inutilmente lo strumento sul cloud

Un altro potenziale problema è sprecare denaro per le tariffe del cloud. Gli sviluppatori possono facilmente dimenticare o trascurare di disattivare le macchine virtuali che non utilizzano. "Ho sentito da alcuni clienti che lasciavano che gli sviluppatori si scatenassero con le risorse delle macchine virtuali che a volte gli sviluppatori lasciavano tutto in funzione, diciamo per un fine settimana", dice Knipp di Gartner. "Quando si trovava su un server in-house con capitalizzazione, non era un grosso problema. Ma quando si tratta di risorse in leasing a consumo misurato come con il cloud computing pubblico, è uno spreco di denaro".

Knipp afferma che si aspetta che questa diventi una nuova sfida per le aziende mentre implementano iniziative di cloud privato.

Sebbene ci siano pochi rischi nell'ottenere una fattura grande e inaspettata per l'utilizzo della macchina virtuale dello sviluppatore in un cloud privato, "in un ambiente IaaS privato e self-service, uno sviluppatore può avviare le VM e non spegnerle mai", afferma Knipp. "Questi consumeranno effettivamente risorse da macchine che non vengono utilizzate in modo efficace e potrebbero far sì che l'organizzazione acquisti troppa capacità in quanto la pianificazione viene distorta".

Aspetto 7 dello sviluppo cloud: le licenze cloud possono contenere sorprendenti limitazioni di distribuzione

Tra i problemi non tecnici con il cloud che possono avere un impatto sullo sviluppo ci sono le restrizioni sulle licenze. Due anni fa Kelly Services, un'agenzia interinale nazionale, ha deciso di utilizzare lo sviluppo basato su cloud per molte delle sue applicazioni interne, con la piattaforma Force.com di Salesforce.com che funge da veicolo di consegna.

Lo sviluppo del cloud ha portato vantaggi come tempi di consegna più rapidi per lo sviluppo di app e costi inferiori, afferma Joe Drouin, CIO di Kelly Services. Ma la società ha anche riscontrato alcuni problemi imprevisti con la licenza, in particolare per quanto riguarda i tipi di postazioni utente e le limitazioni che avevano. Ad esempio, una postazione potrebbe avere un determinato numero di oggetti a cui un utente potrebbe accedere. Di conseguenza, "in alcuni punti siamo rimasti sorpresi da ciò che potevamo o non potevamo fare" con lo sviluppo, dice Drouin.

Problema di sviluppo cloud 8: l'integrazione può essere più difficile da risolvere