Come disaccoppiare l'app di backend?

1

Ho sentito questo termine molte volte, e ha senso in teoria. Quell'app sta facendo molte cose e sarebbe più facile gestirle, ridimensionarle, testarle e migliorarle se non sono completamente collegate tra loro e funzionano invece come funzioni. In questo modo potresti avere la possibilità di sostituire facilmente i componenti dell'app con lingue diverse facilmente finché l'output rimane coerente.

Tuttavia non ho questa idea praticamente, come è costruita. L'impressione che ottengo è che tutti i microservizi comunicano tra loro usando JSON / Auth / API e condividono il database.

È vero? ha senso anche, ma per quanto riguarda il successo delle prestazioni. È sicuramente più veloce inviare dati da un controller a un altro nella stessa app, quindi farlo andare su un altro server e recuperare il database del modulo.

Che dire dello streaming. Lo streaming è possibile tra le chiamate api anziché il recupero dal database?

il passaggio dell'autenticazione tra i microservizi non lo rallenterà ulteriormente? l'autenticazione tra server / microservizio è addirittura necessaria.

I microservizi in esecuzione sullo stesso server devono comunicare tra loro utilizzando API, anche se si trovano sulla stessa macchina.

Dove posso saperne di più su questo.

    
posta Muhammad Umer 16.06.2016 - 17:40
fonte

1 risposta

3

Alcuni presupposti:

  • I microservizi possono comunicare tra loro
  • Le implementazioni di ogni microservizio non sono rilevanti per il mondo esterno (questo è ancora più facile quando si è astratti in un contenitore)

Immagina un'interazione client / server, il client / server potrebbe comunicare con un'API JSON. O un broker di messaggi. L'implementazione specifica non ha importanza, la parte importante è che:

  • Entrambi usano lo stesso protocollo per la comunicazione
  • Dal punto di vista del cliente, l'implementazione del server non ha importanza
  • Dal punto di vista del server, l'implementazione del client non ha importanza

Ci sarà sempre un livello base di accoppiamento tra i microservizi pari. Lo strumento di comunicazione ha in un certo senso essere accoppiato. I servizi saranno anche accoppiati, in misura minore, ma in pratica avranno vari livelli di accoppiamento.

Potresti avere un client scritto in Java o C ++ o assembly, purché quella lingua implementasse il protocollo di comunicazione. Lo stesso vale per il server.

In questo modo si disaccoppia l'implementazione di entrambi, eccetto l'utilizzo della stessa API di comunicazione. Questo è un enorme vantaggio. Il tuo server / client può essere eseguito sulla stessa macchina. O macchine diverse. Forse vuoi due server e un cliente. O un server con tonnellate di clienti. Perché è tutto separato puoi farlo.

Per fare questo i microservizi devono essere in grado di comunicare attraverso alcuni sistemi API / messaggi. Anche se sono in esecuzione sulla stessa macchina.

Inoltre, come nota, è importante il corretto controllo delle versioni dei tuoi microservizi. Se hai una versione minore sul server, non dovresti rompere un client (e viceversa). Ci sarà sempre un certo livello di accoppiamento intrinseco tra qualsiasi interazione client / server.

    
risposta data 16.06.2016 - 18:10
fonte

Leggi altre domande sui tag