Ich beginne ein neues Projekt in der Arbeit und werde wahrscheinlich fast der einzige Entwickler des Projekts sein, obwohl ein oder zwei andere Entwickler vorhandene Anwendungen oder einfache Skripte in das Hauptprojekt integrieren müssen. Das Projekt muss kleine Mengen- und Streaming-Datenmengen verarbeiten und sowohl ereignisgesteuerte als auch bedarfsgesteuerte Codeausführungen durchführen. Einige Teile des Frameworks sind stark CPU-gebunden, und einige Teile können stark E / A-gebunden sein. Die meisten Daten müssen auf einem einzelnen Computer gespeichert sein, aber wir können einen Cluster erstellen und VMs verbinden, um die verfügbare Rechenleistung zu erhöhen. Es wird wahrscheinlich eine oder mehrere kleine Webanwendungen geben, die von den Diensten abhängen, die für dieses Kernframework bereitgestellt werden. Die Hauptsprache wird für fast alles Python sein.
Meine Frage ist, ob ich einen Ansatz für Microservices wählen oder bei einer monolithischen Anwendung bleiben soll, da ich den größten Teil der Entwicklung selbst vornehmen werde. Ich bin der Meinung, dass Microservices (unter Verwendung von Nameko) eine natürliche Trennung zwischen Elementen des Frameworks bieten, die unterschiedliche Ausführungsmodelle haben (Daten-Pipelines, ereignisgesteuerte, On-Demand-, Webanwendungen usw.) und eine klare Möglichkeit, die Arbeitslast zu verteilen Kommunikation über mehrere Prozesse hinweg. Ich mache mir Sorgen, dass ich wahrscheinlich einen Kubernetes-Cluster haben werde, der verwaltet werden muss (ich kenne Docker, aber Kubernetes ist noch recht neu). Mehrere Dienste (rabbitmq, redis usw.) sind erforderlich, um die Ausführung des Systems zu vereinfachen. und möglicherweise eine Menge kleiner Codestücke, um tatsächlich alle notwendigen Funktionen zu implementieren, die wir
Vereinfachen Microservices bei einem Projekt mit nur wenig mehr als einem Entwickler die Entwicklung und Wartung eines solchen komplizierten Systems? Gibt es Methoden / Systeme / Frameworks, die ich verwenden sollte, oder um den Aufwand für die Gestaltung des Systems auf diese Weise zu verringern?