Coding in the Cloud

Internet ci ha permesso di lavorare ovunque vogliamo, dandoci un'enorme flessibilità nella scelta di dove vorremmo piantarci per costruire la prossima fantastica app. Non essere legato a una scrivania è stato una benedizione per molti che amano la capacità di lavorare in ambienti diversi e traggono ispirazione da ciò che li circonda. Ma per la maggior parte, abbiamo avuto bisogno di avere una macchina di sviluppo in piena regola per farlo accadere. Cosa accadrebbe se potessimo sfruttare il cloud come ambiente di sviluppo stesso, liberandoci per scegliere tra una varietà di dispositivi per realizzare la stessa cosa. Questo è quello che esploreremo in questo articolo.

Coding in the Cloud

Come ho detto, fino ad ora, che tu fossi in un ufficio o seduto in un bar, nella maggior parte dei casi hai bisogno di una macchina di sviluppo (un MacBook, Windows o Linux laptop) che potrebbe avere le seguenti cose:

  • Un editor o IDE come Sublime, Vim o Visual Studio
  • Un server web locale come MAMP
  • Un app server e framework (RoR, Python / Django, Node.js)
  • Idiota
  • LiveReload o CodeKit

E innumerevoli altri strumenti su cui fai affidamento per portare a termine il tuo lavoro. Questo in genere richiede di avere una macchina robusta con cui lavorare in modo da poter alimentare tutti questi strumenti ed essere produttivi.

Ma con la diffusione della banda larga sempre più diffusa, i requisiti per avere un dispositivo così potente stanno diventando meno rigorosi a causa del numero di offerte cloud disponibili per gli sviluppatori. Servizi come Cloud9 IDE e Nitrous.io stanno portando nel cloud ambienti di sviluppo reali e consentono agli sviluppatori di lavorare in remoto e offrono maggiore flessibilità in termini di dispositivi con cui scelgono di lavorare.

Questi servizi non solo portano gli IDE sul Web, ma forniscono anche un'infrastruttura che offre agli sviluppatori:

  • Completa integrazione Git con servizi come Github e Bitbucket
  • Accesso al terminale per la funzionalità della riga di comando
  • Backend virtualizzati che ti permettono di creare istanze di RoR o Node.js
  • Distribuzione in servizi di produzione come Heroku o Windows Azure
  • Collaborazione in team

Fondamentalmente, questi servizi si aggiungono nel lavello della cucina, rendendo il passaggio alla nuvola molto più semplice e allettante. Esploriamo questi un po 'di più.


Cloud9 IDE

La mia prima esposizione a a vero l'IDE cloud-based era Cloud9. Avevano un editor online molto semplice con l'integrazione di Github che era molto interessante e ovviamente molto alfa in quel momento. Ciò nonostante, è stato incredibilmente promettente e, insieme al lavoro svolto da Mozilla su Bespin, ha mostrato un enorme potenziale. È interessante notare che il progetto Mozilla Bespin è stato successivamente fuso in Ace, l'editor di Cloud9, che sembra aver contribuito notevolmente alla solida esperienza di editing nell'IDE basata su cloud.

C9 adotta un approccio di pricing molto simile a Github, offrendo un bel set di funzionalità di base tramite un modello freemium con funzionalità più illimitate a $ 12 al mese. Le differenze si riducono al tipo di aree di lavoro che hai, al numero che puoi avere e alle funzionalità disponibili all'interno di quelle aree di lavoro. Uno spazio di lavoro è il luogo in cui vive il tuo progetto, inclusi i file di progetto e gli strumenti e i servizi che potresti utilizzare (come Ruby o Python). Quindi, a seconda di quanto siano sofisticati i tuoi bisogni, potresti dover considerare seriamente l'opzione premium che ti offre:

  • Altri cinque spazi di lavoro privati
  • Spazi di lavoro FTP illimitati
  • Più spazio su disco virtuale per le tue aree di lavoro
  • Terminale completo e accesso alla riga di comando all'interno delle aree di lavoro

Le opzioni del terminale sono particolarmente importanti dal momento che C9 ti consente di accedere a SSH e FTP nel tuo server, consentendo in pratica di utilizzare il loro servizio esclusivamente come IDE basato su cloud.

