Sto lavorando a un software per integrare un negozio di e-commerce e l'ERP aziendale. Tutti i passaggi di integrazione vengono eseguiti come un processo batch unico, ogni 5 minuti. Le cose stanno funzionando in fase di produzione, ma sono alle prese con il modo di progettare meglio il sottosistema che ci avvisa (sviluppatori e personale IT) che si sta verificando un errore di integrazione.
Essenzialmente, il software integra tutti i nuovi clienti, le nuove fatture, azioni, prodotti e così via. Per semplificare le cose, il processo è stato sviluppato per essere eseguito come una sequenza seriale. Esempio: integrare prima i clienti e dopo le fatture, quindi non possiamo avere fatture senza dati dei clienti. Quando qualcosa non va a buon fine (il nostro provider di e-commerce tenta di integrare alcuni dati non validi su un cliente specifico o semplicemente non funziona), l'intero processo fallisce e segnala a Nagios (un sistema di monitoraggio e allerta) avvisarci.
Sto cambiando il design in modo che un problema specifico con una singola unità non fermi il processo, ma il problema è la progettazione di allerta che l'integrazione di quella specifica unità è fallita, e non è necessario manipolare i log per trovare cosa sta succedendo.
Ho riflettuto su alcuni modi, ma mi piacerebbe sapere se c'è un modo migliore per affrontare questo problema:
-
Invia un'e-mail all'IT con una descrizione semplificata del problema, con alcuni dati (esempio: numero di fattura), in modo che possano aprire un ticket di emissione con il fornitore di e-commerce. Il problema è che il processo viene provato ad ogni elaborazione in batch, quindi dovremmo avere un modo per inviare solo una e-mail per ogni problema.
-
Invia il problema a un sistema centralizzato (da sviluppare) tramite API e mostra una pagina web che elenca i problemi attuali. Ci dovrebbe essere un modo per, di nuovo, gestire gli errori duplicati e rimuovere gli errori risolti dall'elenco dopo che sono stati risolti e le unità integrate.
Sono davvero bloccato a questo progetto e vorrei sapere se esiste un altro modo migliore per gestire le incoerenze dei dati di tali lavori batch, anche se richiede lo sviluppo di alcune "infrastrutture" per semplificarci.