2017-10-30 8 views
0

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

0

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.

+0

Vielen Dank für die ausführliche Antwort! – David