Il fatto che offrano un'opzione freemium è ottimo per dare dei calci alle gomme per vedere se è un servizio in cui puoi entrare.

Hai un paio di opzioni per l'accesso, incluso uno scenario tradizionale di email / password oppure puoi utilizzare OAuth tramite GitHub o BitBucket. Facendo così con questi ultimi due ti dà accesso ai repository che hai già memorizzato su quei servizi, come evidenziato qui:

L'area di lavoro mi consente di clonare un repository esistente dall'elenco importato, clonarlo da un URL di mia scelta o creare un nuovo spazio di lavoro basato su un server remoto (tramite SSH o FTP)

Ho deciso di clonare il mio repo Git "authy" che era il codice sorgente di esempio che ho scritto per un articolo qui su Nettuts + sull'autenticazione a due fattori. Il server delle app che ho usato per questo era ColdFusion ed ero molto eccitato all'idea che il C9 riconoscesse correttamente i file ColdFusion. Onestamente non me lo aspettavo dal momento che CFML non è così popolare come un tempo:

Si noti che tutta la struttura del mio progetto è stata mantenuta integra e che ho capacità di modifica completa sui miei file. Inoltre, ho anche accesso ai comandi completi del terminale:

Per guidare questa casa un po 'di più, nota nello screenshot seguente ho apportato una modifica a gettoken.cfm aggiungendo un commento. Digitando stato git nel pannello terminale visualizza lo stato modificato del file esattamente come ci si aspetterebbe:

Quindi seguire con git commit -a -m "Commento aggiunto" e spingere aggiorna il mio repo di conseguenza:

Una caratteristica chiave a cui piace il C9 è la funzionalità di completamento automatico di JavaScript e ha senso dal momento che è una risorsa inestimabile in qualsiasi editor.

So che recentemente si è discusso molto sul fatto che il completamento automatico ostacoli la tua capacità di ricordare le caratteristiche linguistiche, ma con il crescente livello di complessità nelle librerie, nei framework e negli strumenti, personalmente trovo molto utile avere un piccolo aiuto nel ricordare le cose. Mi auguro che abbiano offerto più supporto linguistico.

Uno dei maggiori punti di forza è la maturità della documentazione. Copre tutto ciò che riguarda il servizio dalla personalizzazione dell'IDE all'integrazione con i sistemi di database e all'implementazione del codice. Esistono numerosi tutorial video che puoi sfruttare per familiarizzare con il servizio, che completa la solida documentazione.

Infine, se sei avventuroso, potresti decidere di pubblicare la tua versione di Cloud9 IDE poiché è un progetto open-source con licenza GPL. La pagina GitHub offre buone istruzioni su come installarlo, sia come * nix che come ambienti Windows, quindi se vuoi rinunciare al costo, fallo.


Nitrous.IO

Nitrous.IO (che chiamerò Nitrous da ora in poi) è una nuova opzione che ha ricevuto molti elogi da parte di sviluppatori come Yehuda Kathz del progetto Ember.js e Tobias Lutke, alunni di Rails Core. È ancora in beta, ma funziona bene a questo punto. Hanno preso l'approccio di offrire uno stack virtualizzato completo che comprende non solo un IDE ma anche una serie di "scatole" che sostanzialmente ospitano l'intero stack di sviluppo. Ciò include la scelta di Ruby on Rails, Node.js, Python / Django o Go.

Simile a C9, offrono servizi di base che ti permettono di calciare le gomme. Questo viene fatto assegnando un numero sufficiente di punti "nitrous" (155) per creare una scatola base che, secondo loro, dovrebbe essere sufficiente per la maggior parte delle attività quotidiane. Si noti nell'immagine sopra che la quantità di memoria e di memoria selezionata influisce sulla quantità di punti di nitro che ti rimangono. La scatola base standard ti lascerà con cinque punti e, come molti provider di hosting VPS, puoi scegliere dinamicamente più risorse a seconda di ciò che ti serve. Sono sicuro che questo avrà un costo una volta terminato la beta, ma rendono incredibilmente facile guadagnare più punti senza aprire il portafoglio. Tramite un paio di diversi collegamenti e attività di social outreach, puoi guadagnare più punti verso le tue caratteristiche di box:

