Impostazione dell'ambiente di sviluppo nell'architettura dei micro-servizi

6

Ci stiamo muovendo verso lo sviluppo di un'app web in un'architettura di micro-servizi. Abbiamo pensato di eseguire i servizi dietro un gateway API che gestirà l'autenticazione e invierà le richieste ai servizi appropriati. Abbiamo riscontrato un problema durante la configurazione dell'ambiente di sviluppo. Come possiamo sviluppare un servizio in una macchina locale (laptop) e testarlo ed eseguirlo in modo simile alla produzione (dietro il gateway)?

Considera i seguenti requisiti:

  • Comunicazione inter-processo (B2B)
  • Gestisci e sincronizza diverse versioni
  • Accedi al servizio con token di autenticazione (prodotto dal gateway)

Il nostro gateway API si trova tra il client (browser, mobile) e riceve i requesq. Ogni richiesta deve avere un token jwt collegato ad esso (generato dal gateway) oppure reindirizzato a un provider di terze parti per l'autenticazione.
Quindi, dopo aver autenticato l'utente (tramite il cookie o il token di intestazione dell'autorizzazione), proxy la richiesta al servizio specificato.

    
posta itaied 06.10.2016 - 12:52
fonte

2 risposte

1

Ho qualche problema a capire esattamente qual è il problema nella tua situazione, ma se ti sto leggendo, il tuo problema è come organizzare il tuo processo di sviluppo localmente, pur avendo la flessibilità di testare esternamente.

Per questo dico - non . Se intendi utilizzare un gateway API, prova la tua parte del contratto - cosa succede dopo il gateway. In questo modo puoi catturare molti problemi che potrebbero rimanere nascosti altrimenti a causa del gateway API e inoltre qualsiasi tentativo di testare il gateway stesso è un esercizio inutile: stai essenzialmente testando un livello intermedio che ha già superato test molto rigorosi rispetto al tuo processo (si spera , che è) e che è progettato per nascondere / offuscare i dettagli più fini della tua API.

Nota : non sto suggerendo in alcun modo che non dovresti testare anche il risultato finale, ma credo che il tuo sforzo di test principale dovrebbe andare a testare il codice che possiedi e gestisci , non un livello di astrazione esterno. Il test della vista esterna è (IMO) per i test di integrazione e per il monitoraggio dello stato (sebbene questo sia più spesso di quanto non sia fornito dal provider del gateway API).

Per quanto riguarda come configurare e organizzare il processo, ti suggerisco di utilizzare Amazon API Gateway o la sua competizione ( Ho lavorato solo con AWS, mi dispiace). Lo scopo di questo servizio è quello di eliminare le problematiche specifiche dell'API, permettendoti di concentrarti sulla sostanza ("ti consente di portare il tuo valore" in marketspeak) del servizio.

Toccando il problema del reindirizzamento delle richieste alla macchina di sviluppo "locale" (si noti che questo non è proprio nella portata di questo sito, quindi sto "sconfinando" un po ', se lo farai), puoi sempre usare qualche VPN tecnologia per connettere il laptop al gateway API. In termini di AWS, credo che VPC dovrebbe consentire questo - dare un'occhiata a questo riferimento .

Infine, questa domanda grida "devops", motivo per cui mi piacerebbe prendere il tempo per sottolineare che qualsiasi considerazione di questo tipo viene discussa meglio con i colleghi più "sysadmin-y", poiché la loro esperienza sarà essenziale in impostazione di qualcosa di simile.

    
risposta data 06.10.2016 - 15:04
fonte
1

Hai alcune opzioni, a seconda del tipo di test che stai facendo. Per un rapido test manuale con postino, puoi andare su jwt.io e copiare e incollare un token nelle intestazioni. Puoi ottenere una quantità sorprendente di chilometraggio da questo metodo.

Per i test di integrazione automatizzati, non dovresti effettivamente aver bisogno di un gateway, puoi semplicemente generare i jwts direttamente dalle tue librerie di test.

Per i test degli sviluppatori a lungo termine, è sufficiente un gateway più semplice e leggero che gli sviluppatori possano eseguire sui propri computer. Di solito non hanno bisogno di tutte le funzionalità complete del gateway di produzione, quanto basta per essere in grado di esercitare tutti i ruoli. Potresti essere in grado di trovare progetti open source che fanno ciò che ti serve qui, o forse il tuo fornitore di servizi ha una versione scaricabile.

    
risposta data 06.10.2016 - 19:38
fonte