Come creare un'API scalabile, containerizzabile e gestibile con GraphQL, Kafka, Docker, Kubernetes e MongoDB?

1

Non ho dubbi riguardo a cosa fa ciascuna tecnologia. Ho provato anche tutti loro. Quello di cui dubito è:

Nel caso utilizziamo GraphQL, non agirà come un singolo punto di errore se il server GraphQL non funziona? Può essere raggruppato in cluster e se sì, qualsiasi architettura disponibile?

So perché kafka è usato nel mondo dei microservizi. Se stiamo usando GraphQL, kafka diventa irrilevante o c'è un posto in cui Kafka ha ancora senso con GraphQL?

Se costruiamo Microservices, possiamo containerizzare ogni Microservice usando Docker e usare Kubernetes per l'orchestrazione e Kafka per il livello di streaming, ma se usiamo GraphQL, è costruito come un monolite e l'intera applicazione è containerizzata? Oppure modifichiamo ancora il codice e containerizziamo diversi moduli nei server e li interrogiamo tramite GraphQL?

Dove e come dovrebbe esistere il mio strato di database quando si implementa tramite GraphQL. Per i microservizi, utilizziamo un'istanza DB per ogni microservizio.

Per il contesto, sto pensando a un'architettura per costruire API scalabili, containerizzabili e gestibili con GraphQL.

    
posta Vignesh T.V. 05.01.2018 - 14:45
fonte

2 risposte

1

Non sono sicuro del perché ci sono docker e kubernetes nella tua domanda. È su di te come vuoi configurare la finestra mobile per adattarla alla tua architettura e non dovrebbe giocare un ruolo nelle decisioni di architettura.

Sì, puoi sempre estendere più graphql server sulla tua applicazione. Sta a te decidere come gestire le richieste in arrivo su questi server multipli di graphql. Ho visto alcune applicazioni gestirle in base al caso d'uso, ma sì, per gestire la tua domanda questo può sicuramente scalare. Potresti trovare utile anche questo - link .

Kafka può tornare utile se vuoi avere capacità di streaming dei dati. Quindi idealmente puoi avere il tuo database - > Più istanze di Kafka che parlano al database - > Ogni istanza di Kafka può avere più API GraphQL che si occupano di esso.

    
risposta data 05.01.2018 - 21:35
fonte
0

Ho visto questo video: link (cerca fino a 33 minuti) e ho ottenuto il seguente modello :

C'è solo una cosa da aggiungere che è kafka, che entrerà tra il Gateway e i Server che fungerà da piattaforma di streaming per le query graphql inviate a vari server. (Principalmente kafka perché non voglio un modulo per parlare direttamente con un altro modulo). Volevo avere un bus per evitare la complessità e utilizzare l'event sourcing e CQRS per graphql.

Potrei quindi containerizzare tutti i server che usano il stitching dello schema per fare in modo che la singola query graphql si divida in più istruzioni.

    
risposta data 06.01.2018 - 21:29
fonte

Leggi altre domande sui tag