Notare che scegliendo un paio di opzioni, sono stato in grado di aumentare i miei punti N20 da 155 a 180 e più amici inviti più punti guadagni. Solo non essere uno spammer fastidioso però!

L'impostazione di una casella è più che la semplice selezione delle risorse. Una parte importante di questo, in termini di prestazioni, consiste nel scegliere la regione geografica più vicina per ridurre la latenza. In realtà, si occupano di questo durante il loro video introduttivo.

Una volta che hai scelto le tue impostazioni, il provisioning della scatola è incredibilmente semplice e ha anche un bel quadrante di avanzamento animato:

L'IDE viene quindi visualizzato e sei pronto per iniziare il tuo lavoro:

A differenza di C9, però, non ho trovato un modo per vedere visivamente i repository Github disponibili. Ho pensato che collegarmi a Github mi avrebbe permesso di clonare facilmente uno dei miei repository nella mia scatola. Ho finito per seguire queste istruzioni per aggiungere le chiavi SSH generate da Nitrous al mio account Github e quindi git clonare uno dei miei repository nell'IDE:

Avrei anche potuto usare la funzionalità di upload per caricare i miei file di progetto:

Mi sembra che ottenere un accesso visivo diretto al tuo repository GitHub sia una caratteristica prioritaria che il team di Nitrous dovrebbe guardare e qualcosa che penso sia un vantaggio per C9.

Con i file installati, era giunto il momento di vedere come funzionava l'IDE e sembrava che tutto funzionasse molto bene, riconoscendo facilmente diversi tipi di file e offrendo l'evidenziazione della sintassi in base al tipo di file:

A differenza di C9, tuttavia, non è stato eseguito il completamento automatico, quindi è necessario determinare la preziosa funzionalità che è disponibile. Ma come C9, le scorciatoie da tastiera per attività comuni come il salvataggio di un file o le schede di chiusura sono tutte lì.

Per chi è abituato a lavorare nel terminale, troverai Nitrous facile da adattare. In effetti, avrai davvero bisogno di sentirti a tuo agio per sfruttare appieno il servizio. L'installazione e l'avvio di pacchetti come MongoDB o Memcached avvengono tramite il gestore di pacchetti Nitrous chiamato Parti che, avete indovinato, è basato sulla riga di comando. Ad esempio, l'installazione di MongoDB dovrebbe essere come questa:

parti installano mongodb

Se sei abituato apt-get su Linux o preparare l'installazione su OS X, questa sintassi dovrebbe essere molto familiare.

La cosa principale da ricordare è che l'editor è solo una parte dell'equazione. Fondamentalmente stai eseguendo una macchina completa qui all'interno di un browser web, quindi stare comodo in un ambiente * nix ti darà sicuramente un vantaggio.

Anche l'implementazione del tuo sito richiede l'uso della riga di comando. Non c'è un'opzione "basta premere un pulsante" qui. Nitrous si integra facilmente con i seguenti servizi:

  • Heroku
  • Google App Engine
  • Microsoft Azure
  • Nodejitsu

Ciò offre una copertura piuttosto buona a diversi servizi basati su cloud di grandi dimensioni. Ero curioso del supporto di distribuzione per Amazon ma non sono riuscito a trovare molte informazioni su questo, almeno non abbastanza da essere in grado di capire come impostarlo.

Detto questo, la loro documentazione è molto ben organizzata e ti guiderà facilmente attraverso la maggior parte delle attività necessarie per essere operativi con il loro servizio.


Per Cloud o Not to Cloud

Entrambi i servizi sembrano offrire caratteristiche interessanti che potrebbero facilitare il passaggio allo sviluppo basato sul cloud a tempo pieno. Con così tanti dispositivi a basso costo che sono chiaramente indirizzati ai consumatori che vogliono essere sempre connessi, è logico che questi servizi inizino a evolversi e forse a guadagnare terreno.

È difficile immaginare di rinunciare al mio fidato laptop con il suo processore i7 e SSD veloce per un ambiente di sviluppo completamente cloud, ma non posso assolutamente escluderlo. Tutte le principali società di software stanno proponendo servizi cloud e sono sicuro che ognuno di voi che legge utilizza più servizi cloud quotidianamente. Sembra un passo logico iniziare a considerare la codifica nel cloud.