Sto valutando l'utilizzo di Kafka per implementare Event Sourcing in un ambiente microservizi che utilizza già una piattaforma di gestione API.
Mi chiedevo se fosse comune e / o considerato una buona pratica utilizzare la Gestione API come gateway per gli argomenti di Kafka . I vantaggi potrebbero essere analisi, memorizzazione nella cache, limitatori di velocità e un migliore controllo degli accessi nel livello gateway (probabilmente altri).
Tuttavia, la comunicazione tra i microservizi è sempre un argomento principale nelle discussioni. I miei dubbi principali sono:
- Quando comunichi, i miei microservizi dovrebbero chiamare direttamente le API interne (tramite Gestione API) o dovrebbero produrre / consumare eventi direttamente dagli argomenti di Kafka? È un anti-pattern avere alcuni microservizi per esporre le API, ma poi alcune modifiche ai dati sottostanti si verificano senza fare uso di questa API (cioè direttamente in Kafka)?
- Dal momento che sto usando Event Sourcing e tutti i microservizi hanno accesso a questa singola fonte di verità, ho bisogno anche di tanta comunicazione tra i microservizi? Potrei duplicare i dati di cui ho bisogno nelle fonti locali e mi preoccupo solo di comunicare per le transazioni in cui altri microservizi devono intervenire (ad esempio una pipeline di pagamento). È una buona pratica?