Zu Hauptinhalt springen Zu ergänzendem Inhalt springen

Architekturstile und Design Patterns

Was ist ein Architekturstil?

Ein Architekturstil ist ein grobkörniges Muster, das ein abstraktes Rahmenwerk für eine Systemfamilie bildet.

Im Bereich der Datenverarbeitung unterscheidet man zwischen vier grundlegenden Architekturstilen: Batch, Echtzeit, Ereignisgesteuert und Streaming.

Batch

Bei der Batch-Verarbeitung handelt es sich um eine Methode der Ausführung umfangreicher, repetitiver Datenjobs innerhalb eines vorgegebenen Zeitfensters. Die Tools in der Datenverarbeitung, die über die Kapazität zur Durchführung dieser Art von Verarbeitung verfügen, werden allgemein als Datenintegrations-Tools, ETL-Tools (Extrahieren, Transformieren, Laden) oder ELT-Tools (Extrahieren, Laden, Transformieren oder SQL-„Pushdown“) bezeichnet. Moderne Tools, wie beispielsweise Talend Data Fabric, gehen jedoch weit über diese Basisfunktionalität hinaus und bieten zusätzlich Data Governance-Funktionen sowie die Möglichkeit zur Implementierung sämtlicher Architekturstile, nicht nur Batch.

Die Batch-Verarbeitung unter Verwendung derartiger Tools zeichnet sich durch folgende Eigenschaften aus:
  • Latenztoleranz
  • Komplexe Transformationen
  • Umfangreiche Volumen
  • Spezifikationen ohne Code
  • Wiederverwendung der Metadaten

Zu den klassischen Design Patterns (Entwurfsmuster), die im Allgemeinen mithilfe der Batch-Datenintegration implementiert werden, gehört ein Data Warehouse zur Geschäftsanalyse und Berichterstellung:

Diagramm zu Data Warehouse.

Echtzeit

Wikipedia definiert die Echtzeit-Datenverarbeitung wie folgt:

Als Echtzeitverarbeitung (RTC: Real-Time Computing) oder reaktive Datenverarbeitung werden im Bereich der Computer Science Hardware- und Softwaresysteme bezeichnet, die einer zeitlichen Beschränkung unterliegen, z. B. zwischen einem Ereignis und der entsprechenden Systemantwort. Echtzeitprogramme müssen innerhalb eines genau begrenzten Zeitrahmens eine Antwort liefern. Diese zeitliche Beschränkung wird häufig auch als „Deadline“ (Frist) bezeichnet.

Bei der Echtzeitverarbeitung handelt es sich um eine nahezu verzögerungsfreie Reaktion, eine unmittelbare Antwort auf eine Aktion oder ein Ereignis. Die meisten missionskritischen Anwendungen sind echtzeitbasiert.

In der Datenverarbeitung verweist „Echtzeit“ in der Regel auf die Implementierung von REST- oder SOAP-Webservices mithilfe von Integrationstools. Diese Dienste sind folglich datenorientiert. Talend Cloud Data Fabric stellt umfangreiche Funktionen für die Implementierung von Architekturen zur Echtzeitdatenverarbeitung bereit. Dazu gehören:
  • API Services
  • Erstellung von Datendiensten - In Studio Talend implementierte SOAP- oder REST-Dienste, die auf dieselbe Palette an Komponenten zurückgreifen, die auch zur Erstellung von Batch-Jobs verwendet werden.
  • Routen - Grafisch gestaltete Camel-Routen in Studio Talend für die Implementierung von SOAP-oder REST-Diensten
  • Implementierung in Talend Runtime als Microservice oder als Microservice innerhalb eines Containers
  • Logging und Überwachung
  • CI/CD (Continuous Integration \ Deployment)

Streaming

Wikipedia definiert Streaming wie folgt:

Beim Streaming von Daten („Stream Processing“) werden kontinuierlich Daten aus unterschiedlichen Quellen generiert. Diese Daten müssen inkrementell unter Rückgriff auf Stream-Verarbeitungstechniken verarbeitet werden, wobei nicht auf jeweils alle Daten zugegriffen werden kann. Darüber hinaus ist zu beachten, dass in Bezug auf die Daten „Concept Drifts“ auftreten können, d. h. dass sich die Eigenschaften des Datenflusses im Verlauf der Zeit ändern. Das Datenstreaming kommt in der Regel im Kontext von Big Data zum Einsatz, wobei ein Datenfluss aus zahlreichen verschiedenen Quellen in Hochgeschwindigkeit erzeugt wird.

Weitere Informationen zum Streaming sowie entsprechende Anwendungsfälle finden Sie unter Was ist Datenstreaming?.

Streaming zeichnet sich durch folgende Eigenschaften aus:
  • Niedrige Latenz​
  • Einfache Transformationen​ und Aggregationen
  • Kleine Batches​ (Datenblöcke), häufig als „Micro-Batch-Verarbeitung“ („Micro-Batching“) bezeichnet
  • Fehlertoleranz​
  • Minimales Risiko von Datenverlust​
  • Sliding-Window-Fähigkeit

    Das nachstehende Diagramm illustriert die Verarbeitung von Datenflüssen durch eine Spark Engine in Form von Micro-Batches.

    Das Diagramm zeigt, wie Datenflüsse von einer Spark Engine verarbeitet werden.

