Lavoro in una piccola azienda e stiamo per approfondire il mondo di Microservices. Come previsto, stiamo colpendo alcuni colpi.
Concentriamoci su un piccolo contesto limitato: l'ordine di lavoro.
Questo contesto limitato è composto da un tecnico, una squadra e l'effettivo ordine di lavoro. Una squadra è composta da un gruppo di tecnici e un team manager, che è anche un tecnico.
Un aspetto del software: un tecnico dovrebbe essere in grado di vedere tutti gli ordini di lavoro rilasciati a loro e, se capita di essere il manager di una squadra, dovrebbero essere in grado di vedere tutti gli ordini di lavoro rilasciati a tutti i membri di quella squadra .
Devo creare un singolo servizio, o due: uno per gestire i team e i tecnici e uno per gestire effettivamente gli ordini di lavoro. Il problema con il secondo approccio è che parte della logica che controlla quali ordini devono essere recuperati dovrà essere collocata all'interno dell'API Gateway / BFF.
Poiché gli ordini di lavoro non hanno conoscenza dei team (che ritengo sia la progettazione corretta), il gateway API dovrebbe recuperare i team in cui il tecnico è il manager per recuperare tutti gli ordini di lavoro per tutti i membri di tali squadre.
La mia preoccupazione è che sembra che qualche logica aziendale stia perdendo sul gateway API e non sono sicuro che vada bene. Ho anche paura di creare microservizi anemici. D'altra parte, questo contesto limitato potrebbe essere utilizzato su un software diverso, che potrebbe non utilizzare il concetto di team.
Ho anche pensato di creare un terzo servizio per coordinare questo lavoro ma non ho trovato alcun motivo per supportare l'idea al momento.
Quindi, per riassumere: dovrei creare uno, due o tre servizi? Sono obbligato a crearne due, ma non riesco ancora a decidere.