Sto iniziando un nuovo progetto al lavoro, e sarà probabilmente l'unico sviluppatore del progetto, anche se uno o due altri sviluppatori dovranno integrare applicazioni esistenti o semplici script nel progetto principale. Il progetto deve gestire l'ingest / elaborazione dei dati di massa e di streaming su piccola scala e l'esecuzione di codice sia su evento che su richiesta. Alcune parti del framework saranno pesantemente vincolate alla CPU, e alcune parti potrebbero essere strongmente vincolate all'I / O; la maggior parte dei dati deve vivere su una singola macchina, ma siamo in grado di creare un cluster e collegare le macchine virtuali per aumentare la potenza di calcolo disponibile. Probabilmente ci saranno una o più piccole applicazioni web che dipendono dai servizi forniti da questo framework principale. La lingua principale sarà Python per quasi tutto.
La mia domanda è se dovrei adottare un approccio microservizi a uno sforzo del genere o attenermi a un'applicazione monolitica, dato che svolgerò la maggior parte dello sviluppo da solo. Il mio pensiero è che i microservizi (utilizzando Nameko) forniscono una separazione naturale tra elementi del framework che hanno diversi modelli di esecuzione (pipeline di dati, eventi lanciati, on-demand, applicazioni web, ecc.) E un modo chiaro per distribuire il carico di lavoro e comunicazione attraverso più processi. La mia preoccupazione è che probabilmente finirò con un cluster Kubernetes da gestire (ho familiarità con Docker, ma ancora abbastanza nuovo per Kubernetes), più servizi (rabbitmq, redis, ecc.) Richiesti solo per facilitare l'esecuzione del sistema, e potenzialmente molti piccoli pezzi di codice per implementare effettivamente tutte le funzionalità necessarie di cui abbiamo bisogno nel framework.
Per un progetto con poco più di un singolo sviluppatore, i microservizi semplificano ancora lo sviluppo e il mantenimento di un sistema complicato come questo? Ci sono metodi / sistemi / framework che dovrei considerare di utilizzare, o ridurre l'overhead coinvolto nella progettazione del sistema in questo modo?