Diese Seite wurde exportiert von Exams Labs Braindumps [ http://blog.examslabs.com ] Exportdatum:Thu Dec 12 1:44:30 2024 / +0000 GMT ___________________________________________________ Titel: Neueste [Sep 28, 2023] S90.08B Prüfung mit genauen SOA Design & Architektur Lab mit Services & Microservices PDF Fragen [Q10-Q33] --------------------------------------------------- Neueste [Sep 28, 2023] S90.08B Prüfung mit genauen SOA Design & Architecture Lab mit Services & Microservices PDF Fragen Machen Sie einen Karrieresprung durch die SOA-Prüfung 17 Fragen Die SOA S90.08B-Prüfung ist eine Labor-basierte Prüfung, d.h. sie prüft die praktischen Fähigkeiten und Fertigkeiten von Fachleuten und nicht nur deren theoretisches Wissen. Bei der S90.08B-Prüfung müssen die Kandidaten eine Reihe von Aufgaben lösen, die darauf ausgelegt sind, reale Szenarien und Herausforderungen zu simulieren, denen sie bei ihrer Arbeit als SOA-Architekten und -Designer begegnen können. Die Prüfung SOA S90.08B: SOA Design & Architecture Lab with Services & Microservices ist eine Zertifizierung auf fortgeschrittenem Niveau, die sich auf das Design und die Architektur einer serviceorientierten Architektur (SOA) mit Services und Microservices konzentriert. Die SOA Design & Architecture Lab with Services & Microservices-Zertifizierung ist ideal für Fachleute, die bereits Erfahrung mit SOA haben und ihr Fachwissen im Bereich Design und Implementierung von SOA-Lösungen erweitern möchten. FRAGE 10Unser Service-Inventar enthält die folgenden drei Services, die Datenzugriffsfunktionen für Rechnungen bereitstellen: Invoice, InvProc und Proclnv. Diese Dienste wurden zu unterschiedlichen Zeiten von verschiedenen Projektteams erstellt und mussten keine Designstandards einhalten. Daher hat jeder dieser Dienste ein anderes Datenmodell für die Darstellung von Rechnungsdaten, und derzeit hat jeder dieser drei Dienste einen anderen Service Consumer: Service Consumer A greift auf den Dienst Invoice (1) zu, Service Consumer B (2) greift auf den Dienst InvProc zu und Service Consumer C (3) greift auf den Dienst Proclnv zu. Jeder Service-Consumer ruft eine Datenzugriffsfunktion eines rechnungsbezogenen Dienstes auf, so dass dieser Dienst mit der gemeinsamen Buchhaltungsdatenbank interagieren muss, die von allen rechnungsbezogenen Diensten verwendet wird (4, 5, 6).Zusätzlich wurde Service-Consumer D so konzipiert, dass er direkt auf Rechnungsdaten aus der gemeinsamen Buchhaltungsdatenbank zugreift (7). (Im Kontext dieser Architektur wird der Service Consumer D als Service Consumer bezeichnet, da er auf eine Ressource zugreift, die mit den dargestellten Servicearchitekturen in Verbindung steht). Angenommen, der Dienst Invoice, der Dienst InvProc und der Dienst Proclnv sind Teil desselben Dienstinventars, welche Schritte wären dann erforderlich, um das offizielle Endpunktmuster vollständig anzuwenden? Einer der rechnungsbezogenen Dienste muss als offizieller Dienst ausgewählt werden, der Zugriffsmöglichkeiten auf Rechnungsdaten bietet. Die Servicekonsumenten A, B und C müssen dann so umgestaltet werden, dass sie nur auf den ausgewählten rechnungsbezogenen Service zugreifen. Da der Service Consumer D nicht auf einen rechnungsbezogenen Service angewiesen ist, ist er nicht vom offiziellen Endpunktmuster betroffen und kann weiterhin direkt auf die Rechnungsdatenbank zugreifen. Das Prinzip der Serviceabstraktion kann weiter angewandt werden, um die Existenz der gemeinsam genutzten Buchhaltungsdatenbank und andere Implementierungsdetails vor aktuellen und zukünftigen Servicekunden zu verbergen. Einer der rechnungsbezogenen Dienste muss als offizieller Dienst ausgewählt werden, der Zugriffsmöglichkeiten auf Rechnungsdaten bietet, und die Logik der beiden anderen Dienste muss so verschoben werden, dass sie im Kontext des offiziellen Rechnungsdienstes ausgeführt wird. Die Servicekonsumenten A, B und C müssen dann so umgestaltet werden, dass sie nur auf den ausgewählten rechnungsbezogenen Service zugreifen. Service Consumer D muss ebenfalls umgestaltet werden, damit er nicht direkt auf die gemeinsam genutzte Buchhaltungsdatenbank zugreift, sondern seinen Datenzugriff durch Interaktion mit dem offiziellen rechnungsbezogenen Dienst durchführt. Das Prinzip der Serviceabstraktion kann weiter angewandt werden, um die Existenz der gemeinsam genutzten Buchhaltungsdatenbank und andere Implementierungsdetails vor aktuellen und zukünftigen Servicekonsumenten zu verbergen. Da die Servicekonsumenten A, B und C ihren Datenzugriff bereits über veröffentlichte Verträge abwickeln, sind sie von dem offiziellen Endpunktmuster nicht betroffen. Service Consumer D muss so umgestaltet werden, dass er nicht direkt auf die gemeinsam genutzte Buchhaltungsdatenbank zugreift, sondern seinen Datenzugriff durch Interaktion mit dem offiziellen rechnungsbezogenen Dienst durchführt. Das Prinzip der Dienstabstraktion kann weiter angewandt werden, um die Existenz der gemeinsamen Buchhaltungsdatenbank und andere Implementierungsdetails vor aktuellen und zukünftigen Dienstkonsumenten zu verbergen. Einer der rechnungsbezogenen Dienste muss als offizieller Dienst ausgewählt werden, der den Zugriff auf Rechnungsdaten ermöglicht. Da der Service Consumer D nicht auf einen rechnungsbezogenen Service angewiesen ist, ist er von dem Official Endpoint Pattern nicht betroffen und kann weiterhin direkt auf die Buchhaltungsdatenbank zugreifen.Das Service Loose Coupling-Prinzip kann weiter angewandt werden, um die Service Consumers A, B und C von der gemeinsamen Buchhaltungsdatenbank und anderen Implementierungsdetails zu entkoppeln. ErläuterungDas Legacy-Wrapper-Muster kann angewandt werden, um die Komponente B in einen separaten Dienst zu trennen, der die gemeinsame Datenbank umschließt. Das Legacy-Wrapper-Muster kann wiederum so angewendet werden, dass die Komponente C in einen separaten Utility-Service aufgeteilt wird, der als Wrapper für die API des Legacy-Systems fungiert. Das Legacy-Wrapper-Muster kann erneut auf Komponente D angewendet werden, so dass diese in einen weiteren Dienst aufgeteilt wird, der standardisierten Zugriff auf den Dateiordner bietet. Das Service-Facade-Muster kann so angewendet werden, dass drei Fassadenkomponenten hinzugefügt werden: eine zwischen Komponente A und jedem der neuen Wrapper-Dienstprogramme. Das Prinzip der Dienstkompatibilität kann auf Dienst A und die drei neuen Wrapper-Utility-Dienste angewandt werden, so dass alle vier Dienste für die Teilnahme an der neuen Dienstkomposition optimiert sind. Durch die Anwendung des Legacy-Wrapper-Musters zur Aufteilung der Komponenten B, C und D in drei verschiedene Dienstprogramme können die gemeinsam genutzten Ressourcen innerhalb des IT-Unternehmens (Datenbank A, das Legacy-System und die Dateiordner) ordnungsgemäß gekapselt und durch dedizierte Dienste verwaltet werden. Das Service-Facade-Muster kann dann verwendet werden, um eine Fassadenkomponente zwischen Komponente A und jedem der neuen Wrapper-Utility-Services zu erstellen, so dass sie nahtlos interagieren können, ohne das Verhalten von Service Consumer A zu beeinträchtigen.Schließlich kann das Prinzip der Service Composability angewendet werden, um sicherzustellen, dass Service A und die drei neuen Wrapper-Utility-Services für die Teilnahme an der neuen Servicekomposition optimiert sind. Dies wird dazu beitragen, Leistungseinbußen zu verringern, die sich aus der Aufteilung der drei Komponenten in separate Services ergeben könnten.FRAGE 11Der Service Consumer A sendet eine Nachricht an den Service A. Derzeit gibt es drei doppelte Implementierungen von Service A (Implementierung 1, Implementierung 2 und Implementierung 3). Die vom Service Consumer A gesendete Nachricht wird vom Service Agent A (1) abgefangen, der zur Laufzeit bestimmt, an welche Implementierung von Service A die Nachricht weitergeleitet werden soll. Alle drei Implementierungen von Dienst A befinden sich auf demselben physischen Server, und obwohl es zwei Implementierungen von Dienst A gibt, ist die Leistung manchmal schlecht. Sie sind auch darüber informiert, dass Service A bald um eine neue Dienstfunktionalität erweitert werden muss, die den Zugriff auf eine gemeinsame Datenbank erfordert, die von vielen anderen Clients und Anwendungen im IT-Unternehmen genutzt wird. Wie kann diese Servicearchitektur geändert werden, um die Leistung in Vorbereitung auf die neue Servicefähigkeit zu verbessern? Das Prinzip des standardisierten Servicevertrags kann angewandt werden, um sicherzustellen, dass die neue Servicefähigkeit den bestehenden Servicevertrag in einer Weise erweitert, die mit den aktuellen Designstandards konform ist. Das Muster der redundanten Implementierung kann angewandt werden, um separate Implementierungen von Service A einzurichten, die doppelte Datenbanken mit Kopien der Daten enthalten, die Service A von der gemeinsamen Datenbank benötigt. Das Prinzip der Dienstautonomie kann angewandt werden, um die einzelnen Implementierungen von Dienst A weiter zu isolieren, indem sie auf verschiedene physische Server aufgeteilt werden. Wenn die neue Dienstfunktion hinzugefügt wird, kann das Muster der Dienstdatenreplikation angewendet werden, um jeder Implementierung von Dienst A eine eigene Kopie der Daten zu geben, die sie aus der gemeinsamen Datenbank benötigt. Das Prinzip der losen Kopplung von Services kann zusammen mit dem Prinzip des standardisierten Servicevertrags angewendet werden, um sicherzustellen, dass Service Consumer A nicht indirekt an die gemeinsam genutzte Datenbank gekoppelt ist, nachdem die neue Servicefähigkeit zum Servicevertrag hinzugefügt wurde. Das Legacy Wrapper-Muster kann angewendet werden, um einen neuen Utility-Dienst einzurichten, der standardisierte Datenzugriffsdienstfunktionen für die gemeinsam genutzte Datenbank bereitstellt. Das Prinzip der Dienstautonomie kann angewandt werden, um die einzelnen Implementierungen von Dienst A weiter zu isolieren, indem sie auf verschiedene physische Server aufgeteilt werden. Wenn die neue Service-Fähigkeit hinzugefügt wird, kann das State-Repository-Muster angewendet werden, um jeder Implementierung von Service A eine eigene Kopie der Daten zu geben, die sie von der gemeinsamen Datenbank benötigt. ErläuterungDurch die Aufteilung der einzelnen Implementierungen von Dienst A auf verschiedene physische Server können sie voneinander und von anderen Clients und Anwendungen im IT-Unternehmen isoliert werden, was zu einer Leistungssteigerung beitragen kann. Darüber hinaus kann die Verwendung des Service Data Replication Patterns dazu beitragen, dass jede Implementierung von Service A ihre eigene Kopie der Daten erhält, die sie aus der gemeinsam genutzten Datenbank benötigt, um die Belastung der gemeinsam genutzten Datenbank zu verringern und die Leistung zu verbessern. Dies kann besonders wichtig sein, wenn eine neue Dienstfunktion hinzugefügt wird, die den Zugriff auf die gemeinsam genutzte Datenbank erfordert, da so sichergestellt werden kann, dass die Leistung von Dienst A nicht durch die zusätzlichen Anforderungen an die gemeinsam genutzte Datenbank beeinträchtigt wird.FRAGE 12Die Dienste A, B und C sind nicht-agnostische Aufgabendienste. Eine Bewertung der drei Dienste zeigt, dass jeder von ihnen einige agnostische Logik enthält, die nicht zur Wiederverwendung zur Verfügung gestellt werden kann, da sie mit nicht-agnostischer Logik gebündelt ist.Die Bewertung stellt außerdem fest, dass die Remote-Kommunikation, die für Dienst A und Dienst B erforderlich ist, um mit der gemeinsamen Zustandsdatenbank zu interagieren, eine unangemessene Verringerung der Laufzeitleistung verursacht, da sich Dienst A, Dienst B und die gemeinsame Zustandsdatenbank jeweils in physisch getrennten Umgebungen befinden.Wie kann die Anwendung des Orchestrierungsmusters diese Architektur verbessern? Die Anwendung des Orchestrierungsmusters führt zu einer Umgebung, in der die Muster "Official Endpoint", "State Repository" und "Service Data Replication" automatisch angewandt werden, so dass die gemeinsame Zustandsdatenbank über offizielle Service-Endpunkte für die Dienste A und B repliziert werden kann, so dass jeder Aufgabendienst seine eigene dedizierte Zustandsdatenbank haben kann. Die Anwendung des Orchestrierungsmusters führt zu einer Umgebung, in der die nicht-agnostische Logik sauber von der agnostischen Logik getrennt werden kann, die in den Diensten A, B und C vorhanden ist, was dazu führt, dass neue agnostische Dienste entworfen werden müssen, deren Wiederverwendungspotenzial durch die Anwendung des Prinzips der Wiederverwendbarkeit von Diensten sichergestellt ist. Das State Repository Pattern, das von der Orchestrierungsumgebung unterstützt wird und lokal ist, bietet eine zentrale Zustandsdatenbank, die von den Services A und B gemeinsam genutzt werden kann. Die Anwendung des Orchestrierungsmusters führt zu einer Umgebung, in der die kompensierende Diensttransaktion automatisch angewandt wird, was die Möglichkeit bietet, eine ausgefeilte Ausnahmelogik zu erstellen, mit der die Leistungsprobleme kompensiert werden können, die dadurch entstehen, dass die Dienste A und B aus der Ferne auf die Zustandsdatenbank zugreifen müssen. Die Muster API-Gateway und Service-Broker werden ebenfalls automatisch angewandt und bieten gemeinsame Transformationsfunktionen in einer zentralisierten Verarbeitungsschicht, um etwaige Unterschiede in den Serviceverträgen, die für die neuen agnostischen Services erstellt werden müssen, zu überwinden. Das Orchestrierungsmuster ist auf diese Architektur nicht anwendbar, da es das Hosting des erforderlichen State Repository nicht unterstützt. ErläuterungDie Anwendung des Orchestrierungsmusters kann diese Architektur verbessern, indem es die nicht-agnostische Logik sauber von der agnostischen Logik trennt und so den Entwurf neuer agnostischer Dienste mit Wiederverwendungspotenzial ermöglicht.Das State Repository-Muster, das von der Orchestrierungsumgebung unterstützt wird und lokal ist, bietet eine zentrale Zustandsdatenbank, die von den Diensten A und B gemeinsam genutzt werden kann. Darüber hinaus bietet das Orchestrierungsmuster einen zentralen Controller, der die Interaktionen zwischen den Diensten A, B und C koordinieren kann, wodurch der Bedarf an Remote-Kommunikation zwischen den Diensten verringert und die Laufzeitleistung verbessert wird. FRAGE 13Beziehen Sie sich auf die Abbildung: Dienst A ist ein SOAP-basierter Webservice mit einem funktionalen Kontext, der für die rechnungsbezogene Verarbeitung bestimmt ist. Service B ist ein REST-basierter Dienst, der allgemeinen Datenzugriff auf eine Datenbank bietet. In dieser Servicekompositionsarchitektur sendet Service Consumer A eine SOAP-Nachricht mit einem Rechnungs-XML-Dokument an Service A (1). Service A sendet dann das Rechnungs-XML-Dokument an Service B (2), der das Rechnungsdokument in eine Datenbank schreibt (3).Das Datenmodell, das von Service Consumer A zur Darstellung des Rechnungsdokuments verwendet wird, basiert auf XML Schema A.Der Servicevertrag von Service A ist so konzipiert, dass er Rechnungsdokumente akzeptiert, die auf XML Schema B basieren.Der Servicevertrag für Service B ist so konzipiert, dass er Rechnungsdokumente akzeptiert, die auf XML Schema A basieren. Die Datenbank, in die der Dienst B den Rechnungsdatensatz schreiben muss, akzeptiert nur vollständige Geschäftsdokumente in einem proprietären CSV-Format (Comma Separated Value). Aufgrund der Inkompatibilität der von den Diensten verwendeten XML-Schemata kann das Senden des Rechnungsdokuments vom Dienstverbraucher A an den Dienst B nicht mit den Diensten in ihrer derzeitigen Form durchgeführt werden. Welche Schritte können unternommen werden, um das Senden des Rechnungsdokuments von Service Consumer A an die Datenbank zu ermöglichen, ohne Logik hinzuzufügen, die die Anforderungen an die Laufzeitleistung erhöht? Service Consumer A kann so umgestaltet werden, dass er das XML-Schema B verwendet, so dass die von ihm gesendete SOAP-Nachricht mit dem Servicevertrag von Service A konform ist. Das Muster für die Datenmodelltransformation kann dann angewendet werden, um die von Service A gesendete SOAP-Nachricht so zu transformieren, dass sie mit dem von Service B verwendeten XML-Schema A konform ist. Die Servicekomposition kann so umgestaltet werden, dass Service Consumer A das Rechnungsdokument direkt an Service B sendet, nachdem die spezielle Rechnungsverarbeitungslogik von Service A in Service B kopiert wurde. Da Service Consumer A und Service B das XML-Schema A verwenden, wird die Notwendigkeit einer Transformationslogik vermieden. Dies entspricht natürlich dem Prinzip der losen Kopplung von Services, da Service Consumer A nicht verpflichtet ist, das Rechnungsdokument in einem Format zu senden, das mit der von Service B verwendeten Datenbank konform ist. Der Service Consumer A kann so umgestaltet werden, dass er das Rechnungsdokument direkt in die Datenbank schreibt. Dies reduziert die Leistungsanforderungen, da die Beteiligung von Dienst A und Dienst B vermieden wird. Außerdem wird die Anwendung des Prinzips der losen Kopplung von Diensten unterstützt, indem sichergestellt wird, dass der Dienstkonsument A eine Datenzugriffslogik enthält, die ihn direkt mit der Datenbank koppelt. Die Servicekomposition kann so umgestaltet werden, dass Service Consumer A das Rechnungsdokument direkt an Service B sendet. Da Service Consumer A und Service B das XML-Schema A verwenden, wird die Notwendigkeit einer Transformationslogik vermieden. Dies entspricht natürlich dem Muster der Logikzentralisierung, da Service Consumer A nicht verpflichtet ist, das Rechnungsdokument in einem Format zu senden, das mit der von Service B verwendeten Datenbank konform ist. Die empfohlene Lösung besteht darin, das Datenmodell-Transformationsmuster zu verwenden, um das Rechnungs-XML-Dokument von Schema B nach Schema A zu transformieren, bevor es an Dienst B weitergeleitet wird. Darüber hinaus sollte das Prinzip des standardisierten Servicevertrags auf Service B und Service Consumer A angewandt werden, um sicherzustellen, dass unnötige Validierungen vermieden werden, wodurch das XML-Dokument der Rechnung optimiert wird. Diese Lösung vermeidet das Hinzufügen von Logik, die die Anforderungen an die Laufzeitleistung erhöht.FRAGE 14Beziehen Sie sich auf die Abbildung: Service A ist ein Aufgabendienst, der an Service B eine Nachricht (2) sendet, mit der Aufforderung, dass Service B Daten in einer Antwortnachricht (3) an Service A zurückschickt. Abhängig von der erhaltenen Antwort muss Dienst A möglicherweise eine Nachricht an Dienst C senden (4), für die er keine Antwort benötigt. Bevor er sich mit Dienst B in Verbindung setzt, muss Dienst A zunächst eine Liste von Codewerten aus seiner eigenen Datenbank abrufen (1) und diese Daten dann in seinem eigenen Speicher ablegen. Wenn sich herausstellt, dass er eine Nachricht an Dienst C senden muss, muss Dienst A die Daten, die er von Dienst B erhält, mit den Daten aus der Codewerteliste kombinieren, um die Nachricht zu erstellen, die er an Dienst C sendet. Wenn Dienst A den Dienst C nicht aufrufen muss, kann er seine Aufgabe durch Verwerfen der Codewerte erledigen. Sie erfahren, dass die Dienste in Dienstinventar A mit Dienstverträgen entworfen wurden, die auf anderen Designstandards und Technologien basieren als die Dienste in Dienstinventar B. Daher ist Dienst A ein SOAP-basierter Webservice und Dienst B ein REST-Dienst, der JSON-formatierte Nachrichten austauscht. Daher können Dienst A und Dienst B derzeit nicht miteinander kommunizieren. Darüber hinaus ist Dienst C ein agnostischer Dienst, auf den viele gleichzeitige Dienstnutzer zugreifen. Dienst C erreicht häufig seine Nutzungsschwellenwerte, während derer er nicht verfügbar ist und an ihn gesendete Nachrichten nicht empfangen werden. Das Datenmodell-Transformationsmuster kann angewendet werden, indem eine Zwischenverarbeitungsschicht zwischen Dienst A und Dienst B eingerichtet wird, die eine Nachricht zur Laufzeit von einem Datenmodell in ein anderes transformieren kann. Die Muster "Intermediate Routing" und "Service Agent" können angewandt werden, so dass, wenn Service B eine Antwortnachricht sendet, ein Service Agent die Nachricht abfangen und auf der Grundlage ihres Inhalts entweder an Service A weiterleiten oder die Nachricht an Service C weiterleiten kann. Das Muster der Datenformattransformation kann angewendet werden, indem eine Zwischenverarbeitungsschicht zwischen Dienst A und Dienst B eingerichtet wird, die eine Nachricht zur Laufzeit von einem Datenformat in ein anderes umwandeln kann. Das Asynchronous Queuing-Muster kann angewendet werden, um eine zwischengeschaltete Warteschlange zwischen Dienst A und Dienst C einzurichten, so dass, wenn Dienst A eine Nachricht an Dienst C senden muss, die Warteschlange die Nachricht speichert und sie an Dienst C weiterleitet, bis sie erfolgreich zugestellt wurde. Das Prinzip der Dienstautonomie kann zusammen mit dem Muster der redundanten Implementierung auf Dienst C angewendet werden, um eine zuverlässigere und skalierbarere Dienstarchitektur zu schaffen. Das Datenmodell-Transformationsmuster kann angewendet werden, indem eine Zwischenverarbeitungsschicht zwischen Dienst A und Dienst B eingerichtet wird, die eine Nachricht zur Laufzeit von einem Datenmodell in ein anderes transformieren kann. Die Muster "Intermediate Routing" und "Service Agent" können angewandt werden, so dass, wenn Service B eine Antwortnachricht sendet, ein Service Agent die Nachricht abfangen und auf der Grundlage ihres Inhalts entweder die Nachricht an Service A weiterleiten oder die Nachricht an Service C weiterleiten kann. Das Muster der Datenformattransformation kann angewendet werden, indem eine Zwischenverarbeitungsschicht zwischen Dienst A und Dienst B eingerichtet wird, die eine Nachricht zur Laufzeit von einem Datenformat in ein anderes umwandeln kann. Das Asynchronous Queuing Pattern kann angewandt werden, um eine zwischengeschaltete Warteschlange zwischen Service A und Service B einzurichten, so dass, wenn Service A eine Nachricht an Service B senden muss, die Warteschlange die Nachricht speichert und sie an Service B weiterleitet, bis sie erfolgreich zugestellt wurde. Das Prinzip der Wiederverwendbarkeit von Diensten kann zusammen mit dem Muster der redundanten Implementierung auch auf Dienst C angewendet werden, um eine wiederverwendbare und skalierbare Dienstarchitektur zu schaffen. Das Problem ist, dass Dienst A und Dienst B unterschiedliche Technologien verwenden und nicht miteinander kommunizieren können. Daher kann eine Zwischenverarbeitungsschicht eingerichtet werden, die Nachrichten zur Laufzeit von einem Datenformat in ein anderes umwandeln kann. Darüber hinaus erreicht der Dienst C häufig seine Nutzungsschwellen und ist nicht immer verfügbar, so dass ein asynchrones Warteschlangenmuster angewendet werden kann, um eine Zwischenwarteschlange zwischen Dienst A und Dienst C einzurichten. Darüber hinaus kann das Redundant Implementation Pattern auf Service C angewendet werden, um seine Verfügbarkeit und Skalierbarkeit zu gewährleisten, und das Service Autonomy Prinzip kann angewendet werden, um Service C unabhängig von anderen Services zu machen.FRAGE 15Beziehen Sie sich auf die Abbildung: Service Consumer A und Service A befinden sich im Service Inventory A. Service B und Service C befinden sich im Service Inventory B. Service D ist ein öffentlicher Service, der über das World Wide Web frei zugänglich ist. Der Dienst ist auch käuflich zu erwerben, so dass er unabhängig in IT-Unternehmen eingesetzt werden kann. Aufgrund der konsequenten Anwendung des Serviceabstraktionsprinzips innerhalb von Service Inventory B sind die einzigen Informationen, die über Service B und Service C verfügbar sind, die veröffentlichten Serviceverträge. Für Service D werden der Servicevertrag und ein Service Level Agreement (SLA) zur Verfügung gestellt. Sie sind Architekt in einem Projektteam, das Services für Service-Inventar A erstellt. Sie erfahren, dass die Eigentümer von Service-Inventar A und Service-Inventar B im Allgemeinen nicht kooperativ oder kommunikativ sind. Inventarübergreifende Servicekompositionen werden zwar toleriert, aber nicht direkt unterstützt. Infolgedessen sind keine SLAs für Service B und Service C verfügbar und Sie wissen nicht, wie verfügbar diese Services sind. Anhand der Serviceverträge können Sie feststellen, dass die Services im Service-Inventar B andere Datenmodelle und ein anderes Transportprotokoll verwenden als die Services im Service-Inventar A. Darüber hinaus haben die jüngsten Testergebnisse gezeigt, dass die Leistung von Service D aufgrund der hohen Anzahl gleichzeitiger Zugriffe von Service-Konsumenten aus anderen Organisationen sehr unvorhersehbar ist. Man hat Ihnen auch mitgeteilt, dass man sich Sorgen darüber macht, wie lange Service-Konsument A seinen Zustand beibehalten muss, während er auf eine Antwort von Service A wartet. Welche Schritte können unternommen werden, um diese Probleme zu lösen? Das ereignisgesteuerte Messaging-Muster kann angewandt werden, um eine Subscriber-Publisher-Beziehung zwischen Service Consumer A und Service A herzustellen. Dies gibt Service A die Flexibilität, seine Antwort an Service Consumer A zu übermitteln, wann immer er in der Lage ist, die drei Datenwerte zu sammeln, ohne dass Service Consumer A im Zustand bleiben muss. Das Asynchronous Queuing-Muster kann angewandt werden, um eine zentrale Messaging-Warteschlange zwischen Service A und Service B sowie zwischen Service A und Service C zu positionieren. Die Muster Data Model Transformation und Protocol Bridging können angewandt werden, um die Kommunikation zwischen Service A und Service B sowie zwischen Service A und Service C zu ermöglichen. Das Muster Redundant Implementation kann angewandt werden, um eine Kopie von Service D ins Haus zu holen und zu einem Teil des Service Inventory A zu machen. Das Muster Asynchronous Queuing kann angewendet werden, um eine zentrale Messaging-Warteschlange zwischen Service A und Service B sowie zwischen Service A und Service C zu positionieren und um eine separate Messaging-Warteschlange zwischen Service A und Service Consumer A zu positionieren. Die Muster Data Model Transformation und Protocol Bridging können angewendet werden, um die Kommunikation zwischen Service A und Service B sowie zwischen Service A und Service C zu ermöglichen. Das Legacy-Wrapper-Muster kann weiter angewendet werden, um den Dienst D mit einem standardisierten Dienstvertrag zu umhüllen, der mit den im Dienstinventar A verwendeten Designstandards übereinstimmt. Das Containerization-Pattern kann angewandt werden, um eine Umgebung für Service A zu schaffen, in der er seine Verarbeitung autonom durchführen kann. Dies gibt Service A die Flexibilität, Service Consumer A konsistent mit Antwortnachrichten zu versorgen. Das Asynchronous Queuing-Muster kann angewandt werden, um eine zentrale Messaging-Warteschlange zwischen Service A und Service B, zwischen Service A und Service C sowie zwischen Service A und Service D einzurichten. Die Muster Data Model Transformation und Protocol Bridging können angewandt werden, um die Kommunikation zwischen Service A und Service B sowie zwischen Service A und Service C zu ermöglichen. Das Muster Asynchronous Queuing kann angewandt werden, um eine Nachrichtenwarteschlange zwischen Service A und Service B, zwischen Service A und Service C und zwischen Service A und Service D zu positionieren. Zusätzlich wird eine separate Nachrichtenwarteschlange zwischen Service A und Service Consumer A positioniert. Die Muster Data Model Transformation und Protocol Bridging können angewandt werden, um die Kommunikation zwischen Service A und Service B, zwischen Service A und Service C und zwischen Service A und Service D zu ermöglichen. Das Muster Redundant Implementation kann angewandt werden, um eine Kopie von Service D im Haus zu haben. Das Legacy Wrapper-Muster kann weiter angewandt werden, um Service D mit einem standardisierten Servicevertrag zu umhüllen, der mit den in Service Inventory B verwendeten Designstandards übereinstimmt. Das Muster Asynchronous Queuing wird angewendet, um eine Messaging-Warteschlange zwischen Service A, Service B, Service C, Service D und Service Consumer A einzurichten. Dadurch wird sichergestellt, dass Nachrichten zwischen diesen Services weitergegeben werden können, ohne dass sie sich in einem zustandsbehafteten Modus befinden müssen. Die Muster Data Model Transformation und Protocol Bridging werden angewendet, um die Kommunikation zwischen Service A und Service B, Service A und Service C sowie Service A und Service D trotz ihrer unterschiedlichen Datenmodelle und Transportprotokolle zu ermöglichen.Das Muster Redundante Implementierung wird angewandt, um eine Kopie von Dienst D im Haus zu haben, um sicherzustellen, dass auf ihn lokal zugegriffen werden kann, und um die Unvorhersehbarkeit seiner Leistung zu verringern Das Muster Legacy Wrapper wird angewandt, um Dienst D mit einem standardisierten Dienstvertrag zu umhüllen, der den im Dienstinventar B verwendeten Designstandards entspricht. Insgesamt bietet dieser Ansatz eine umfassende Lösung, die die Probleme mit Service A, Service B, Service C und Service D angeht und gleichzeitig das Prinzip der Serviceabstraktion beibehält.FRAGE 16Dienst A ist ein SOAP-basierter Webservice mit einem funktionalen Kontext, der für die rechnungsbezogene Verarbeitung bestimmt ist.Dienst B ist ein REST-basierter Dienst, der einen allgemeinen Datenzugriff auf eine Datenbank bietet.In dieser Servicekompositionsarchitektur sendet Service Consumer A eine SOAP-Nachricht mit einem XML-Rechnungsdokument an Dienst A (1). Service A sendet dann das Rechnungs-XML-Dokument an Service B (2), der das Rechnungsdokument in eine Datenbank schreibt (3).Das Datenmodell, das von Service Consumer A zur Darstellung des Rechnungsdokuments verwendet wird, basiert auf XML Schema A.Der Servicevertrag von Service A ist so konzipiert, dass er Rechnungsdokumente akzeptiert, die auf XML Schema B basieren.Der Servicevertrag für Service B ist so konzipiert, dass er Rechnungsdokumente akzeptiert, die auf XML Schema A basieren. Die Datenbank, in die der Dienst B den Rechnungsdatensatz schreiben muss, akzeptiert nur vollständige Geschäftsdokumente in einem proprietären CSV-Format (Comma Separated Value). Aufgrund der Inkompatibilität der von den Diensten verwendeten XML-Schemata kann das Senden des Rechnungsdokuments vom Dienstverbraucher A an den Dienst B nicht mit den Diensten in ihrer derzeitigen Form durchgeführt werden. Welche Schritte können unternommen werden, um das Senden des Rechnungsdokuments von Service Consumer A an die Datenbank zu ermöglichen, ohne Logik hinzuzufügen, die die Anforderungen an die Laufzeitleistung erhöht? Service Consumer A kann so umgestaltet werden, dass er XML-Schema B verwendet, so dass die von ihm gesendete SOAP-Nachricht mit dem Servicevertrag von Service A konform ist. Das Muster für die Datenmodelltransformation kann dann angewandt werden, um die von Service A gesendete SOAP-Nachricht so umzuwandeln, dass sie mit dem von Service B verwendeten XML-Schema A konform ist. Das Prinzip des standardisierten Servicevertrags muss dann auf Service B und Service Consumer A angewandt werden, so dass das Rechnungs-XML-Dokument optimiert wird, um unnötige Validierungen zu vermeiden. Die Servicekomposition kann so umgestaltet werden, dass Service Consumer A das Rechnungsdokument direkt an Service B sendet, nachdem die spezialisierte Rechnungsverarbeitungslogik von Service A in Service B kopiert wurde. Da Service Consumer A und Service B das XML-Schema A verwenden, wird die Notwendigkeit einer Transformationslogik vermieden. Dies entspricht natürlich dem Prinzip der losen Kopplung von Services, da Service Consumer A nicht verpflichtet ist, das Rechnungsdokument in einem Format zu senden, das mit der von Service B verwendeten Datenbank konform ist. Der Service Consumer A kann so umgestaltet werden, dass er das Rechnungsdokument direkt in die Datenbank schreibt. Dies verringert die Leistungsanforderungen, da die Beteiligung von Dienst A und Dienst B vermieden wird. Außerdem wird die Anwendung des Prinzips der losen Kopplung von Diensten unterstützt, indem sichergestellt wird, dass Dienstkonsument A eine Datenzugriffslogik enthält, die ihn direkt mit der Datenbank koppelt. Die Servicekomposition kann so umgestaltet werden, dass Service Consumer A das Rechnungsdokument direkt an Service B sendet. Da Service Consumer A und Service B das XML-Schema A verwenden, wird die Notwendigkeit einer Transformationslogik vermieden. Dies entspricht natürlich dem Logic Centralization Pattern, da Service Consumer A nicht verpflichtet ist, das Rechnungsdokument in einem Format zu senden, das mit der von Service B verwendeten Datenbank konform ist. ErläuterungDie empfohlene Lösung besteht darin, das Datenmodell-Transformationsmuster zu verwenden, um das Rechnungs-XML-Dokument von Schema B nach Schema A zu transformieren, bevor es an Service B weitergeleitet wird. Bei dieser Lösung wird die Trennung der Belange beibehalten und jeder Service kann mit seinem eigenen spezifischen XML-Schema arbeiten. Darüber hinaus sollte das Prinzip des standardisierten Servicevertrags auf Service B und Service Consumer A angewandt werden, um sicherzustellen, dass unnötige Validierungen vermieden werden, wodurch das XML-Dokument der Rechnung optimiert wird. Diese Lösung vermeidet das Hinzufügen von Logik, die die Anforderungen an die Laufzeitleistung erhöht.FRAGE 17Wenn Service A eine Nachricht von Service Consumer A (1) erhält, wird die Nachricht von Komponente A verarbeitet. Diese Komponente ruft zunächst Komponente B (2) auf, die Werte aus der Nachricht verwendet, um Datenbank A abzufragen, um zusätzliche Daten zu erhalten. Anschließend ruft Komponente A Komponente C (3) auf, die mit der API eines Altsystems interagiert, um einen neuen Datenwert abzurufen, den sie dann an Komponente A zurückgibt. Anschließend sendet Komponente A einen Teil der gesammelten Daten an Komponente D (4), die die Daten in eine Textdatei schreibt, die in einem bestimmten Ordner abgelegt wird. Komponente D wartet dann, bis diese Datei über einen regelmäßig geplanten Batch-Import in ein anderes System importiert wird. Nach Abschluss des Imports gibt Komponente D einen Erfolgs- oder Misserfolgscode an Komponente A zurück. Komponente A sendet schließlich eine Antwort an Service Consumer A (5), die alle bisher gesammelten Daten enthält, und Service Consumer A schreibt alle Daten in Datenbank B (6).Die Komponenten A, B, C und D gehören zur Servicearchitektur von Service A. Datenbank A, das Legacy-System und die Dateiordner sind gemeinsam genutzte Ressourcen innerhalb des IT-Unternehmens.Service A ist ein Entity Service mit einer Servicearchitektur, die in den letzten Jahren gewachsen ist. Als Ergebnis eines Projekts zur Neugestaltung des gesamten Servicebestands werden Sie gebeten, die Servicearchitektur von Service A zu überarbeiten, um die von den Komponenten B, C und D bereitgestellte Logik in drei verschiedene Utility-Services aufzuteilen, ohne das Verhalten von Service A in Bezug auf Service-Consumer A zu unterbrechen.Welche Schritte können unternommen werden, um diese Anforderungen zu erfüllen? Das Legacy Wrapper-Muster kann angewendet werden, so dass Komponente B in einen separaten Wrapper-Dienst aufgeteilt wird, der die gemeinsame Datenbank umschließt. Das Asynchronous-Queuing-Muster kann so angewendet werden, dass eine Messaging-Warteschlange zwischen Komponente A und Komponente C platziert wird, um die Kommunikation in den Zeiten zu ermöglichen, in denen das Legacy-System nicht verfügbar ist oder von anderen Teilen des IT-Unternehmens stark genutzt wird. Das Service Fagade-Muster kann angewandt werden, so dass eine Fagade-Komponente zwischen Komponente A und Komponente D eingefügt wird, so dass jede Verhaltensänderung kompensiert werden kann; das Prinzip der Service-Autonomie kann weiter auf Service A angewandt werden, um Leistungseinbußen auszugleichen, die sich aus der Aufteilung der Komponente in einen separaten Wrapper-Utility-Service ergeben können. Das Legacy-Wrapper-Muster kann so angewendet werden, dass Komponente B in einen separaten Dienst aufgeteilt wird, der die gemeinsame Datenbank umschließt. Das Legacy-Wrapper-Muster kann erneut angewandt werden, so dass Komponente C in einen separaten Dienst aufgeteilt wird, der als Wrapper für die API des Legacy-Systems fungiert. Das Legacy-Wrapper-Muster kann erneut auf Komponente D angewendet werden, so dass diese in einen weiteren Dienst aufgeteilt wird, der einen standardisierten Zugriff auf den Dateiordner ermöglicht. Das Service Fagade-Muster kann so angewendet werden, dass drei Fagade-Komponenten hinzugefügt werden: eine zwischen Komponente A und jedem der neuen Wrapper-Dienstprogramme. Auf diese Weise können die Fagade-Komponenten jede Verhaltensänderung kompensieren, die sich aus der Trennung ergibt. Das Prinzip der Service Composability kann weiter auf Service A und die drei neuen Wrapper Utility Services angewendet werden, so dass alle vier Services für die Teilnahme an der neuen Service Composition optimiert sind. Dies wird dazu beitragen, etwaige Leistungsverluste auszugleichen, die sich aus der Aufteilung der drei Komponenten in separate Dienste ergeben könnten. Das Legacy-Wrapper-Muster kann so angewendet werden, dass Komponente B in einen separaten Dienst aufgeteilt wird, der die gemeinsame Datenbank umhüllt. Das Legacy-Wrapper-Muster kann wiederum so angewandt werden, dass Komponente C in einen separaten Dienst aufgeteilt wird, der als Wrapper für die API des Legacy-Systems fungiert. Komponente D kann ebenfalls in einen separaten Dienst aufgeteilt werden, und das Muster für ereignisgesteuerte Nachrichtenübermittlung kann angewendet werden, um eine Publisher-Subscriber-Beziehung zwischen diesem neuen Dienst und Komponente A herzustellen. Der Dienst A gibt dann eine abschließende Nachricht an den Dienstverbraucher A zurück. Das Prinzip der Dienstkomposition kann weiter auf den Dienst A und die drei neuen Wrapper-Utility-Dienste angewendet werden, so dass alle vier Dienste für die Teilnahme an der neuen Dienstkomposition optimiert sind. Dies wird dazu beitragen, Leistungsverluste auszugleichen, die durch die Aufteilung der drei Komponenten in separate Dienste entstehen könnten. Das Legacy-Wrapper-Muster kann so angewendet werden, dass Komponente B in einen separaten Wrapper-Dienst aufgeteilt wird, der die gemeinsame Datenbank umschließt. Die Muster "State Repository" und "State Messaging" können so angewendet werden, dass ein Messaging-Repository zwischen Komponente A und Komponente C positioniert wird, wodurch eine metadatengesteuerte Kommunikation in den Zeiten ermöglicht wird, in denen das Legacy-System nicht verfügbar ist oder von anderen Teilen des IT-Unternehmens stark genutzt wird. Das Service-Fagade-Muster kann so angewendet werden, dass eine Fagade-Komponente zwischen Komponente A und Komponente D eingefügt wird, so dass jede Änderung im Verhalten kompensiert werden kann. Das Prinzip der Zustandslosigkeit von Diensten kann auch auf Dienst A angewandt werden, um Leistungseinbußen auszugleichen, die durch die Aufteilung der Komponente in einen separaten Wrapper-Dienst entstehen können. FRAGE 18Der Dienst A ist ein Dienstprogramm, das eine generische Datenzugriffslogik für eine Datenbank bereitstellt, die Daten enthält, die periodisch von einer gemeinsam genutzten Datenbank repliziert werden (1). Da beim Entwurf von Dienst A das Prinzip des standardisierten Dienstvertrags angewandt wurde, ist sein Dienstvertrag vollständig standardisiert worden.Die Dienstarchitektur von Dienst A wird von drei Dienstkonsumenten aufgerufen. Dienstkonsument A greift auf eine Komponente zu, die Teil der Implementierung von Dienst A ist, indem er sie direkt aufruft (2). Dienstkonsument B ruft Dienst A auf, indem er auf dessen Dienstvertrag zugreift (3). Service-Consumer C greift direkt auf die replizierte Datenbank zu, die Teil der Service-A-Implementierung ist (4). Ihnen wurde gesagt, dass der Grund dafür, dass Service-Consumer A und C den veröffentlichten Servicevertrag von Service A umgehen, darin liegt, dass sie aus Sicherheitsgründen nicht auf eine Teilmenge der Fähigkeiten in der API zugreifen dürfen, die den Servicevertrag von Service A umfasst. Wie kann die Architektur von Dienst A geändert werden, um diese Sicherheitsbeschränkungen durchzusetzen und gleichzeitig negative Formen der Kopplung zu vermeiden? Das Muster der Vertragszentralisierung kann angewandt werden, um alle Dienstnutzer zu zwingen, über den veröffentlichten Dienstvertrag auf die Architektur von Dienst A zuzugreifen. Dadurch werden negative Formen der Kopplung vermieden, die zu Problemen führen könnten, wenn die Datenbank ersetzt wird. Das Prinzip der Serviceabstraktion kann dann angewandt werden, um die Details der zugrunde liegenden Servicearchitektur zu verbergen, so dass zukünftige Servicekonsumenten nicht auf einen Teil der zugrunde liegenden Serviceimplementierung zugreifen können. Das Muster der Vertragszentralisierung kann angewendet werden, um Dienstnutzer zu zwingen, nur über den veröffentlichten Dienstvertrag auf die Architektur von Dienst A zuzugreifen. Das Prinzip der losen Kopplung von Diensten kann dann angewandt werden, um sicherzustellen, dass der zentralisierte Dienstvertrag keinen Inhalt enthält, der von der zugrunde liegenden Dienstimplementierung abhängt oder davon abgeleitet ist. Das Vertragszentralisierungsmuster kann angewandt werden, um Dienstnutzer zu zwingen, nur über den veröffentlichten Dienstvertrag auf die Architektur von Dienst A zuzugreifen. Das Muster "Concurrent Contracts" kann auf Service A angewendet werden, um einen oder mehrere alternative Serviceverträge zu erstellen. Dies ermöglicht Service-Konsumenten mit unterschiedlichen Berechtigungsstufen den Zugriff auf verschiedene Arten von Servicelogik über die veröffentlichten Serviceverträge von Service A. Das Vertragszentralisierungsmuster kann angewandt werden, um Servicekonsumenten zu zwingen, nur über den veröffentlichten Servicevertrag auf die Architektur von Service A zuzugreifen. Das Idempotente Capability-Muster kann auf Service A angewendet werden, um alternative Sätze von Service-Capabilities für Service-Consumer mit unterschiedlichen Berechtigungsstufen zu etablieren. ErläuterungDas Muster Contract Centralization kann angewandt werden, um Servicekonsumenten zu zwingen, nur über den veröffentlichten Servicevertrag auf die Architektur von Service A zuzugreifen. Das Prinzip der losen Kopplung von Diensten kann dann angewandt werden, um sicherzustellen, dass der zentralisierte Dienstvertrag keine Inhalte enthält, die von der zugrundeliegenden Dienstimplementierung abhängen oder von ihr abgeleitet sind. Dadurch werden die Sicherheitsbeschränkungen durchgesetzt und gleichzeitig negative Formen der Kopplung vermieden. Wenn Service A eine Nachricht von Service Consumer A (1) erhält, wird die Nachricht von Komponente A verarbeitet. Diese Komponente ruft zunächst Komponente B (2) auf, die Werte aus der Nachricht verwendet, um Datenbank A abzufragen, um zusätzliche Daten zu erhalten. Komponente B gibt dann die zusätzlichen Daten an Komponente A zurück. Komponente A ruft dann Komponente C (3) auf, die mit der API eines Legacy-Systems interagiert, um einen neuen Datenwert abzurufen. Als nächstes sendet Komponente A einen Teil der gesammelten Daten an Komponente D (4), die die Daten in eine Textdatei schreibt, die in einem bestimmten Ordner abgelegt wird. Komponente D wartet dann, bis diese Datei über einen regelmäßig geplanten Batch-Import in ein anderes System importiert wird. Nach Abschluss des Imports gibt Komponente D einen Erfolgs- oder Misserfolgscode an Komponente A zurück. Komponente A sendet schließlich eine Antwort an Service Consumer A (5), die alle bisher gesammelten Daten enthält, und Service Consumer A schreibt alle Daten in Datenbank B (6).Die Komponenten A, B, C und D gehören zur Servicearchitektur von Service A. Datenbank A, das Legacy-System und die Dateiordner sind gemeinsam genutzte Ressourcen innerhalb des IT-Unternehmens.Service A ist ein Entity Service mit einer Servicearchitektur, die in den letzten Jahren gewachsen ist. Als Ergebnis eines Projekts zur Neugestaltung des gesamten Servicebestands werden Sie gebeten, die Servicearchitektur von Service A zu überarbeiten, um die von den Komponenten B, C und D bereitgestellte Logik in drei verschiedene Utility-Services aufzuteilen, ohne das Verhalten von Service A in Bezug auf Service-Consumer A zu unterbrechen.Welche Schritte können unternommen werden, um diese Anforderungen zu erfüllen? Das Legacy Wrapper-Muster kann angewendet werden, so dass Komponente B in einen separaten Wrapper-Dienst aufgeteilt wird, der die gemeinsame Datenbank umschließt. Das Asynchronous-Queuing-Muster kann so angewendet werden, dass eine Messaging-Warteschlange zwischen Komponente A und Komponente C platziert wird, um die Kommunikation in den Zeiten zu ermöglichen, in denen das Legacy-System nicht verfügbar ist oder von anderen Teilen des IT-Unternehmens stark genutzt wird. Das Service Fagade-Muster kann so angewendet werden, dass eine Fagade-Komponente zwischen Komponente A und Komponente D eingefügt wird, so dass jede Verhaltensänderung kompensiert werden kann. Das Prinzip der Service-Autonomie kann weiter auf Service A angewendet werden, um Leistungseinbußen auszugleichen, die sich aus der Aufteilung der Komponente in einen separaten Wrapper-Dienst ergeben könnten. Das Legacy-Wrapper-Muster kann so angewendet werden, dass Komponente B in einen separaten Dienst aufgeteilt wird, der die gemeinsame Datenbank umschließt. Das Legacy-Wrapper-Muster kann erneut angewandt werden, so dass Komponente C in einen separaten Dienst aufgeteilt wird, der als Wrapper für die API des Legacy-Systems fungiert. Das Legacy-Wrapper-Muster kann erneut auf Komponente D angewendet werden, so dass diese in einen weiteren Dienst aufgeteilt wird, der einen standardisierten Zugriff auf den Dateiordner ermöglicht. Das Service Fagade-Muster kann so angewendet werden, dass drei Fagade-Komponenten hinzugefügt werden: eine zwischen Komponente A und jedem der neuen Wrapper-Dienstprogramme. Auf diese Weise können die Fagade-Komponenten jede Verhaltensänderung kompensieren, die sich aus der Trennung ergibt. Das Prinzip der Service Composability kann weiter auf Service A und die drei neuen Wrapper Utility Services angewendet werden, so dass alle vier Services für die Teilnahme an der neuen Service Composition optimiert sind. Dies wird dazu beitragen, etwaige Leistungsverluste auszugleichen, die sich aus der Aufteilung der drei Komponenten in separate Dienste ergeben könnten. Das Legacy-Wrapper-Muster kann so angewendet werden, dass Komponente B in einen separaten Dienst aufgeteilt wird, der die gemeinsame Datenbank umhüllt. Das Legacy-Wrapper-Muster kann wiederum so angewandt werden, dass Komponente C in einen separaten Dienst aufgeteilt wird, der als Wrapper für die API des Legacy-Systems fungiert. Komponente D kann ebenfalls in einen separaten Dienst aufgeteilt werden, und das Muster für ereignisgesteuerte Nachrichtenübermittlung kann angewendet werden, um eine Publisher-Subscriber-Beziehung zwischen diesem neuen Dienst und Komponente A herzustellen. Der Dienst A gibt dann eine abschließende Nachricht an den Dienstverbraucher A zurück. Das Prinzip der Dienstkomposition kann weiter auf den Dienst A und die drei neuen Wrapper-Utility-Dienste angewendet werden, so dass alle vier Dienste für die Teilnahme an der neuen Dienstkomposition optimiert sind. Dies wird dazu beitragen, Leistungsverluste auszugleichen, die durch die Aufteilung der drei Komponenten in separate Dienste entstehen könnten. Das Legacy-Wrapper-Muster kann so angewendet werden, dass Komponente B in einen separaten Wrapper-Dienst aufgeteilt wird, der die gemeinsame Datenbank umschließt. Die Muster "State Repository" und "State Messaging" können so angewendet werden, dass ein Messaging-Repository zwischen Komponente A und Komponente C positioniert wird, wodurch eine metadatengesteuerte Kommunikation in den Zeiten ermöglicht wird, in denen das Legacy-System nicht verfügbar ist oder von anderen Teilen des IT-Unternehmens stark genutzt wird. Das Service-Fagade-Muster kann so angewendet werden, dass eine Fagade-Komponente zwischen Komponente A und Komponente D eingefügt wird, so dass jede Änderung im Verhalten kompensiert werden kann. Das Prinzip der Zustandslosigkeit von Diensten kann auch auf Dienst A angewendet werden, um Leistungseinbußen auszugleichen, die durch die Aufteilung der Komponente in einen separaten Wrapper-Dienst entstehen können. FRAGE 20Beziehen Sie sich auf Abbildung: Dienst A sendet eine Nachricht an Dienst B (1). Nachdem Dienst B den Inhalt der Nachricht in die Datenbank A (2) geschrieben hat, sendet er eine Antwortnachricht zurück an Dienst A (3). Dienst A sendet dann eine Nachricht an Dienst C (4). Nach Erhalt dieser Nachricht sendet Service C eine Nachricht an Service D (5), der den Inhalt der Nachricht in die Datenbank B (6) schreibt und eine Antwortnachricht an Service C (7) zurückschickt. Service A und Service D befinden sich im Service-Inventar A. Service B und Service C befinden sich im Service-Inventar B. Sie erfahren, dass in dieser Servicekompositionsarchitektur alle vier Services rechnungsbezogene Daten im XML-Format austauschen. Die Services im Service-Inventar A sind jedoch so standardisiert, dass sie ein anderes XML-Schema für Rechnungsdaten verwenden als die Services im Service-Inventar B. Außerdem kann die Datenbank A nur Daten im CSV-Format (Comma Separated Value) und daher keine XML-formatierten Daten akzeptieren. Datenbank B akzeptiert nur XML-formatierte Daten. Es handelt sich jedoch um eine Legacy-Datenbank, die ein proprietäres XML-Schema zur Darstellung von Rechnungsdaten verwendet, das sich von dem XML-Schema unterscheidet, das von den Diensten in Service-Inventar A oder Service-Inventar B verwendet wird. Das Datenmodell-Transformationsmuster kann angewendet werden, so dass die Datenmodell-Transformationslogik zwischen Service A und Service B, zwischen Service C und Service D sowie zwischen der Logik von Service D und Datenbank B positioniert wird. Das Datenformat-Transformationsmuster kann angewendet werden, so dass die Datenformat-Transformationslogik zwischen Service A und Service C sowie zwischen der Logik von Service B und Datenbank A positioniert wird. Das Muster für die Protokollüberbrückung kann so angewendet werden, dass die Logik für die Protokollkonvertierung zwischen der Logik von Dienst B und Datenbank A positioniert wird. Das Muster für die Datenformattransformation kann so angewendet werden, dass die Logik für die Datenformattransformation zwischen Dienst A und Dienst B, zwischen Dienst A und Dienst C, zwischen Dienst C und Dienst D und zwischen der Logik von Dienst D und Datenbank B positioniert wird. Das Datenmodelltransformationsmuster kann so angewendet werden, dass die Datenmodelltransformationslogik zwischen Dienst A und Dienst B, zwischen Dienst A und Dienst C, zwischen Dienst C und Dienst D und zwischen der Logik von Dienst D und Datenbank B positioniert wird. Das Datenformattransformationsmuster kann so angewendet werden, dass die Datenformattransformationslogik zwischen der Logik von Dienst B und Datenbank A positioniert wird. Das Protokollüberbrückungsmuster kann so angewendet werden, dass die Protokollkonvertierungslogik zwischen Dienst A und Dienst B, zwischen Dienst A und Dienst C und zwischen Dienst C und Dienst D positioniert wird. Durch die Anwendung des Musters für die Datenmodelltransformation kann eine Datenmodelltransformationslogik eingefügt werden, um die rechnungsbezogenen Daten zwischen den verschiedenen XML-Schemata abzubilden, die von den Diensten in Dienstinventar A und Dienstinventar B verwendet werden. Dies kann an den entsprechenden Stellen im Nachrichtenfluss geschehen: zwischen Service A und Service B, zwischen Service A und Service C, zwischen Service C und Service D und zwischen der Logik von Service D und Datenbank B. Durch Anwendung des Musters für die Datenformattransformation kann eine Datenformattransformationslogik eingefügt werden, um die von den Services verwendeten XML-formatierten Daten in das von Datenbank A benötigte CSV-Format zu konvertieren und um das von Datenbank B verwendete proprietäre XML-Schema in das von den Services verwendete XML-Schema zu konvertieren. Das Protocol Bridging Pattern ist in diesem Fall nicht notwendig, da alle Dienste bereits über dasselbe Protokoll kommunizieren (vermutlich HTTP oder ein ähnliches Protokoll). FRAGE 21Beziehen Sie sich auf die Abbildung: Die Dienste A, B und C sind nicht-agnostische Aufgabendienste. Eine Bewertung der drei Dienste zeigt, dass jeder von ihnen agnostische Logik enthält, die nicht zur Wiederverwendung zur Verfügung gestellt werden kann, da sie mit nicht-agnostischer Logik gebündelt ist. Die Bewertung stellt auch fest, dass die Remote-Kommunikation, die für Dienst A und Dienst B erforderlich ist, um mit der gemeinsamen Zustandsdatenbank zu interagieren, eine unangemessene Verringerung der Laufzeitleistung verursacht, da sich Dienst A, Dienst B und die gemeinsame Zustandsdatenbank jeweils in physisch getrennten Umgebungen befinden.Wie kann die Anwendung des Orchestrierungsmusters diese Architektur verbessern? Die Anwendung des Orchestrierungsmusters führt zu einer Umgebung, in der die Muster "Official Endpoint", "State Repository" und "Service Data Replication" automatisch angewandt werden, so dass die gemeinsame Zustandsdatenbank über offizielle Service-Endpunkte für die Dienste A und B repliziert werden kann, so dass jeder Aufgabendienst seine eigene dedizierte Zustandsdatenbank haben kann. Die Anwendung des Orchestrierungsmusters führt zu einer Umgebung, in der die nicht-agnostische Logik sauber von der agnostischen Logik getrennt werden kann, die in den Diensten A, B und C vorhanden ist, was dazu führt, dass neue agnostische Dienste entworfen werden müssen, deren Wiederverwendungspotenzial durch die Anwendung des Prinzips der Wiederverwendbarkeit von Diensten sichergestellt ist. Das State Repository Pattern, das von der Orchestrierungsumgebung unterstützt wird und lokal ist, bietet eine zentrale Zustandsdatenbank, die von den Diensten A und B gemeinsam genutzt werden kann. Die Anwendung des Orchestrierungsmusters führt zu einer Umgebung, in der die kompensierende Diensttransaktion automatisch angewandt wird, was die Möglichkeit bietet, eine ausgefeilte Ausnahmelogik zu erstellen, mit der die Leistungsprobleme kompensiert werden können, die dadurch entstehen, dass die Dienste A und B aus der Ferne auf die Zustandsdatenbank zugreifen müssen. Die Muster API-Gateway und Service-Broker werden ebenfalls automatisch angewandt und bieten gemeinsame Transformationsfunktionen in einer zentralisierten Verarbeitungsschicht, um etwaige Unterschiede in den Serviceverträgen, die für die neuen agnostischen Services erstellt werden müssen, zu überwinden. Das Orchestrierungsmuster ist auf diese Architektur nicht anwendbar, da es das Hosting des erforderlichen State Repository nicht unterstützt. Die Anwendung des Orchestrierungsmusters kann diese Architektur verbessern, indem die nicht-agnostische Logik sauber von der agnostischen Logik getrennt wird, was die Entwicklung neuer agnostischer Dienste mit Wiederverwendungspotenzial ermöglicht. Das State Repository-Pattern, das von der Orchestrierungsumgebung unterstützt wird und lokal ist, bietet eine zentrale Zustandsdatenbank, die von den Diensten A und B gemeinsam genutzt werden kann. Darüber hinaus bietet das Orchestrierungsmuster einen zentralen Controller, der die Interaktionen zwischen den Diensten A, B und C koordinieren kann, wodurch der Bedarf an Remote-Kommunikation zwischen den Diensten verringert und die Laufzeitleistung verbessert wird.FRAGE 22Die Dienste Client und Vendor sind agnostische Dienste, die beide derzeit Teil mehrerer Dienstkompositionen sind. Der Client-Dienst bietet in erster Linie Datenzugriffslogik für eine Kundendatenbank, koordiniert aber auch mit anderen Diensten, um die Kreditwürdigkeit eines Kunden zu bestimmen. Der Vendor-Dienst stellt einige Datenzugriffslogik bereit, kann aber auch verschiedene dynamische Berichte auf der Grundlage spezieller Geschäftsanforderungen erstellen. Dabei kommt es regelmäßig zu Zeitüberschreitungen, was wiederum die Aufrufrate erhöht, da die Servicekunden ihre Anfragen erneut stellen. Der Anbieterdienst hat gelegentlich Schwierigkeiten, seine Service-Level-Vereinbarung (SLA) einzuhalten, und wenn dies der Fall ist, werden Vertragsstrafen verhängt.Kürzlich wurde der Verwahrer des Client-Dienstes darüber informiert, dass der Client-Dienst neuen Service-Kunden außerhalb seines Dienstbestands zur Verfügung gestellt wird. Der Kundendienst wird jedem Kunden, der sich über das Internet mit dem Dienst verbindet, kostenlose Kreditwürdigkeitsprüfungen zur Verfügung stellen. Welche der folgenden Aussagen beschreibt eine Lösung, die diese Probleme und Anforderungen berücksichtigt? Das API-Gateway-Muster kann zusammen mit dem Inventar-Endpunkt-Muster auf das Dienstinventar angewandt werden, um einen Inventar-Endpunkt-Dienst und eine zwischengeschaltete Verarbeitungsschicht einzurichten, auf die externe Dienstnutzer zugreifen und die mit dem Client-Dienst interagiert, um Anfragen externer Dienstnutzer zu verarbeiten. Das Redundant Implementation Pattern kann sowohl auf den Client- als auch auf den Vendor-Service angewendet werden, um deren Verfügbarkeit und Skalierbarkeit zu erhöhen. Das Muster Offizieller Endpunkt kann auf den Client-Dienst angewendet werden, um einen verwalteten Endpunkt für die Nutzung durch Dienstnutzer außerhalb des Dienstinventars einzurichten. Das Concurrent Contracts-Muster kann auf den Vendor-Dienst angewendet werden, um eine Verbindung mit einer alternativen Client-Dienstimplementierung herzustellen, falls der erste Verbindungsversuch fehlschlägt. Das State Repository-Muster kann auf die Client- und Vendor-Dienste angewandt werden, um eine zentrale Datenbank für die Anweisungsverwaltung einzurichten, die zur Überwindung von Leistungsproblemen während der Laufzeit verwendet werden kann. Das Pattern Official Endpoint kann weiter angewendet werden, um die Verfügbarkeit und Skalierbarkeit des Client-Dienstes für Dienstnutzer außerhalb des Dienstinventars zu erhöhen. Das Microservice Deployment-Pattern wird auf den Client-Dienst angewandt, um seine Autonomie und Reaktionsfähigkeit gegenüber einer größeren Anzahl von Dienstnutzern zu verbessern. Das Containerization-Pattern wird auf den Vendor-Dienst angewandt, um eine verwaltete Umgebung mit einem hohen Grad an Isolation für seine berichtsbezogene Verarbeitung zu schaffen. Das Endpoint Redirection Pattern wird außerdem angewandt, um sicherzustellen, dass Anforderungsnachrichten von Dienstnutzern außerhalb des Dienstinventars vom Client-Dienst weggeleitet werden. ErläuterungDiese Lösung adressiert die spezifischen Anforderungen und Probleme, die im Szenario identifiziert wurden. Das Official Endpoint Pattern kann auf den Client-Dienst angewendet werden, um einen verwalteten Endpunkt für die Nutzung durch Service-Konsumenten außerhalb des Service-Inventars einzurichten, der einen kontrollierten und verwalteten Zugriff auf den Dienst ermöglicht. Das Concurrent Contracts-Pattern kann auf den Vendor-Service angewendet werden, um eine Verbindung mit einer alternativen Client-Service-Implementierung herzustellen, wenn der erste Verbindungsversuch fehlschlägt. Dadurch wird die Verfügbarkeit des Dienstes erhöht und die Möglichkeit von Vertragsstrafen aufgrund der Nichteinhaltung des SLAs verringert.FRAGE 23Die in der Abbildung dargestellte Architektur für den Dienst A zeigt, wie die Kernlogik des Dienstes A im Laufe der Zeit erweitert wurde, um eine Verbindung zu einer Datenbank und einem proprietären Legacy-System (1) herzustellen und zwei separate Dienstverträge (2) zu unterstützen, auf die von verschiedenen Dienstkonsumenten zugegriffen wird. Die Servicelogik ist daher mit den Serviceverträgen und den zugrundeliegenden Implementierungsressourcen (der Datenbank und dem Legacy-System) gekoppelt.Service A hat derzeit drei Service Consumer. Service-Consumer A und Service-Consumer B greifen auf die beiden Serviceverträge von Service A zu (3, 4). Service-Consumer C umgeht die Serviceverträge und greift direkt auf die Servicelogik zu (5).Sie erfahren, dass die Datenbank und das Altsystem, die derzeit von Service A verwendet werden, durch andere Produkte ersetzt werden. Die beiden Serviceverträge sind vollständig von der zentralen Servicelogik entkoppelt, aber es besteht die Sorge, dass sich die zentrale Servicelogik durch die Einführung der neuen Produkte anders verhält als bisher.Welche Schritte können unternommen werden, um die Architektur von Service A in Vorbereitung auf die Einführung der neuen Produkte so zu ändern, dass die Auswirkungen auf die Servicekonsumenten A und B möglichst gering sind? Welcher weitere Schritt kann unternommen werden, um die Kopplung zwischen Verbraucher und Implementierung mit dem Dienst Verbraucher C zu vermeiden? Das Service-Fagade-Muster kann angewandt werden, um Fagade-Komponenten zwischen der Kern-Service-Logik und den Service-Konsumenten A und B zu platzieren. Diese Fagade-Komponenten sollen das Verhalten von Service A regeln. Das Service-Abstraktionsprinzi