Entwurf und Implementierung einer Architektur zur ...

Post on 15-Feb-2022

2 views 0 download

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