Sviluppo Web: nessun flusso di lavoro del server locale

4

Sto considerando la reingegnerizzazione del mio ecosistema di sviluppo web. Utilizziamo Git con grande successo per implementare nuove modifiche ai nostri server di produzione, gestione e sviluppo. Tradizionalmente, ho sempre avuto una copia di Apache sulla mia macchina locale - nell'interesse di mantenere la mia macchina locale più snella possibile, sto considerando di eseguire Apache in una VM non locale e di sincronizzare le modifiche in qualche modo.

Il mio pensiero iniziale era di eseguire qualcosa come rsync e cron (sistema di sviluppo Mac) per monitorare la directory per le modifiche ai file e quindi sincronizzarli. Sono stato tentato di usare un ramo separato in Git e di scrivere un hook per fare in modo che il server Apache inserisca le modifiche, ma il versioning di tutte le mie modifiche potrebbe essere improduttivo, in particolare su aggiunte molto sperimentali.

La mia domanda è, c'è qualcosa che non sto considerando in questo flusso di lavoro? Questo particolare progetto richiede ColdFusion, quindi ho intenzione di realizzare vantaggi significativi rispetto al non avere Apache / CFIDE localmente?

    
posta Nic 11.03.2012 - 07:26
fonte

4 risposte

5

Non importa se il tuo server è locale o su una macchina separata; ciò che conta è se puoi testare qualsiasi modifica al tuo codice abbastanza velocemente. Ad esempio, non è necessario attendere nemmeno un minuto perché un cron job esegua le modifiche al codice sul server. In genere, è necessario testare prima tutte le modifiche al codice e quindi controllarle nel repository.

Quindi per una macchina separata, ciò di cui hai bisogno è una rapida possibilità di trasferire le modifiche del codice dalla tua macchina locale al server di sviluppo "on-demand". Un semplice script di shell, l'accesso al server, l'esecuzione di alcuni comandi lì, che è possibile eseguire senza problemi dalla casella locale dovrebbe farlo. Il modo in cui questo script deve apparire dipende principalmente dall'ambiente di rete, forse sono necessari solo alcuni comandi ftp , ma poiché hai menzionato rsync , suppongo tu abbia un file system condiviso disponibile.

Se questo diventa abbastanza "veloce" per te, dovrai testarlo da solo nel tuo ambiente. E forse dovresti fare un po 'di ottimizzazione (la velocità della rete, ad esempio, potrebbe essere un fattore se hai una grande base di codice con diverse decine di migliaia di file).

    
risposta data 11.03.2012 - 08:46
fonte
2

Hai provato a esportare semplicemente la versione sul server di sviluppo come condivisione di rete e in questo modo in via di sviluppo?

Sono nella situazione inversa. Ho una workstation con spazio di archiviazione limitato, ma un sacco di grugniti. Ho un NAS con un'esportazione NFS che uso come /home con pochi problemi su Gigabit Ethernet. Tutti i file web sono su quella condivisione, insieme alla maggior parte dei file utilizzati dal resto dei servizi sul mio PC, ed è molto reattivo con una dorsale gigabit. Tieni presente che nel tuo caso, tutti i servizi saranno sulla stessa macchina locale dei file, quindi è solo l'editor che deve accedere ai file attraverso la rete. Dovresti vedere prestazioni ancora migliori.

    
risposta data 11.03.2012 - 11:51
fonte
1

Dipende dal fatto che lo stack di sviluppo implichi o meno un passo di costruzione.

In tal caso, aggiungere un passaggio di "copia al server di sviluppo" alla configurazione di build personale. Se ti affidi a debug passo dopo passo, controlla se il tuo ambiente di sviluppo supporta il debug remoto.

L'altra soluzione è quella di mantenere i file sorgente sul server remoto in primo luogo, e lavorarci sopra. O ssh nel server e codice su ssh (se sei un tipo di vi / emacs, funziona abbastanza bene) o monta le directory rilevanti sul server localmente.

    
risposta data 11.03.2012 - 09:16
fonte
1

Vediamo le soluzioni qui:

Aggiunta di un comando deploy sulla configurazione della build

Questo è un grande no-no per scopi di sviluppo. Questo deve essere usato solo per il controllo qualità da un team diverso (preferibilmente il team QA, ma un altro sviluppatore che non ha familiarità con il progetto potrebbe aiutare).

Sincronizzazione dei file locali in una posizione remota in cui si trova il server Web

Potrebbe funzionare, tuttavia il tempo impiegato per sincronizzare effettivamente i dati (o i controlli costanti) sarebbe un sacco di ritardo / sovraccarico non necessario quando si desidera testare una soluzione rapida, ad esempio.

Mantenendo il tuo apache locale ma attivandolo / disattivandolo

Questo potrebbe aiutare ad accrescere il tuo sistema, ma comunque il sovraccarico ogni volta sarebbe maggiore del guadagno in termini di prestazioni.

Il mio suggerimento:

Dovresti configurare una workstation per lavorare direttamente su una cartella condivisa. Ciò significa che si salvano le modifiche direttamente nella cartella del server web. Il sovraccarico è minimo e per lo più inosservato dato che quando si preme save, quindi alt + tab per il refresh, il file è già stato passato al server web. Tieni il tuo computer con il software minimo richiesto solo per lo sviluppo, un po 'come un terminale.

    
risposta data 11.03.2012 - 14:27
fonte

Leggi altre domande sui tag