6

La mia squadra è stata sempre più in sistemi CMS nel corso degli ultimi due anni. Stiamo anche diventando sempre più un'integrazione continua. La riconciliazione dei due ha dimostrato di essere difficile. Per renderlo ancora peggio, facciamo siti LAMP e .NET, quindi i nostri script funzionano idealmente per entrambi.implementazioni di database automatizzati con contenuti generati dagli utenti (alla CMS)

abbiamo quattro ambienti per ogni sito locale, l'integrazione, staging e produzione. La voce di contenuto e il caricamento di file si verificano regolarmente sul sito di produzione. Lo sviluppo ovviamente inizia localmente e si avvia verso l'alto.

Quali sono alcuni dei metodi o delle tecniche che posso implementare sul mio server di build per inviare automaticamente gli aggiornamenti di dati e schemi dagli ambienti di sviluppo alla produzione senza sovrascrivere il contenuto generato dall'utente? Al contrario, in che modo (e quando) posso disegnare automaticamente i dati generati dagli utenti negli ambienti di sviluppo?

risposta

1

avrete 3 tipi di cose nel database è necessario preoccuparsi.

1) Lo schema, che può essere definito nel DDL. 2) Dati statici o di ricerca, che possono essere definiti in DML. 3) Dati dinamici (o utente) che possono anche essere definiti in DML.

normalmente cambia a (1) e (2) deve solo andare fino alla produzione con il codice sono reciprocamente affidamento su. (3) non dovrebbe mai salire, ma può essere copiato negli ambienti di sviluppo se sono sincronizzati con gli ambienti di produzione in quel momento.

Naturalmente è molto più complicato di così. Per ottenere (1) può essere necessario convertire exsiting schema/DDL in specifiche alter dichiarazioni e può anche richiedere la manipolazione dei dati se i tipi di dati o le posizioni stanno cambiando. Per ottenere (2) in su richiede la sincronizzazione con la build del codice che può diventare difficile in ambienti complessi.

Ci sono molti strumenti là fuori e se avete bisogno di automazione, allora probabilmente avete bisogno di consigli da qualcuno familiarità con loro.

Uso uno schema molto semplice in cui tutte le modifiche dello schema si riflettono in uno script di compilazione SQL e sono inoltre aggiunte a uno script SQL di modifiche che include tutto l'SQL richiesto per eseguire qualsiasi trasformazione richiesta. Questo funziona bene per me, ma il mio scenario è molto semplice (1 persona, 1 server) ed è quindi atipico.

Tuttavia la chiave di ogni successo sta definendo il lavoro richiesto per le modifiche al momento del cambiamento è fatto.Il semplice metodo di modificare semplicemente il DB di sviluppo e quindi eseguire la riparazione al momento della distribuzione è un disastro.

0

Per A) la cosa migliore è usare un sistema di priorità. Dove il tuo contenuto è "predefinito" e il contenuto dell'utente "lo sostituisce". E questo contenuto è in due posti diversi. Quindi, aggiorni i tuoi contenuti senza alcuna possibilità di dover affrontare qualsiasi tipo di processo di fusione. I tuoi dati possono essere in una directory diversa o contrassegnati in modo diverso nel DB, qualunque sia. Lo svantaggio di questo è che non si può semplicemente utilizzare la funzionalità di base del server al di fuori del server per eseguire il backup dei dati, a meno che non si esegua il mapping effettivo quando vengono generati i collegamenti.

ie si può intercettare /site/images/icon.png e servire su /site/images/default/icon.png o /site/images/client/icon.png o quando si scrivono le pagine fuori può fare il check lì e inviare gli URL appropriati in modo che il server possa servirli direttamente.

Per il secondo, per quanto riguarda quando è possibile utilizzare i dati dei clienti, si tratta più di un problema IP legale che è necessario contattare il cliente per sapere se sono a) disposti eb) anche in grado di condividere il loro contenuto con te. Dopo ciò, la tecnologia è semplice.

+0

A causa della natura della nostra attività e dei contratti con i clienti, non ci sono quasi mai problemi legali con l'estrazione dei contenuti dai server di produzione. Non ho familiarità con la tecnologia. Ti dispiacerebbe elaborare? Sono abituato a fare il backup del DB e ripristinarlo, ma questo ovviamente ha dei problemi se lo fai e c'è uno sviluppo in corso. – Jeff