Je commence un nouveau projet au travail, et je serai probablement le seul développeur du projet, bien qu'un ou deux autres développeurs devront intégrer des applications existantes ou des scripts simples dans le projet principal. Le projet doit gérer l'acquisition / le traitement de données en masse et en continu à petite échelle, ainsi que l'exécution de code à la demande et sur événement. Certaines parties du cadre seront fortement liées au processeur, et certaines parties pourraient être fortement liées aux E / S; la plupart des données doivent vivre sur une seule machine, mais nous pouvons créer un cluster et connecter des machines virtuelles pour augmenter la puissance de calcul disponible. Il y aura probablement une ou plusieurs petites applications Web qui dépendent des services fournis par ce cadre principal. Le langage principal sera Python pour à peu près tout.
Ma question est de savoir si je dois ou non adopter une approche de microservices pour un effort comme celui-ci ou m'en tenir à une application monolithique, étant donné que je ferai la plupart du développement par moi-même. Ma pensée est que les microservices (en utilisant Nameko) fournissent une séparation naturelle entre les éléments du cadre qui ont différents modèles d'exécution (pipelines de données, lancés par les événements, à la demande, applications Web, etc.) et une façon claire de répartir la charge de travail et communication entre plusieurs processus. Ma préoccupation est que je me retrouverais probablement avec un cluster Kubernetes pour gérer (je connais Docker, mais encore assez nouveau pour Kubernetes), plusieurs services (rabbitmq, redis, etc.) nécessaires juste pour faciliter le fonctionnement du système, et potentiellement beaucoup de petits morceaux de code pour mettre en œuvre toutes les capacités nécessaires que nous '
Pour un projet avec un peu plus qu'un seul développeur, les microservices simplifient-ils toujours le développement et la maintenance d'un système compliqué comme celui-ci? Y a-t-il des méthodes / systèmes / cadres que je devrais envisager d'utiliser à la place, ou pour réduire les frais généraux impliqués dans la conception du système de cette façon?