Architettura di Analytics per più API

4

Stiamo costruendo una piattaforma di API diverse (ogni API è scritta da team diversi, fuso orario diverso). Vogliamo implementare analisi unificate per tutte le API per avere un unico data lake come un'unica fonte di verità. Utilizziamo Apigee come proxy API per tutte le API. Ora la domanda è: dove implementeresti il livello di analisi?

Il nostro primo pensiero è stato implementarlo in Apigee e registrare gli eventi per ogni chiamata API, ma riscontriamo problemi con la fornitura di payload di richieste e risposte complete poiché utilizziamo configurazioni di streaming per motivi di prestazioni che impediscono a Apigee di accedere al payload .

L'altro approccio che abbiamo considerato era quello di obbligare tutti i servizi a inviare i propri eventi, ma è davvero possibile? Ogni team ha il proprio programma e sembra che l'analisi abbia sempre una priorità inferiore e come possiamo davvero assicurarci che ogni chiamata API venga registrata come previsto?

In che modo le aziende si occupano di analisi? Dove implementeresti un tale livello? Sarei grato di sentire le tue idee.

    
posta user2919190 09.08.2016 - 15:05
fonte

2 risposte

1

Onestamente, la cosa migliore da fare è semplicemente registrare tutto su stdout e stderr, quindi fare in modo che il proprio sistema operativo gestisca la rotazione del registro e tutto il resto. Ogni servizio può spedire i propri registri utilizzando strumenti standard come systemd / syslog al proprio aggregatore di registri. Mi piace il logstash, ma Splunk funzionerà.

Se è necessario spedire a una terza parte, il proprio aggregatore di registri interno può controllare ciò che viene spedito e con quale frequenza controllare il costo e la sensibilità.

Questo è di gran lunga l'approccio più semplice e più difficile da sbagliare.

    
risposta data 04.03.2018 - 17:56
fonte
0

Now the question is: where would you implement the analytics layer?

In un microservizio separato. Il codice per inviare lo stream di eventi ad esso dovrebbe essere sviluppato in modo cooperativo da tutti i tuoi team.

The other approach we considered was to obligate all services to send their own events - but is it really possible?

Perché no? Se stai per ottenere molti dati, usa solo il campionamento (registra solo 1/5, 1/10 o 1/100 di tutte le richieste di successo + tutti quelli falliti).

Every team has their own schedule and it seems that analytics would always get lower priority

Penso che questa non sia una questione tecnica, ma una questione sulla qualità della gestione del tuo progetto.

and how can we really make sure that every API call is being logged as expected?

Credo che nello stesso modo in cui assicuri che i tuoi servizi funzionino affatto. Da test a tutti i livelli e monitoraggio esterno.

    
risposta data 10.08.2016 - 09:41
fonte

Leggi altre domande sui tag