2016-04-16 4 views
1

Ich entwickle ein Employee Management System und befolge eine Microservice-artige Architektur. Anfangs habe ich die ERD erstellt und mehrere Hauptwartungstabellen wie Abteilung, Projekt, Position usw. entworfen.Microservice-Gruppierung von Modulen

Meine Frage ist, muss ich einen einzelnen Dienst für jede dieser Tabellen erstellen? Oder sollte ich für alle diese Tabellen einen einzigen Service namens Master-Wartung anlegen?

Bitte helfen Sie mir zu entscheiden. Vielen Dank im Voraus.

+0

Es ist eine sehr abstrakte Frage. Fragen Sie nach einem Designmuster für Ihr Szenario? Könnten Sie die Frage konkretisieren? – totoro

+0

Ich würde gerne wissen, was wäre die beste Praxis, zum Beispiel habe ich 100 Tabellen, die nicht Teil der Transaktion ist, aber es ist da für CRUD-Operationen, bedeutet es, ich muss 100 Microservices erstellen? – fuzzy28

+0

Ich bin nicht vertraut mit dem Begriff, Master Wartungstabelle. Ist es eine Tabelle, die keine Nachschlagetabelle ist, sondern eine Tabelle mit aussagekräftigen Domänenwerten? –

Antwort

3

Die zweite tennet von SOA heißt es:

Dienstleistungen autonomous sind

Was dies bedeutet, ist, dass so viel wie möglich, sollte es keine horizontale Kopplung zwischen den Diensten sein. Wenn Sie ein spezielles Beispiel aus Ihrer Frage verwenden, sollte der Dienst Abteilung nicht mit dem Dienst Projekte verknüpft sein.

Durch die Modellierung von Abteilungs- und Projektdaten in einer einzigen Datenbank wird jedoch bereits eine Kopplung zwischen ihnen eingeführt.

Um Ihre Dienste dann zu entkoppeln, sollten Sie jedem Dienst eine eigene Datenbank geben. Die Dienste müssten dann über einen anderen Mechanismus kommunizieren, um Daten miteinander auszutauschen, anstatt über die Datenbank.

Dieser Ansatz bringt jedoch Komplexität in Ihre Lösung. Dies ist bekannt als microservice premium. Sie sollten sich fragen, ob diese Kosten den Nutzen eines Microservice-basierten Ansatzes zumindest von Anfang an wert sind.

+0

Danke für die Eingabe, jetzt habe ich eine Idee, was ich mit meiner Frage anfangen soll. – fuzzy28