Ich habe eine architektonische Frage zu Microservices. Wir haben 2 verschiedene Datenquellen (2 Tabellen mit einigen ähnlichen Feldern, aber keine Verbindung zwischen ihnen). Wir wollen nur Daten von diesen lesen. Ist es sinnvoll, für jede dieser Quellen einen Microservice (entlang des Modellobjekts) zu erstellen, oder reicht es aus, ein generisches Modell mit einem generischen Service zu erstellen, der die Daten bereitstellt?Microservice pro Datenmodell
Antwort
Die richtige Antwort hängt vom Projekt/Produkt und den Anforderungen ab.
Microservices sind rund um Business-Funktionen angeordnet. Dies gibt den Service-Kontext, der den Entwicklern hilft, sie zu konsumieren. Generische Dienste haben diesen Kontext nicht.
Nehmen wir zum Beispiel an, wir haben zwei Tabellen, eine mit Kundeninformationen und eine mit Mitarbeiterinformationen (der Einfachheit halber). Wir lesen nur von den Tischen.
Eine Microservice-Architektur bietet Ihnen zwei Dienste mit einer Leseoperation.
Also würde ein Entwickler eine customer.listAll() aufrufen, wenn Sie wollen und eine employee.listAll() zum Beispiel. Der Kontext ist jedoch klar.
Die Verwendung eines generischen Dienstes kann zu folgendem Code führen: service.listAll (Kunden). Der Parameter trägt jetzt den Kontext. In einem System mit einer großen Anzahl von verschiedenen Typen/Tabellen kann dies zu einem großen Problem werden. Ein generischer Service hätte keine service.listCustomers() oder service.listEmployees(), die spezifisch und nicht generisch sind.
Denken Sie daran, eine API, die nicht leicht zu verstehen ist, ist nicht einfach zu bedienen und generische Service, während zunächst etwas einfacher zu konstruieren wird schließlich Komplexität hinzufügen. Wartung nicht Entwicklung ist der längste und teuerste Teil der Software.
Dies berührt einen anderen Punkt. Alles in einem generischen Service bedeutet, dass wir, wenn ein Fehler im Kundenservice auftritt, auch den Mitarbeiter-Service stoppen müssen, um den Fehler zu beheben. Der Fehler kann sich möglicherweise auch auf beide Dienste auswirken. Microservices leidet darunter nicht, da es Ihnen ermöglicht, einen Dienst herunterzufahren, ohne die Anwendung herunterzufahren.
Eine Sache zu beachten ist, dass Sie ein generisches Muster verwenden können, um Ihren Microservice zu implementieren. Mit anderen Worten, sowohl der Mitarbeiter als auch der Kundendienst könnten ein DOA-Muster in ihren Operationen verwenden. Der Code könnte zwischen ihnen in irgendeiner Weise vielleicht eine Bibliothek geteilt werden, aber sie würden völlig unabhängig sein.
- 1. Microservices: Datenquelle pro Instanz oder pro Microservice?
- 2. GAE Microservices mit dedizierten Cron-Jobs pro Microservice
- 3. Docker-Compose pro Microservice in lokalen und Produktionsumgebungen?
- 4. Grpc Microservice Architektur Implementierung
- 5. Microservice based event store
- 6. Couchbase Microservice Architektur
- 7. Verteiltes Datenmodell
- 8. Swift - Datenmodell
- 9. TreeTableView Datenmodell
- 10. Cassandra "Pfad" Datenmodell
- 11. Spring Boot Microservice Framework Wie man einen anderen Microservice von einem Microservice aus anruft
- 12. Microservice zu Microservice Anrufe, Autorisierung von einer Warteschlange Nachricht
- 13. microservice messaging db-assigned identifiers
- 14. Microservice mit Spring Boot
- 15. Merge Microservice Frontends Together
- 16. Microservice-Architektur für ETL
- 17. Simple Microservice framework
- 18. Microservice Messaging Choices
- 19. Microservice-Autorisierung mit Spring
- 20. Microservice gemeinsame Datenbank
- 21. Nutzung vorhandene Microservice
- 22. Clustering Microservice Komponenten
- 23. Microservice mit Apache Camel
- 24. Microservice-Sicherheit mit AWS
- 25. monolithische oder Microservice-Konzept
- 26. Benutzer als Microservice
- 27. Microservice-Gruppierung von Modulen
- 28. Kombination Stimmen von Microservice
- 29. Multi-Tenant-Microservice-Sicherheit
- 30. Microservice Architektur Klärung
Vielen Dank für die ausführliche Antwort! – David