Se si utilizza una macchina virtuale come ambiente di sviluppo, gli strumenti dovrebbero essere installati nella VM o nell'host?

3

Ci sono già un paio di domande qui per decidere se utilizzare o meno una VM come ambiente di sviluppo. Non desidero rispondere a questa domanda qui, ma presumo che una VM debba essere utilizzata come ambiente di sviluppo.

La mia domanda qui è sulle linee guida per quali strumenti dovrebbero esistere nella VM e quali dovrebbero esistere sull'host.

Ad esempio, in genere utilizzerei una VM in modalità headless per lo sviluppo in quanto una GUI virtuale spesso significa un ritardo. Ciò limiterebbe l'uso di un editor di testo per essere uno strumento da riga di comando come VIM o per un editor di testo della GUI come il testo sublime da eseguire nell'host con una directory condivisa.

Questo porta quindi a strumenti di generazione del codice (scaffolding) come Yeoman's yo. Quale sarebbe il vantaggio questo all'interno di una VM?

Mi piacerebbe conoscere alcune linee guida generali in modo che possa avere un utile flusso di lavoro per gli sviluppatori.

    
posta Mr Wilde 09.01.2015 - 20:12
fonte

1 risposta

2

Ecco cosa faccio:

Abbiamo una VM per ogni componente del nostro software, più uno che contiene un server SVN che esegue il controllo della versione per il codice. Di solito esporto una copia del codice da SVN alla mia macchina locale, che è Windows e ha IDE migliori rispetto a Vim o Emacs (io uso Eclipse). Esportandolo, non è più nel controllo della versione, quindi è completamente esterno a SVN. Il nostro processo qui è che non commettiamo alcuna modifica a meno che non siamo assolutamente sicuri che funzioni.

Sviluppo sul mio computer locale, quindi eseguo uno sftp sui file modificati sulla VM, che eseguirà e testerà il codice. Risciacquare, ripetere fino a quando tutto ciò che sto facendo è finito. Quindi, carica il repository da SVN nel mio Eclipse usando Subclipse, fai in modo che le modifiche che so sicuramente funzionino, quindi esegui il commit.

Infine, disponi di una VM che usi per eseguire test di sistema, per assicurarti che le tue modifiche funzionino.

Per rispondere alla tua domanda: Tutti gli strumenti dovrebbero vivere all'interno della VM. Tutto quello che fai nella tua casella locale è il codice di scrittura. Almeno, questo è quello che faccio.

Sorprendentemente, questo è molto simile ad avere un ambiente non VM in cui ogni server ospita un grande componente del software. Il compromesso del "lag" della VM è che si risparmia molto spazio sul rack. Una volta ho ridisegnato un laboratorio di sviluppo e tagliato 5 rack di server completi in un mezzo rack usando solo VM. Ha salvato un sacco di soldi.

    
risposta data 09.01.2015 - 20:30
fonte

Leggi altre domande sui tag