Microservices & Canonical Modell

9

Als ich auf dieser Site über Microservices las , stieß ich auf die folgende Aussage. Was ist mit einem kanonischen Schema gemeint? Ist es nicht dasselbe wie das Domain-Modell?

Das Muster der Microservices-Architektur lehnt auch andere Teile der SOA ab, z. B. das Konzept eines kanonischen Schemas.

Punter Vicky
quelle
Würdest du zufällig die Quelle dieser Aussage kennen? (zum Zwecke der Verknüpfung)
Jack
Sicher Jack, es ist hier - nginx.com/blog/introduction-to-microservices/…
Punter Vicky
Ich nehme an, dieser Wikipedia-Artikel ist genau das, wonach Sie suchen. Ich finde den Artikel jedoch nicht leicht zu verstehen.
Arseni Mourzenko
Danke @ArseniMourzenko. Ich glaube, dass selbst in der Microservice-Architektur die Anforderung und Antwort einem Datenmodell entsprechen müssen. Ich kann noch nicht verstehen, warum es von der Microservice-Architektur als abgelehnt bezeichnet wird.
Punter Vicky
2
Einige Datenmodelle ja, aber mir scheint, dass sich der Artikel auf ein "gemeinsames" oder "gemeinsames" Datenmodell zwischen zwei oder mehr Diensten bezieht. Das kanonische Schema ist ein Muster, mit dem Dienste bei Laufzeitdatenumwandlungen gespeichert werden sollen. Eine gemeinsame "Sprache" zwischen Diensten. Es sieht also so aus, als würde der Artikel die völlige Unabhängigkeit der MS von dem "Ökosystem" betonen, in dem sie lebt. Nehmen wir zum Beispiel die Erwähnung gegenüber ESB. ESB verlangt normalerweise ein Unternehmensdatenmodell (Nachrichten), das für alle im Bus gleich ist. MS lehnt es ab, an eine externe Systemverengung gebunden zu sein.
Laiv

Antworten:

5

Ich entschuldige mich im Voraus dafür, dass ich mich auf den Kommentar von @ArseniMourzenko verlassen habe, aber als ich anfing, die Wikipedia zu lesen, verstand ich sofort, was Canonical Schema bedeutet.

Hier der Kommentar von OP, der sich auf den wirklichen Zweifel konzentriert

Ich glaube, dass selbst in der Microservice-Architektur die Anforderung und Antwort einem Datenmodell entsprechen müssen.

Einige Datenmodelle ja, aber es scheint, dass sich der Artikel auf ein "gemeinsames" oder "gemeinsames" Datenmodell zwischen zwei oder mehr Diensten bezieht.

Das kanonische Schema ist ein Muster, mit dem Dienste bei Laufzeitdatenumwandlungen gespeichert werden sollen. Es erspart Ihnen auch das Duplizieren von Code. Sie koppeln Ihren Service dann aber auch an ein externes Datenmodell. (Siehe Diagramme auf der oben verlinkten Wikipedia-Seite)

Es ist eine Art gemeinsame "Sprache" zwischen Diensten.

Es sieht also so aus, als würde der Artikel die völlige Unabhängigkeit der MS von dem "Ökosystem" betonen, in dem sie lebt.

Nehmen wir zum Beispiel die Erwähnung gegenüber ESB.

Sie vermeiden außerdem die Verwendung von ESBs und implementieren stattdessen ESB-ähnliche Funktionen in den Microservices selbst.

ESB verlangt normalerweise ein Unternehmensdatenmodell (Nachrichten), das für alle an den Bus angeschlossenen Personen gleich ist.

Zurück zum Artikel, so scheint es, dass der Autor auf die Tatsache hinweist, dass MS es ablehnt, an ein externes System (und dessen Einschränkungen) gebunden zu sein .

Laiv
quelle
Danke @Laiv. Ich werde das Kopfgeld in 9 Stunden vergeben - das schränkt mich ein :)
Punter Vicky
1

Bei Microservices dreht sich alles um engen Zusammenhalt und lose Kopplung. Innerhalb eines Microservices besteht eine enge Kohäsion, zwischen den Microservices besteht jedoch eine lose Kopplung, und Sie möchten daher gemeinsame Schemata oder Datenverträge vermeiden. Wenn Sie feststellen, dass Microservices synchrone Aufrufe auf eine Weise ausführen, die erfordert, dass sie ein gemeinsames Schema verwenden, kann dies ein Hinweis darauf sein, dass Sie Ihre Dienstgrenzen falsch definiert haben.

Microservices sollten im Domain-Driven-Design-Sprachgebrauch eng an Bounded Contexts ausgerichtet sein.

pnschofield
quelle
If you find that you have microservices making synchronous calls. Nicht unbedingt asynchrone Aufrufe. Dies kann auch bei asynchronen ESB-Nachrichten der Fall sein. Ich denke, es konzentriert sich auf die Tatsache, an gemeinsame Schemata oder Datenverträge gekoppelt zu sein. Ich gehe davon aus, dass in der MS-Architektur jegliche Kommunikation zwischen Diensten vermieden werden sollte. Die Kommunikation sollte über Anwendungen statt über interne (innere Service-Schicht) oder externe (ESB, Warteschlange usw.) Schicht erfolgen
Laiv