Come creare correttamente un ambiente di sviluppo locale basato su un'architettura di micro-servizi basata su Docker?

4

Quindi attualmente dove lavoro proviamo a imitare il nostro ambiente di produzione il più vicino possibile al nostro ambiente di produzione. I nostri micro-servizi (API, listener, archivi di dati) sono organizzati in modo tale che se esegue una responsabilità (fino al modello di dati) diversa da qualcos'altro merita il proprio contenitore.

Attualmente per il nostro ambiente di sviluppo locale abbiamo una rete di file Docker Compose e codice NodeJS che intreccia tutto questo insieme, tuttavia si è dimostrato insostenibile in quanto funziona solo il 20% delle volte. Ogni microservizio API (per modello) sono stato in grado di accettare il mio input per condensare i datastore in 1 database, poiché credo che i sistemi di database come MongoDB / MySQL abbiano dimostrato di aver risolto questi problemi a un livello inferiore.

In questo momento i nostri contenitori escono a circa 48 istanze, che per me è pazzesca, ma questo è descritto come il nuovo modo. Questi contenitori si bloccheranno casualmente (alcuni hanno limiti di memoria quindi forse questa è la causa). C'è un modo in cui possiamo rendere il nostro ambiente di sviluppo non conforme al nostro complicato ambiente di produzione, ma mantenere comunque la produttività?

    
posta Darren 26.10.2016 - 02:11
fonte

2 risposte

5

I microservizi dovrebbero essere relativamente indipendenti l'uno dall'altro. Durante i test degli sviluppatori, dovresti essere in grado di avviare solo quello su cui stai lavorando e forse due o tre altri, in genere relativi allo storage, alla messaggistica o all'autenticazione. Se non puoi, dovresti lavorare per migliorare la tua architettura.

Se la tua applicazione completa non si adatta correttamente su un computer per sviluppatori, fornisci un cluster separato per i test di integrazione degli sviluppatori. Molte organizzazioni si limitano a risparmiare tempo extra sul proprio provider di cloud di produzione, oppure è possibile creare un cluster interno utilizzando qualcosa come OpenStack.

Questo cluster può essere sovra-programmato perché ogni sviluppatore non ne ha bisogno il 100% delle volte. Stimo che faccio circa l'85% del mio sviluppo di microservizi solo con test unitari, circa il 10% solo con l'ambiente single-microservice sulla mia macchina e il restante 5% sul nostro cluster condiviso.

Probabilmente vorrete anche investire in un migliore monitoraggio e orchestrazione, in modo da sapere esattamente perché i vostri microservizi si bloccano e possono riavviarsi automaticamente quando lo fanno. Forse qualcosa come Prometeo e Kubernetes. Kubernetes rifiuta anche di pianificare i microservizi in primo luogo se richiedono troppe risorse in grado di gestire i nodi disponibili.

    
risposta data 26.10.2016 - 15:34
fonte
-1

Se esegui microservizi su Kubernetes, stiamo lavorando a una soluzione che prevede il proxy del codice locale a un cluster remoto. Significa ottenere un ciclo di feedback rapido per lo sviluppo locale, ma un ambiente realistico per l'esecuzione del servizio. Scoprilo: link

    
risposta data 28.04.2017 - 19:56
fonte

Leggi altre domande sui tag