Ho l'opinione che ogni metodo in un servizio dovrebbe fare solo un piccolo passo di un'attività più grande, delegare un risultato al passaggio successivo / metodo e terminare. Non importa se questo metodo successivo risiede nello stesso servizio o meno, viene sempre attivato tramite instradamento inter-servizio (coda messaggi, scoperta servizio + chiamata REST, qualunque cosa ...) e quindi gestito da un'istanza diversa. Il metodo non dovrebbe mai essere chiamato direttamente per impostazione predefinita, a meno che non sia abilitato selettivamente.
Lo so, la comunicazione di rete è più lenta di ordini di grandezza e le attività complesse con molti passaggi eseguiranno più lentamente millisecondi, ma questo è l'unico modo in cui vedo che garantisce che
- ogni passo è implementato stateless in modo che possa - se necessario - essere sostituito in una tecnologia diversa senza overhead
- la gestione degli errori è meno costosa in quanto attendere una risposta o fare un passo successivo nello stesso processo aumenta la possibilità di perdere i risultati del passaggio intermedio se quel processo muore per qualsiasi motivo
- il tasso di errore definito è ridotto in quanto è più facile e più prevedibile implementare una gestione degli errori standardizzata centralmente rispetto al livello del metodo
Pensi che stia supervisionando qualcosa e qual è la tua opinione?