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.
- 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:
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.
- API Services
- Erstellung von Datendiensten - In Talend Studio 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 Talend Studio 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?.
- 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.
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.
- 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.
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.
- 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
Architekturstil | Design Pattern | Beispiele |
---|---|---|
Batch |
|
Laden eines Data Warehouse mit einer vorgegebenen Frequenz, tägliches inkrementelles Laden von Daten, FTP-Übertragungen, Datenreplikation usw. |
Echtzeit |
|
Salesforce-Aktualisierungen, Lesen von Queues, Lesen von Nachrichten auf dem Enterprise Service Bus, API-Integrationsdienste |
Streaming |
|
Leaderboards, Tweeter-Streams, Live-Streams |
Ereignisgesteuert |
|
Sensordaten bei Auftreten von Ereignissen, Workflow-Ereignisse, Datei-Trigger |