Come ridimensionare i microservizi nel mondo DDD?

6

Sono interessato quale sarebbe il modo ideale per scalare i microservizi nel mondo DDD?

Nel caso del seguente scenario, in cui il contesto di vendita è ospitato come microservizio su un host diverso, quindi Contesto di supporto, se il contesto di vendita supera i limiti hardware, si:

a) scala verticalmente (aumenta le risorse del server)

b) ridimensiona orizzontalmente (aggiungendo più server)

c) suddividere il microservizio in modo che ad esempio Sales Context sia ora (solo una soluzione generica)

  1. Contesto del territorio di vendita (cliente, prodotto, teritorio, addetto alle vendite) e
  2. Contesto delle opportunità del territorio di vendita (Teritorio, Opportunità, Pipeline)

In alternativa, sarebbe un buon approccio utilizzare tutte e tre le tecniche, ma in un ordine specifico, ad es. quindi prima dividere il microservice (scala software), quindi ridimensionare orizzontalmente (scala hardware più semplice in termini di mantenimento dell'applicazione), quindi ridimensiona verticalmente (scala hardware più difficile).

So che ogni scenario è specifico, ma mi piacerebbe sapere quale tecnica incoraggi i microservizi e il DDD?

    
posta John 19.10.2016 - 10:12
fonte

2 risposte

2

Questa non è la soluzione migliore per questa domanda. È solo una questione di costi e benefici:

  1. Il ridimensionamento verticale è spesso il percorso più semplice, fino a un certo stadio: estendere la capacità di elaborazione dei servizi con core addizionali, RAM, schede di rete, dischi più veloci è principalmente una plug & giocare a fatica; La legge di Moore unita alla diminuzione dei prezzi dell'hardware sono dalla tua parte.

    Tuttavia, quando ti avvicini al limite dell'architettura hardware e se can ' t dividi ulteriormente il tuo microservizio , passare alla prossima tecnologia per server ad alto volume potrebbe richiedere molti più investimenti e un giorno sarai vicino ai limiti finanziari o tecnici.

  2. Il ridimensionamento orizzontale è il più flessibile. Containters in server farm di grandi dimensioni sono oggigiorno una comodità. Con questo approccio in genere è possibile raggiungere volumi molto più elevati rispetto a quelli con ridimensionamento verticale a un costo migliore (rispetto all'acquisto di un enorme supercomputer). Tuttavia, ciò richiede che il microservizio del collo di bottiglia sia progettato per essere eseguito in più istanze (ad esempio API di riposo senza stato anziché API dipendente dallo stato, utilizzo di code di messaggistica, ecc.).

  3. La ripartizione dei dati tra i criteri dei contenuti basati sui servizi (ad esempio la posizione geografica del cliente) è un approccio molto interessante. È un'attività comune per i microservizi. Ma hai bisogno di alcuni meccanismi di dispiegamento che l'istanza del servizio giusto elabori le richieste giuste.

    Combinato con la scalabilità orizzontale, questo potrebbe aiutare a eliminare i colli di bottiglia e ottimizzare le prestazioni della rete, specialmente se si riesce a utilizzare un referee di partizione geografica per i propri utenti (ad esempio, inserire i dati nel continente in cui la maggior parte degli utenti lo accede) . Tuttavia, questo è anche il disegno più delicato: richiede un'ottima conoscenza delle dipendenze dei dati attraverso i criteri ei servizi di partizione, nonché registri dinamici di somy per gestire lo schema di distribuzione.

Quindi ora tocca a te bilanciare i pro e i contro di ciascun approccio nel tuo contesto.

    
risposta data 19.10.2016 - 23:13
fonte
2

Dipende. Ma la soluzione migliore è usare tutte e tre le tecniche. Solo tu puoi comunque scegliere l'ordine.

Devi decidere cosa sarà più economico e veloce da raggiungere. Ad esempio, se non si dispone di hardware di livello superiore, l'aggiunta di un po 'di RAM in più può aiutarti a raggiungere il tuo obiettivo in modo rapido ed economico. Tuttavia, se hai già un hardware di alto livello e ne acquisti uno nuovo, che ha prestazioni ancora maggiori, può essere molto costoso. In questo caso è consigliabile utilizzare il ridimensionamento orizzontale. Puoi dividere ulteriormente il tuo micro-servizio in più micro-servizi oppure puoi semplicemente utilizzare il ridimensionamento orizzontale del tuo database o server back-end nel contesto del micro-servizio esistente. Voglio anche notare che ci sono molte tecniche per accelerare il tuo codice, non solo l'hardware.

Quindi, siediti, guarda queste tre tecniche e scegline una più adatta per tu in un tempo concreto .

    
risposta data 19.10.2016 - 11:06
fonte