HBRS: SOA
Service Oriented Architectures
Service Oriented Architectures
-
- 1 / 33
-
Lernkarten
Was ist eine Software-Architektur?
Beschreibt Dekomposition einer Software die einem Architekturstil entspricht. Beschrieben wird unter anderem:
-
die grundlegenden Architektur-Elemente und Schnittstellen (Klassen und Subsysteme)
-
die Interaktionsbeziehung zwischen den Architektur-Elementen (z.b. Proxies/Mittler)
-
die Architektur-Direktive (z.B. Qualitätsanforderungen, Entwurfsentscheidungen, nicht funktionale anforderungen)
- charakterisierende Kennzahlen ( SLA’s / KPI’s)
Was ist eine Service-Orientierte Architektur?
SOA ist ein Architekturstil der den Aufbau einer Anwendungslandschaft aus einzelnen fachlichen Komponenten beschreibt. Diese sind lose gekoppelt, indem sie einander Funktionalität in Form von fachlichen Services anbieten (nach Hess)
Was ist der Unterschied zwischen einem Geschäftsprozess und einem Workflow?
Ein Workflow ist ist ein IT-gestützter (Sub-Prozess) eines Geschäftsprozesses.
Geschäftsprozess: Menge logisch verknüpfter Einzeltätigkeiten, um ein betriebliches Ziel zu erreichen.
Was ist eine fachliche Komponente?
Was ein fachlicher Service?
Service wird von Komponente angeboten.
fachlicher Service: lose Kopplung, (geringe) Abhänigkeiten.
fachliche Komponente: direkte Abhängigkeiten
Diskutieren sie die Referenzarchitektur!
Was sind Vorteile, Herausforderungen?
Wo und wann finden Ausnahmebehandlungen statt?
Elemente:
- Interaktionskomponenten
- Prozesskomponenten
- Funktionskomponenten
- Bestandskomponenten
Vorteile:
- Sinnvolle Strukturierung
- Fördert wiederverwendbarkeit
- Fördert lose Kopplung
- Fördert einheitlichkeit der Schnittstellen (funktionale Services nur funktionale Operationen)
Herausforderungen:
- Schwierig Services in bestimmten Layer einzuordnen
Ausnahmebehandlung:
- Direkter Zugriff der Interaktionskomponente auf Anzeigedaten der Bestandskomponenten
Kann es in einem Workflow auch Benutzerinteraktionen geben?
Wie kann man einen Workflow implementieren?
- Direkte Programmierung des Prozesses in einer Programmiersprache (z.B. in Java, AXIS/JAX-WS)
- Implementierung als Service mithilfe einer Modelierungssprache (z.B. BPEL/BPMN)
Wie ist ein BPEL-Workflow aufgebaut?
Tags
- import: als Verweis auf Web-Services (WSDL)
- parnerLinks: Referenz auf PortType der Web Services
- variables: Verwaltung eines internen Zustands
- sequence: (strukturierte) Aktivitäten
- invoke, recieve, reply
- flow (parallel), if, while, scope, compensate
Wie kann man einen BPEL-Workflow aufrufen?
- Der BPEL-Workflow wird in einer speziellen Laufzeitumgebung deployed.
- Der Anstoß des Workflows wird über eine Nachricht durchgeführt.
- Jeder BPEL-Workflow beginnt mit einem Receive, er wartet also auf eine erste eintreffende Nachricht um zu starten.
Wie ist ein BPMN-Workflow aufgebaut?
Unterschiede zu BPEL?
Was versteht man unter der (Ausführungs-)Semantik?
BPMN-Workflow Aufbau:
- Aktivitäten
- Unterprozesse
- Tasks
- Ereignisse (keine Bearbeitungszeit in Anspruch, nur Zeitpunkte definieren)
Unterschiede BPEL:
- BPMN hat graphische Modellierungsnotation
- BPEL hat nur Workflows
- BPEL hat keine manuellen Tasks
Ausführungssementik für BPMN:
- eine Abbildung auf BPEL
- explizite Ausführungssemantik von BPMN 2.0
- proprietäre Semantiken - versuchen sich an Standard zu halten
Wie werden in BPEL Transaktionen behandelt?
- mit Compensation Handlern - Transaktionsstrategie: Kompensation
- Kompensation des gesamten Scopes über das <compensation> Tag
- die Kompensation wird von extern angestoßen ("sich selber kompensieren geht nicht")
Wie entwickeln sie eine SOA? Bottom-Up vs. Top-Down erläutern!
Bottom-Up: Komposition - Zusammenfassung von bestehenden Schnittstellen zu Services (bestehende IST Situation)
Top-Down: Zerlegen von Prozessen in fachliche Services
Meet in The Middle:
-
Ableiten von Use-Cases
-
Services identifizieren/modellieren (Welche bestehenden Systeme unterstützen diese?)
- Architektur-Entwicklung (4 Sichten + Umsetzung)
Was ist ein Web Service?
Technologie-Framework für die Entwicklung und Integration von verteilten Systemen basierend auf der Meta-Sprache XML
besitzt
- URI
- Schnittstellenbeschreibung als XML-Artefakt
Wie wird ein Web Service umgesetzt? Contract-First vs....
Contract-First: Zunächst Definition der Schnittstelle und anschließend ableiten von Client-Stubs und Service-Skeleton
Code-First: Entwickeln des Service als erstes und anschließend Generierung von WSDL und Client-Stubs.
- Was ist WSDL?
- Wozu braucht man eine Schnittstellensprache?
- Web Service Description Language ist eine Schnittstellensprache: ein XML-Format zur Schnittstellenbeschreibung
- Eine abstrakte Schnittstellenbeschreibung wird benötigt, um die lose Kopplung unter den Services zu gewährleisten.
- Korrektheit durch eindeutige Beschreibung
- automatisches Testen
- automatisches aufrufen der Schnittstelle
Was versteht man unter einer losen Kopplung innerhalb einer Architektur?
- Keine Abhänigkeiten
- Einfache gemeinsame Datenmodelle
- Schwache Platformspezifika
- Der Grad der Kopplung kann z.B. als fachliche Entfernung angeben werden (Wieviele Domänen liegen zwischen den Services).
- geringes Vertrauen / wenig Wissen
Was ist ein Enterprise Service Bus?
Welche Aufgaben hat er?
Der ESB ist eine Mittlerkomponente zwischen Service-Consumern und Providern.
Übernimmt verschiedenste Aufgaben wie z.B.:
-
Datentransformation (Mediation)
-
Service Registry
-
Enthält Adapter zur überbrückung technischer Unterschiede
- Enthält Integrationsdienste (Routing, SSO, BAM…)
Wie modelliert man eine service-orientierte Architektur?
- 4-Sichten Modell von Starke
- Kontextsichten
- Laufzeitsichten
- Bausteinsichten
- Verteilungssichten
- SoaML
Modell nach Libhart???
-
Requirement-Analayse => Use-Cases
-
Komponenten aus Use-Cases identifizieren
-
Services und Service-Operationen von Komponenten ableiten
-
Analyse von Bestandsystemen (Kann etwas wiederverwendet werden?)
-
Interaktionskomponenten aus Use-Cases identifizieren
- Zuordnen der Komponenten zu spez. Domänen.
Was versteht man unter dem Service-Schnitt? (6 Eigenschaften...)
Nach Humm&Hess (Komponentenschnitt)
- R1: Komponenten sollen nach fachlichen Kriterien gebildet werden
- R2: Alle Operation (der Komponente) sollen von genau einer Kategorie sein (Bestand, Funktion, Prozess, Interaktion)
- R3: Komponenten unterschiedlicher Service-Kategorien sollen ausschließlich Abhängigkeiten laut der Referenzarchitektur haben
- R4: Keine Zyklischen Abhängigkeiten
- R5: intern engen Zusammenhalt --- untereinander gering gekoppelt
- R6: Bestandskomponenten haben Datenhoheit
Wie kann man eine SOA anpassbar entwickeln?
- Durch hohen Einsatz von Loser Kopplung
- Entwurf nach Humm und Hess
Was sind die wirtschaftlichen Vorteile bei der Einsetzung einer SOA?
- Neuen Geschäftsprozesse sehr schnell und kostensparend durch
- Wiedervewendung von Services
- Neu-Orchestrierung
- Cooperate Design --> geringe Schulungskosten
- Geringere Fehlerquoten (z.B. durch erhöhte Automatisierung)
Wie kann man eine Software-Architektur skalierbar machen?
Diskutieren sie den Begriff Skalierbarkeit: wie kann man eine Architektur skalierbar entwickeln?
- Skalierbarkeit ist die Fähgikeit einer Software-Architektur flexibel an Nutzungsraten angepasst zu werden. Etwas skaliert gut, wenn höhere Nutzungsraten durch einen steigenden Ressourcenbedarf bedient werden können.
- Horizontale vs. Vertikale Skallierung
- Skallierbarkeit kann durch verschiedene Dinge erreicht werden z.B.:
- Klonen von Services (Loadbalancing)
- Fachliche Teilung eines Services
- Aufrufer in Kategorieren aufteilen
- Statless Service (oder States auslagern)
- Lokalisierung und Caching
- (Skallierbarkeit steht auch in verbindung mit Loser Kopplung)
Wem gehört eine SOA?
Niemand! Einzelne Services/Komponenten können unterschiedlichen Personen gehören.
Stichwort: legacy system/ALT-System
Ist SOA ein Allheilmittel für die Entwicklung von Software-Architekturen?
Nein. Einführung kann sehr Aufwendig sein, politisch schwierig und auch nicht immer sinnvoll (Evtl. z.B. wenn niedrige Latenz wichtig ist).
Wann rentiert sich der Einsatz einer SOA?
Der Einsatz einer SOA rentiert sich, wenn es wirtschaftlich ist, also der Nutzen (die Einsparung, der Gewinn) höher ist als die entstehenden Kosten.
Meist bei großen. heterogenen Systemen um große Anwendungslandschaft zu vereinheitlichen.
Was für eine Aufgabe und Relevanz hat eine Business Rule Engine?
Die BRE ermöglicht die zentrale Definition von flexiblen fachlichen Regeln (Business Rules). Die BRE ist sehr wichtig, da sich Geschäftsprozesse häufer und schneller Ändern können als die Entwicklung der Software (unterschiedliche Zyklen). Die BRE ermöglicht eine Anpassung auch zwischen verschiedenen SW-Realses.
Sichtwort: Flexibilität
Was für eine Aufgabe und Relevanz hat eine BAM-Komponente?
Durch eine Business Activity Monitoring Komponente können Daten über das Laufzeitsystem und fachlichen Prozesse (zB. KPIs) gesammelt werden und Minutenaktuell überwacht werden.
ODER
Die Aufgabe ist die Überwachung von Geschäftsprozessen oder unternehmenskritischer Ressourcen. Eine BAM ermöglicht die Überwachung von KPI’s und kann Probleme im Betrieb der SOA aufdecken (z.B. überlaufene oder kaum genutzte Services).
Wozu dient die WS-Erweiterung WS-Addressing?
WS-Addressing ermöglicht eine Detailiertere Addressierung von SOAP Nachrichten.
Metainformationen über die Nachrichten: Bezug zu früheren Nachrichten