Gestire i dati di pubblicazione negli ambienti

0

Sto riscrivendo un sito Web che dispone di un database di back-end per contenere i meta-dati che vengono visualizzati all'utente quando inseriscono un codice di testo.

Sfondo :

Il sistema vecchio / esistente memorizzava questi dati in file XML con un file XML di indice principale che puntava il file di dati corretto in base a un GUID. Il modo in cui questo viene attualmente gestito per la pubblicazione in produzione è che tutte le modifiche vengono eseguite in un ambiente di "staging" con i file memorizzati su Cloudfront in una cartella "staging". Quando vogliono apportare modifiche alla produzione, semplicemente copiano il file da "staging" a "production".

Ho aggiornato il sistema per utilizzare un RDB (Postgres localmente e sarà Aurora su AWS per la produzione). Sto usando Java per l'API con annotazioni JPA e Spring Boot. Ho un'app UI di amministrazione Java separata che gestisce i meta-dati e un'applicazione utente separata che è il sito Web in Angular. Il proprietario del prodotto vuole ancora essere in grado di testare le modifiche in ambienti meno recenti prima di pubblicarle sulla produzione.

Domanda :

Stavo cercando di trovare una soluzione per la pubblicazione e stavo pensando che potrei avere solo un env staging e un ambiente di produzione. Un collaboratore ha affermato che forse l'App di gestione temporanea punta in genere all'API di gestione temporanea, ma al momento della pubblicazione, fare in modo che punti l'API di produzione e non disporre di un'app di amministrazione di produzione. Il problema che sto incontrando sono le chiavi primarie. Non è possibile specificare la chiave primaria in JPA e farla generare automaticamente se non esiste. Ho provato diversi modi per farlo e si rompe se provo a inserire 1, 3, 2.

Qualcuno ha qualche consiglio su come gestire questa situazione? Trasferisci dati da un RDB a un altro RDB in un ambiente diverso mantenendo intatte tutte le relazioni.

    
posta Jon Tinsman 04.01.2016 - 19:44
fonte

1 risposta

-1

Potresti risolvere questo problema utilizzando una soluzione DevOps, piuttosto che il codice? Se si separa il contenuto dagli altri dati che si stanno memorizzando, è possibile utilizzare la potenza del cloud per acquisire un'istantanea del database del contenuto, quindi renderlo disponibile all'istanza di produzione, utilizzando i SDK API AWS . Potresti quindi aggiornare la stringa di connessione nell'app di produzione per il suo DB di contenuto. Ciò renderebbe anche semplice lo spostamento avanti e indietro, in quanto potresti tornare al vecchio DB di contenuti se qualcosa andasse storto per qualsiasi motivo.

    
risposta data 05.01.2016 - 04:24
fonte

Leggi altre domande sui tag