2016-07-21 6 views
2

Ich bin gerade dabei, einen Monolith in separate Microservices zu zerlegen. Ich habe bereits einen Kontakt-Service - es speichert Namen, E-Mail-Adressen, Telefonnummern usw.Monolith für separate Dienste Hilfe und Anleitung

Ich möchte einen anderen Dienst für Organisationen/Unternehmen erstellen. Diese Organisationen haben Kontakte, deshalb möchte ich meinen vorhandenen Kontaktdienst dafür verwenden, anstatt alles neu zu erstellen.

Kann jemand beraten, wie ich das strukturieren sollte? Ich habe über die folgenden zwei Möglichkeiten nachgedacht.

1) Implementieren Sie den Kontaktservice innerhalb des Org-Service. Ein Benutzer des Org-Dienstes weiß also nicht, dass der Kontaktdienst getrennt ist. Dies hat den Nachteil, dass ich eine Ladung von Endpunkten im Org-Dienst neu erstellen muss, die einfach (mehr oder weniger) zum Kontaktdienst weitergeleitet werden.

2) Lassen Sie den Benutzer dieser Dienste einen Kontakt über den Kontaktservice erstellen und erstellen Sie dann eine Möglichkeit, diesen Kontakt an die Organisation anzuhängen.

Ist eine dieser vorzuziehen? Oder gibt es einen anderen Weg, an den ich nicht gedacht habe?

Antwort

0

Oder gibt es einen anderen Weg, an den ich nicht gedacht habe?

3) Fügen Sie die Organisation dem Kontaktdomänenmodell hinzu.

Für mich fallen sowohl Kontakte als auch Organisationen unter die gleiche Geschäftsdomäne "Kontakt" oder "CRM".

Anders ausgedrückt: Wenn Sie den Kontaktdienst entfernen, kann der Organisationsdienst dann nützliche Arbeit leisten? Wenn nicht, dann kann dies ein Signal sein, dass Sie Organisation einfach in die Geschäftsdomäne Kontakt aufnehmen sollten.

Dies scheint besonders zutreffend zu sein, da eine der Optionen, die Sie skizzieren, der Organisationsdienst nur als Fassade für den Kontaktdienst dient. Wenn zwischen dem Kontaktmodell im Kontaktdienst und der Darstellung dieses Modells im Organisationsdienst kein wesentlicher Unterschied besteht, sind sie effektiv austauschbar und sollten daher nicht getrennt werden.

Verwandte Themen