Come progettare il sistema basato su uno strumento CLI

2

SFONDO

Sto provando a progettare un'applicazione SaaS basata su micro-servizi, in cui ogni microservizio sarebbe impacchettato nel suo specifico contenitore Docker.

Ho anche uno strumento CLI (un file binario) che funziona come un coltello svizzero (cioè fa più di una cosa) e ci sono alcuni micro-servizi che vorrebbero utilizzare le varie funzionalità dello strumento, rendendo lo strumento importante in tutta l'architettura Lo strumento può consumare / produrre un file o uno stream.

PROBLEMA

Non riesco a decidere tra i seguenti:

  • Devo impacchettare lo strumento come parte di ciascun micro-servizio che ne ha bisogno?
  • Devo impacchettare lo strumento come servizio separato?

Come si può decidere tra i due? Ci sono altre alternative?

CAVEAT

Ogni micro-servizio potrebbe dover generare / accedere a più istanze dello strumento contemporaneamente. Per elaborare ulteriormente, il micro-servizio può utilizzare lo strumento più volte, in sequenza o in parallelo per generare output diversi, che, in seguito, vengono aggregati e passati su altri servizi.

    
posta Rishabh 26.10.2017 - 14:08
fonte

1 risposta

6

Dipende da cosa fa lo strumento e con quale frequenza avrà bisogno di essere aggiornato.

Se impacchettate lo strumento con ciascun servizio, un aggiornamento allo strumento significa che è necessario inviare un aggiornamento corrispondente a ciascun servizio che utilizza tale strumento. Imballare lo strumento come servizio separato significa che gli aggiornamenti o le correzioni a tale strumento devono essere implementati in un'unica posizione per tutti i servizi interessati da tale aggiornamento.

Potrebbe essere appropriato, a seconda dello strumento. Ad esempio, un parser JSON sarebbe più adatto come libreria in bundle poiché è molto stabile e difficilmente modificabile in modo significativo, quindi il sovraccarico di avere un servizio separato non sarebbe probabilmente utile. Uno strumento che esegue una sorta di calcolo aziendale potrebbe tuttavia visualizzare aggiornamenti frequenti che lo rendono più adatto come servizio separato, soprattutto se è importante disporre di coerenza tra i servizi.

    
risposta data 26.10.2017 - 16:12
fonte

Leggi altre domande sui tag