Sto iniziando un nuovo progetto al lavoro e probabilmente sarò quasi 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'importazione / elaborazione su larga scala di dati in streaming e in streaming, nonché l'esecuzione di codice sia guidata dagli eventi che su richiesta. Alcune parti del framework saranno fortemente legate alla CPU e alcune parti potrebbero essere pesantemente associate all'I / O; la maggior parte dei dati deve risiedere su un singolo computer, ma siamo in grado di creare un cluster e connettere 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 di base. La lingua principale sarà Python per quasi tutto.
La mia domanda è se dovrei o meno adottare un approccio ai microservizi per uno sforzo come questo o attenermi a un'applicazione monolitica, dato che farò la maggior parte dello sviluppo da solo. Il mio pensiero è che i microservizi (usando Nameko) forniscano una naturale separazione tra elementi del framework che hanno diversi modelli di esecuzione (pipeline di dati, eventi lanciati, applicazioni su richiesta, 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 con Kubernetes), sono necessari più servizi (rabbitmq, redis, ecc.) Solo per facilitare l'esecuzione del sistema, e potenzialmente un sacco di piccoli pezzi di codice per implementare effettivamente tutte le funzionalità necessarie che
Per un progetto con poco più di un singolo sviluppatore, i microservizi semplificano ancora lo sviluppo e la manutenzione di un sistema complicato come questo? Esistono invece metodi / sistemi / framework che dovrei prendere in considerazione o per ridurre le spese generali di progettazione del sistema in questo modo?