Ereignisgesteuert

Wikipedia definiert eine ereignisgesteuerte Architektur wie folgt:

Bei einer ereignisgesteuerten Architektur (EDA: Event-Driven Architecture) handelt es sich um das Paradigma einer Softwarearchitektur, in der Ereignisse erzeugt, erkannt und verarbeitet und entsprechende Reaktionen ausgelöst werden.

Ein Ereignis kann als „signifikante Zustands-/Statusänderung“ definiert werden. Ein Beispiel: Ein Verbraucher kauft ein Auto. Dadurch ändert sich der Status des Autos von „Zu verkaufen“ zu „Verkauft“. In der Systemarchitektur des Autohändlers kann diese Statusänderung als Ereignis gehandhabt werden, von dessen Auftreten andere Anwendungen in der Architektur in Kenntnis gesetzt werden. Aus einer formalen Perspektive ist das, was produziert, veröffentlicht, propagiert, erkannt oder verarbeitet wird eine (typischerweise asynchrone) Nachricht, eine so genannte Ereignisbenachrichtigung, und nicht das Ereignis selbst, bei dem es sich um die Zustands- bzw. Statusänderung handelt, die die Ausgabe der Nachricht ausgelöst hat. Ereignisse werden nicht weitergeleitet, sie treten lediglich auf. Allerdings wird der Begriff „Ereignis“ häufig stellvertretend für die Benachrichtigung selbst verwendet, was zu einiger Verwirrung führen kann. Das ist darauf zurückzuführen, dass ereignisgesteuerte Architekturen oft aufbauend auf nachrichtengesteuerten Architekturen eingesetzt werden, in denen für ein derartiges Kommunikationsmuster eine der Eingaben, d. h. die Nachricht, aus reinem Text bestehen muss, damit bestimmt werden kann, wie jede Kommunikation zu handhaben ist.

Wie oben erwähnt kommt dieser Stil (insbesondere im Bereich der Datenverarbeitung) in den meisten Fällen in Verbindung mit nachrichtengesteuerten Architekturen zum Einsatz. Es gibt jedoch noch andere Beispiele für eine mögliche Implementierung mit Talend, z. B. das Routen-Polling für Dateien auf einem FTP-Server, die Verarbeitung dieser Dateien nach dem Upload auf den FTP-Server und den Rückgriff auf einen Webservice zur Instanziierung eines asynchronen Prozesses. Das heißt, der Webservice wartet nicht auf den vollständigen Abschluss des Prozesses, sondern antwortet dem Client bereits vorher.

Eine ereignisgesteuerte Architektur zeichnet sich durch folgende typische Eigenschaften aus:
  • Nachrichtenbasiert​
  • Garantierte Zustellung​
  • Neustart/Wiederherstellung​
  • Transaktionsorientiert

    Das nachstehende Diagramm zeigt einen Unternehmensbus, über den Nachrichten in Themenbereichen veröffentlicht und von den Abonnenten gelesen werden.

    Das Diagramm zeigt, wie Nachrichten in Themen veröffentlicht und dann gelesen werden.

Was ist ein Design Pattern?

Ein Design Pattern oder Entwurfsmuster ist eine allgemeine wiederverwendbare Lösung für ein häufig auftretendes Problem in einem bestimmten Kontext.

Eigenschaften:​
  • Bereitstellung einer praxiserprobten Lösung für geläufige Gestaltungsprobleme​
  • Kann von den meisten, am Entwurfsprozess beteiligten IT-Experten reproduziert werden​
  • Kann zur Gewährleistung einer konsistenten Gestaltung und Einrichtung von Systemen eingesetzt werden​
  • Kann als Ausgangsbasis für Entwicklungsstandards für Job-Designs, Routen usw. genutzt werden
Allgemeine Design Patterns in Architekturstilen
Architekturstil Design Pattern Beispiele
Batch
  • ETL Laden
  • ELT Laden
  • CDC - (Change Data Capture)
  • Dateiübertragung
Laden eines Data Warehouse mit einer vorgegebenen Frequenz, tägliches inkrementelles Laden von Daten, FTP-Übertragungen, Datenreplikation usw.
Echtzeit
  • Webservices
  • Muster für den Nachrichtenaustausch
  • Microservices
Salesforce-Aktualisierungen, Lesen von Queues, Lesen von Nachrichten auf dem Enterprise Service Bus, API-Integrationsdienste
Streaming
  • Top N (Trending)
  • Stream Joins
  • Externe Lookups
  • Sliding/Rolling Windows
  • Reaktionsfähiges Shuffling
  • Nicht sequenzkonforme Effekte
Leaderboards, Tweeter-Streams, Live-Streams
Ereignisgesteuert
  • Veröffentlichen/Abonnieren
  • Asynchrones Pushing
  • Steuerung des Empfängerflusses
Sensordaten bei Auftreten von Ereignissen, Workflow-Ereignisse, Datei-Trigger

Hat diese Seite Ihnen geholfen?

Wenn Sie Probleme mit dieser Seite oder ihren Inhalten feststellen – einen Tippfehler, einen fehlenden Schritt oder einen technischen Fehler –, teilen Sie uns bitte mit, wie wir uns verbessern können!