Qual è un buon flusso di lavoro degli sviluppatori per i team? (Basato su VM) [chiuso]

3

Normalmente lavoro da solo come libero professionista, e il setup che utilizzo ha funzionato abbastanza bene per me finora. Non sono sicuro che sia la configurazione ottimale per una squadra.

Sviluppo su Windows e ho installato una VM Linux sul mio computer locale, eseguendo lo stesso OS / stack delle nostre macchine di produzione (CentOS, Nginx, PHP-FPM). Metto su Samba e mappo il mio webroot su un'unità in Windows. A livello locale, ho impostato scorciatoie host come http://someproject.local/ . Per condividere con il team, utilizzo il mio indirizzo IP o un nome DNS interno come http://brandon/someproject .

Stavo pensando che una possibile modifica a questo flusso di lavoro sarebbe stata spostare le VM su uno dei nostri server di virtualizzazione interni. Uno degli amministratori di sistema potrebbe crearne uno nuovo basato su un'immagine VM e in questo modo tutti gli sviluppatori utilizzano la stessa configurazione. Significa anche che tutto è stato eseguito correttamente.

Un altro di cui ho letto sarebbe una singola VM di sviluppo, in cui ogni dev ottiene una cartella piena di progetti che mappano sul loro disco locale, e qualsiasi altro sviluppatore potrebbe vedere il progetto andando a http://thedevbox/developer_name/project_name . Non mi piace questo approccio, visto che non sarei in grado di giocare con lo stack del server se volessi / avessi bisogno di troppo.

Quali impostazioni utilizzi nel tuo lavoro?

    
posta Brandon Wamboldt 24.03.2013 - 23:46
fonte

3 risposte

3

Questo è ciò che Vagrant è stato progettato per gestire per te. Si imposta una casella base, tutti gli sviluppatori possono installare la stessa immagine virtuale eseguendo un singolo comando. Puoi configurarlo per esporre una porta sull'immagine virtuale sul computer host in modo che altre macchine possano vederlo con una singola riga di codice.

    
risposta data 25.03.2013 - 03:39
fonte
1

Per me, la ragione per sviluppare una macchina virtuale Linux è che sarà esattamente uguale al tuo ambiente di produzione . Questo è sicuramente quello che vuoi. Dare a tutti gli sviluppatori l'accesso completo alla loro VM di sviluppo per essere in grado di pasticciare con lo stack del server non è probabilmente quello che vuoi. Non vuoi che qualcuno cambi qualcosa da cui dipenderti in seguito, quindi devi preoccuparti di mantenere sincronizzati tutti i cambiamenti del server su tutte le VM di sviluppo. Significa anche che tutti i tuoi sviluppatori avranno bisogno di imparare le idiosincrasie del tuo software per macchine virtuali. Questo può effettivamente masticare molto tempo. Ho usato la virtualbox di Sun e ci sono stati alcuni trucchi che hanno reso il setup molto lungo. Abbiamo iniziato a dare a tutti le loro VM virtuali ed è stato un vero dolore far sì che tutti capissero come funzionava, come impostarlo, ecc. In un altro posto dove lavoravamo tutti usavamo lo stesso box di sviluppo e funzionava alla grande:)

Uno svantaggio che posso vedere nell'avere una VM di grandi dimensioni è che deve essere molto più grande delle singole VM in esecuzione a livello locale, e deve essere gestito da qualcuno, e deve essere eseguito su un server che è più in alto del tempo. Ma questa è probabilmente una buona cosa - dovrebbe salvare tutto il tempo a lungo termine, se nominate il vostro miglior sysadmin come amministratore di sistema di quella casella.

    
risposta data 24.03.2013 - 23:57
fonte
1

Una singola grande VM differirebbe dal server di produzione per il fatto che avrà molte istanze dell'applicazione in esecuzione; La produzione ha solo uno. Come hai detto, impedisce anche di giocare con lo stack del server, e se qualcosa si rompe, è rotto per tutti.

Con le singole macchine virtuali a basso costo (= facile) da creare, puoi provare cose, rompere cose e riavviare facilmente. Puoi avviare una nuova VM per ogni modifica su cui stai lavorando. Puoi testare lo stesso codice con n diverse configurazioni contemporaneamente.

Ad ogni modo, se le tue VM sono su un server da qualche parte, potresti voler utilizzare un NAS per tutte le cartelle /home/ , per risparmiare un po 'di fatica con i backup e le sincronizzazioni.

Facebook usa lo stesso approccio, eccetto che usano macchine fisiche invece di macchine virtuali; Provisioning e re-imaging di una macchina è facile da fare e self-service, che è la parte importante.

    
risposta data 25.03.2013 - 00:41
fonte

Leggi altre domande sui tag