La nostra app Web genera una grande quantità di log. Questi registri includono sia gli eventi relativi alle operazioni in background nell'app (i dati arrivano dal server, i guasti ajax, le comunicazioni tra i componenti, ecc.); e anche azioni avviate dall'utente (l'utente ha fatto clic su un pulsante, l'utente ha scritto del testo, ecc.).
Abbiamo creato la nostra libreria di logging con diversi adattatori (stampa su console, invio al server, ecc.); e attualmente inviamo tutti i log al nostro server per la persistenza. Questi log vengono utilizzati per analizzare il comportamento e il flusso dell'app, monitorare gli errori, le eccezioni lato client, ecc.
Ora abbiamo un nuovo requisito per tenere traccia del comportamento degli utenti nell'app e consideriamo 2 approcci:
- Arricchisci i nostri attuali log in-code (che vengono inviati al server) e registra ogni azione dell'utente da tracciare. Quindi utilizzare i lavori ETL per raccogliere e analizzare i dati utilizzando alcuni servizi di terze parti (Omninute, Kibana, ecc.).
- Integrare un servizio di terze parti con la propria libreria JS (Omniture, Google Analytics) e adattare il nostro codice per utilizzare quel servizio (inviando manualmente eventi da JS, tag HTML, ecc.).
Il primo approccio mantiene il nostro codice base più pulito e con meno duplicazioni (un solo meccanismo di registrazione).
Il secondo approccio prevede la modifica del codice dell'app per inviare tutti gli eventi che vogliamo monitorare al servizio di analisi, inoltre per registrarli con il nostro servizio di registrazione. Ma consente al servizio di analisi di raccogliere dati aggiuntivi che non è necessario implementare noi stessi (geotracking, versioni di browser e sistema operativo, ecc.).
Quale approccio dovrei adottare affinché il codice possa soddisfare entrambi i requisiti di registrazione senza inutili duplicazioni e complessità del codice?