Entwurf und Implementierung einer Architektur zur ...
Transcript of Entwurf und Implementierung einer Architektur zur ...
Konstantin BorkFachbereich Mathematik und Informatik
Entwurf und Implementierung einer Architektur zur asynchronen Verarbeitung von Batch-Jobs in einem Unternehmen
2
Konstantin BorkFachbereich Mathematik und Informatik
Agenda• Problembeschreibung
• Anforderungen
• Anforderungsanalyse
- Theorie
- Architekturentwurf
• Evaluation
• Implementierung
• Fazit & Ausblick
4. Februar 2016
3
Konstantin BorkFachbereich Mathematik und Informatik
Problembeschreibung• Geringe Produktivität des selbstentwickelten CMS
- Lange Verarbeitung hochgeladener Dateien
- Datenexporte benötigen viel Zeit
- Timeouts
• Benutzer erhalten keine Rückmeldung vom System
4. Februar 2016
4
Konstantin BorkFachbereich Mathematik und Informatik
Agenda• Problembeschreibung
• Anforderungen• Anforderungsanalyse
- Theorie
- Architekturentwurf
• Evaluation
• Implementierung
• Fazit & Ausblick
4. Februar 2016
5
Konstantin BorkFachbereich Mathematik und Informatik
Anforderungen• Asynchrone Verarbeitung
• Priorisierung von Aufträgen
• Verteiltes System offen halten
• Nichtfunktional:
- Modularer Aufbau
- Wartungsfreundlich
- Gut dokumentiert
- Fängt Fehler ab
4. Februar 2016
6
Konstantin BorkFachbereich Mathematik und Informatik
Agenda• Problembeschreibung
• Anforderungen
• Anforderungsanalyse
-Theorie- Architekturentwurf
• Evaluation
• Implementierung
• Fazit & Ausblick
4. Februar 2016
7
Konstantin BorkFachbereich Mathematik und Informatik
Theorie: Messaging• Schnelle asynchrone Kommunikation mit verlässlicher Zustellung
• Vorteile:
- Verbindung separater Programme
- Verlässliche Kommunikation
- Nachrichten sind atomare Einheiten
4. Februar 2016
8
Konstantin BorkFachbereich Mathematik und Informatik
Theorie: Middleware• Zusätzliche Schicht in Softwareumgebungen
• Ziel: einfache Zugriffe auf untere Schichten, höhere Produktivität
• Zwei Formen: Kommunikationsorientiert & Anwendungsorientiert
4. Februar 2016
9
Konstantin BorkFachbereich Mathematik und Informatik
Theorie: Batch-Processing• Jobs werden als Ganzes abgearbeitet
• Eigenschaften:
- Große Mengen an Eingabedaten
- Abarbeitung in Batch Window
- Abarbeitung mehrerer Hundert bis Tausend Jobs
• Beispiel: Abbuchungen von Bankkonten
4. Februar 2016
10
Konstantin BorkFachbereich Mathematik und Informatik
Theorie: Architekturmuster
• Master-Worker
4. Februar 2016
11
Konstantin BorkFachbereich Mathematik und Informatik
Theorie: Architekturmuster
• Producer-Consumer
4. Februar 2016
12
Konstantin BorkFachbereich Mathematik und Informatik
Agenda• Problembeschreibung
• Anforderungen
• Anforderungsanalyse
- Theorie
-Architekturentwurf• Evaluation
• Implementierung
• Fazit & Ausblick
4. Februar 2016
13
Konstantin BorkFachbereich Mathematik und Informatik
Architektur: Erster Entwurf
4. Februar 2016
14
Konstantin BorkFachbereich Mathematik und Informatik
Architektur: Überarbeitung
4. Februar 2016
15
Konstantin BorkFachbereich Mathematik und Informatik
Agenda• Problembeschreibung
• Anforderungen
• Anforderungsanalyse
- Theorie
- Architekturentwurf
• Evaluation• Implementierung
• Fazit & Ausblick
4. Februar 2016
16
Konstantin BorkFachbereich Mathematik und Informatik
Evaluation: Messaging-Systeme
4. Februar 2016
Name ApacheActiveMQ
HornetQ ApacheKafka
Apache Qpid RabbitMQ SpreadToolkit
Entwickler Apache Software Foundation
JBoss Apache Software Foundation
Apache Software Foundation
PivotalSoftware
Spread Concepts LLC
Lizenz Apache 2.0 Apache 2.0 Apache 2.0 Apache 2.0 Mozilla PublicLicense 1.0
Spread Open-Source License 1.0
Sprache Java Java Scala Java Erlang CUnterstützteSprachen
Java, C, C++,...
Java Java Java, C, C++,Python
Java, Scala,Groovy, Erlang,...
C, C++, Java,Python
Priorisierung ja ja nein ja nein neinGrails-Unterstützung
ja ja ja ja ja nein
Persistent ja ja ja ja ja jaQueue-Modus ja ja nein ja ja neinDead-Letter-Queue
ja ja ? ja ja nein
Logs ja ja ja ja ja nein
Name ApacheActiveMQ
HornetQ ApacheKafka
Apache Qpid RabbitMQ SpreadToolkit
Entwickler Apache Software Foundation
JBoss Apache Software Foundation
Apache Software Foundation
PivotalSoftware
Spread Concepts LLC
Lizenz Apache 2.0 Apache 2.0 Apache 2.0 Apache 2.0 Mozilla PublicLicense 1.0
Spread Open-Source License 1.0
Sprache Java Java Scala Java Erlang CUnterstützteSprachen
Java, C, C++,...
Java Java Java, C, C++,Python
Java, Scala,Groovy, Erlang,...
C, C++, Java,Python
Priorisierung ja ja nein ja nein neinGrails-Unterstützung
ja ja ja ja ja nein
Persistent ja ja ja ja ja jaQueue-Modus ja ja nein ja ja neinDead-Letter-Queue
ja ja ? ja ja nein
Logs ja ja ja ja ja nein
Name ApacheActiveMQ
HornetQ ApacheKafka
Apache Qpid RabbitMQ SpreadToolkit
Entwickler Apache Software Foundation
JBoss Apache Software Foundation
Apache Software Foundation
PivotalSoftware
Spread Concepts LLC
Lizenz Apache 2.0 Apache 2.0 Apache 2.0 Apache 2.0 Mozilla PublicLicense 1.0
Spread Open-Source License 1.0
Sprache Java Java Scala Java Erlang CUnterstützteSprachen
Java, C, C++,...
Java Java Java, C, C++,Python
Java, Scala,Groovy, Erlang,...
C, C++, Java,Python
Priorisierung ja ja nein ja nein neinGrails-Unterstützung
ja ja ja ja ja nein
Persistent ja ja ja ja ja jaQueue-Modus ja ja nein ja ja neinDead-Letter-Queue
ja ja ? ja ja nein
Logs ja ja ja ja ja nein
17
Konstantin BorkFachbereich Mathematik und Informatik
Evaluation: Messaging-Systeme• Beide Lösungen sind geeignet
• Allerdings bietet ActiveMQ mehr Vorteile
- Speicherung von Nachrichten innerhalb des Programmspeichers
- Mehr Möglichkeiten zur Erweiterung des Systems
- Kein zusätzlicher Server notwendig
• Schlechte Erfahrungen mit ActiveMQ im Unternehmen
4. Februar 2016
18
Konstantin BorkFachbereich Mathematik und Informatik
Evaluation: Enterprise-Integration-Frameworks• Vergleich zwischen Apache Camel & Spring Integration
• Trotz schwierigeren Umgangs wird Spring Integration verwendet
- Beide Lösungen bieten ähnlichen Funktionsumfang
- Große Erfahrung mit Spring im Unternehmen
4. Februar 2016
19
Konstantin BorkFachbereich Mathematik und Informatik
Evaluation: Batch-Processing
• Schnelle Entscheidung für Spring Batch
4. Februar 2016
20
Konstantin BorkFachbereich Mathematik und Informatik
Agenda• Problembeschreibung
• Anforderungen
• Anforderungsanalyse
- Theorie
- Architekturentwurf
• Evaluation
• Implementierung• Fazit & Ausblick
4. Februar 2016
21
Konstantin BorkFachbereich Mathematik und Informatik
Implementierung: Architektur
4. Februar 2016
22
Konstantin BorkFachbereich Mathematik und Informatik
Agenda• Problembeschreibung
• Anforderungen
• Anforderungsanalyse
- Theorie
- Architekturentwurf
• Evaluation
• Implementierung
• Fazit & Ausblick
4. Februar 2016
23
Konstantin BorkFachbereich Mathematik und Informatik
Fazit & Ausblick• Anforderungen wurden erfüllt
- Implementierung eines agentenbasierten Systems
- Generisch für verschiedene Daten
- Schnittstelle zur Steuerung der Auftragsverarbeitung
- Spätere Verwendung eines Messaging-Systems möglich
• Weitere Optimierungen erforderlich
• Einbau in bestehende Systeme ist geplant
• Open Source Veröffentlichung ist geplant
4. Februar 2016
24
Konstantin BorkFachbereich Mathematik und Informatik
Theorie: Architekturmuster
• Model-View-Controller
4. Februar 2016
25
Konstantin BorkFachbereich Mathematik und Informatik
Implementierung: Vorgehen• Auswahl der verwendeten Technologie
• Verwendung von Git
• Entwicklung wird in Teilprobleme zerlegt
• Unit- und Integration-Tests
• Test der Funktionsfähigkeiten in einem Beispielprojekt
4. Februar 2016