Come essere Agile quando si tratta di progettare un database?

4

Dal Manifesto Agile:

We follow these principles:

Welcome changing requirements, even late in development. Agile processes harness change for the customer's competitive advantage.

Ho un requisito per cui stiamo facendo join incrociati di database con più team partner in molte diverse origini dati. Alcuni sono tradizionali RDMBS, alcuni sono colonnari e uno è più di un'API che un database per motivi di sicurezza (quindi non posso eseguire arbitrariamente SELECT ... JOIN contro di esso).

La nostra soluzione consiste nell'impostare processi ETL contro le varie fonti e cercare di ottenere istantanee pertinenti dati in un unico posto e utilizzare queste tabelle locali per eseguire i cross db join e infine generare report.

Il problema è che se ho bisogno di usare qualche nuova colonna come chiave di join (viene introdotta una nuova fonte di dati), o se viene posta una nuova domanda di lavoro, e non ho tirato quei dati, allora ho bisogno per modificare gli schemi e quindi rieseguire di nuovo tutti gli estratti, e in alcuni casi modificare i calcoli aziendali nelle trasformazioni , che possono richiedere ore e richiede un sacco di overhead operativo.

Continuo a sperare che i requisiti non continuino a cambiare, ma onestamente questa speranza non è Agile - dovrei essere in grado di rispondere a domande di business aggiuntive al volo. Un'altra parte di Agile è che i PM dovrebbero cercare di pianificare questo tipo di modifiche il prima possibile - è questo il punto in cui il mio processo sta crollando? In alternativa, come posso strutturare i flussi di dati e i processi correlati in modo altrettanto agile di altri tipi di codice?

    
posta durron597 01.09.2016 - 18:51
fonte

2 risposte

5

Non credo che si tratti di essere Agile con il design del database. Puoi rimuovere il database da questa domanda e sostituirlo con un'interfaccia SOAP o REST o qualsiasi altra cosa che coinvolge più sistemi di comunicazione.

Il problema principale qui è "che cosa ha da dire Agile su più team che sviluppano più prodotti in tandem che devono collaborare?" o "come gestiamo i cambiamenti al di fuori del nostro controllo?"

Come al solito, il Manifesto Agile dice cosa fa il team, non come . Agile è una filosofia, non una tecnica specifica. Accade solo che abbiamo perfezionato le tecniche per gestire la complessità con cui ti stai occupando.

In una parola: automatizza.

Quando le interfacce cambiano, ci saranno cambiamenti e regolazioni manuali. Cerca di automatizzare il più possibile. È possibile collegare alcuni campi in un file di configurazione e utilizzare un processo automatizzato per creare il codice che sposta effettivamente i dati. Un altro processo automatizzato sposta quindi i dati attraverso il sistema.

Un progetto su cui ho lavorato aveva una configurazione simile, in cui i dati si muovevano attraverso un servizio web e in un database. Poiché le interfacce stavano cambiando anche in ritardo, mi sono abituato a collegare un nuovo WSDL, aggiornare la configurazione di DAO, aggiungere una riga di codice per spostare i dati, quindi eseguire il processo di compilazione automatizzata. Genererebbe codice, creerà un programma di installazione, installerà l'applicazione e trasferirà i dati da un'estremità all'altra e verificherà che i record inseriti nel servizio Web siano stati inseriti nel database come previsto.

Per quanto riguarda il tempo di funzionamento di questi processi: sembra un buon candidato per un processo notturno.

Non c'è davvero molto altro da fare, dal momento che cercare di ottenere più team (probabilmente con stakeholder che guadagnano di più in uno stipendio rispetto a quello che si ottiene in un anno) per raggiungere il consenso è peggio che allevare i gatti. Nella mia esperienza, i project manager sono abbastanza inutili in queste situazioni. Tendono a sedersi e discutono l'un l'altro, mentre il mio tempo è speso meglio automatizzando il processo e risparmiando tempo.

    
risposta data 01.09.2016 - 19:31
fonte
3

Discusso in chat con @Thomas Owens .

La conclusione che abbiamo raggiunto è che se i backfill sono comuni e le modifiche alle colonne sono comuni, la storia dell'utente è:

We need to have proper tools to respond quickly to changing requirements and backfills in a way that doesn't consume significant developer time.

Il tempo effettivo di esecuzione dei backfill non è il problema, il problema è il mio tempo a farli tutti a mano . La soluzione sta fornendo un software funzionante che soddisfi i requisiti dell'ambiente in cui mi trovo, in altre parole, automatizzando il maggior numero possibile di manutenzione dei dati.

    
risposta data 01.09.2016 - 19:34
fonte

Leggi altre domande sui tag