First Version of the network Documentation

This commit is contained in:
Tim
2024-01-03 10:54:21 +01:00
parent 7cc0c1455a
commit 3151b5265b
11 changed files with 963 additions and 0 deletions

View File

@ -0,0 +1,100 @@
# Recherche zu benötigten Techniken (Tim Ronneburg)
In diesem Kapitel werden die Prämissen behandelt welche zu Beginn des Projektes festgelegt und anhand deren eine Auswahl an benötigten Techniken getroffen wurde. Auf die hier genannten Werkzeuge und Technologien wird im späteren Verlauf an den jeweiligen Stellen spezifischer eingegangen.
Bei der Auswahl der Technologien für das Projekt wurden verschiedene Gesichtspunkte berücksichtigt. Insbesondere wurden folgende Fragen im Fokus betrachtet:
- Welches Tool zur Visualisierung soll verwendet werden?
- Auf welche Weise erfolgt die Berechnung und Visualisierung von Graphen und Netzwerken?
- Wie wird die Bereitstellung der Webseite durchgeführt?
- Welche Datenbanken kommen für die Sammlung und Bereitstellung der - Informationen zum Einsatz?
- Wie wird die Stimmung der Nachrichten zu einer Firma ausgewertet?
Auf die Fragestellung wie in der Projektgruppe zusammengearbeitet wird und welche Werkzeuge dafür zum tragen kommen - Stichwort: Git - wurde bereits im vorherigen Kapitel behandelt und wir hier nicht weiter betrachtet.
Für die aufgelisteten Fragestellungen hat sich jeweils ein Gruppenmitglied intensiv mit der Thematik auseinandergesetzt und eine Auswahl an möglichen Technologien der Projektgruppe vorgestellt. Nach mehreren iterationen der evaluation ist eine Asuwahl an Werkzeugen gesetzt worden.
Generell wurden für sämtliche Aspekte die allgemeinen Leitlinien berücksichtigt, dass die eingesetzten Werkzeuge und Technologien Open Source sein sollten, also frei verfügbar und ohne zusätzliche Kosten. Die Programmiersprache sollte auf Python basieren, da sie von allen Gruppenmitgliedern beherrscht wird und die Verwendung mehrerer Sprachen das Projekt unnötig komplex machen würde. Die gewählten Technologien sollten nahtlos in die Arbeitsweise mit DevOps und Git integrierbar sein, und durch automatisierte Tests überprüfbar sein, um eine einheitliche Arbeitsweise zu gewährleisten und Engpässe durch isolierte Anwendungen zu vermeiden. Schließlich wurde für alle zu berücksichtigenden Werkzeuge auf eine einfache Bedienbarkeit Wert gelegt, um einen reibungslosen Einstieg in die Technologie zu ermöglichen und die Beteiligung aller Teammitglieder zu erleichtern.
## Technische Anforderungen
Neben den allgemein geltenden Anforderungen wird in diesem Unterkapitel auf die technischen Anforderungen je Kategorie eingegangen. Die Kategorien wurden aus den oben ganannten Fragestellungen abgeleitet und entsprechen den Arbeitsbereichen der einzelnen Gruppenmitglieder sowie die Kernelemente des Projektes. Die Gruppen/Kategorien lauten:
- DevOps
- Text Mining
- Datenspeicherung
- Sentimentanalyse
- Verflechtungsanalyse
- Visualisierung
Diese Einteilung findet sich im Verlauf der Dokumentation immer wieder. Zusätzlich kommt in diesem Teil noch das Unterkapitel "Provisionierung" hinzu indem auf die Vorgaben für die Bereitstellung der Anwendung für die Nutzer eingegangen wurde.
Im folgenden wird auf kurz auf die Kategorien eingegangen und die speziellen Anforderungen für die jeweiligen Bereich dargelegt, welche es bei der Rechereche zu betrachten galt.
### DevOps
Dieser Abschnitt befasst sich mit der Versionskontrolle des Quellcodes, automatisierten Tests und der automatisierten Bereitstellung der Anwendung auf einem Server. Im Kapitel 3.1 wurde dieses Thema theoretisch und in Kapitel 4.2 praktisch behandelt, weshalb sich dieser Abschnitt auf die Anforderungen auf höchster Ebene konzentriert.
Bei der Implementierung von DevOps war es entscheidend herauszufinden, welche Versionskontrollsoftware genutzt werden sollte, wie DevOps darin integriert werden kann und für welche Aspekte des Projekts DevOps sinnvoll eingesetzt werden kann.
Die Versionskontrollsoftware muss für alle Beteiligten leicht zugänglich sein und keine zusätzlichen Konten erfordern. Sie sollte die Zusammenarbeit im Team ermöglichen, indem mehrere Personen an denselben Dateien arbeiten können, die dann von der Versionskontrollsoftware zusammengeführt werden.
DevOps muss in dieser Software implementiert werden können, um eigene Pipelines zu erstellen, die die Anwendung testen und bereitstellen.
Unter Berücksichtigung der allgemeinen Vorgaben lauten die Prämissen für die Recherche der DevOps-Technologien wie folgt:
- Auswahl einer Versionskontrollsoftware, die eine kollaborative Arbeit des Teams am Quellcode ermöglicht.
- Die Technologie sollte das Erstellen eigener Pipelines unterstützen.
- Die Technologie sollte kostenlos und frei verfügbar sein.
- Die Technologie sollte mit Python kompatibel sein.
### Text Mining
Die Kategorie Text Mining beschäftigt sich mit dem sammeln von Unternehmensinformationen die für das Projekt relevant sind. Diese Daten werden dann im Abschnitt Datenspeicherung gesichert und der Projektgruppe zur Verfügung gestellt. Ähnlich wie im vorangegangenen Kapitel ist die Thematik im Kapitel 3.2 und 4.3 - 4.4 tiefer behandelt.
Für diesen bereich muss ein Werkzeug gefunden werden welches APIs aus dem Internet abfragt und die Daten sichert beziehungsweise Transformiert. Unter anderem die Unternehmensdaten aus dem Unternehmensregister für die Netzwerkanalyse und die Stammdaten, als auch diverse Nachrichten APIs für die Stimmungsanalyse zum jeweiligen Unternehmen.
Besonders bei dem gewinnen der Daten aus dem Unternehmensregister besteht die schwiriegkeit die Daten in ein einheitliches Format zu transferieren, da die Informationen als Jahresbericht der Unternehmen vorliegen die von jedem Unternehmen in eigener Form erstellt werden. Das Tool muss also die die Berichte auswerten können und die gesuchten Daten sammeln auch wenn diese mal in einer Tabelle oder im Fließtext vorkommen.
Zusammengefasst sind die Kriterien an die Technolgie:
- Abfragen und Auswerten vom Unternehmensregister und Nachrichten APIs
- Aufbereiten der Daten in ein einheitliches Format
- Sichern der Daten in einer Datenbank nach Vorgabe des Datenbankschemas
- Die Technologie sollte kostenlos und frei verfügbar sein.
- Die Technologie sollte mit Python kompatibel sein.
### Datenspeicherung
- No SQL DB für den Datalake um alle Infromationen zu sammeln
- SQL Datenbank um die Daten aus dem Data Lake in eine Struktur zu packen
- Erfahrung der Teilnehmer berücksichtigen
- Kostenfrei
### Sentimentanalyse
### Verflechtungsanalyse
- Kombinierbar mit dem Visualisierungstool
- Einfach zu bedienen
- Python bibliothek
- performant
- kostenfrei
### Visualisierung
- möglichst python basierend
- Einfach zu bedienen
- Möglichkeit Diagramme und Netzwerke darzustellen
- kostenfrei
### Provisionierung
- Kombinierbar mit Docker/Container
- Kostenfrei
- Zugriff übers Internet für alle Projektteilnehmer
- Nicht zu Komplex
## Lösungsansätze: Überblick über relevante Technologien und Werkzeuge
In diesem Abschnitt werden zu den Anforderungen die diskutierten Optionen vorgestellt und betrachtet.
Für Visualisierungs tool standen die Optionen Ploty Dash, Django oder ein Webframework auf Javascript basis wie Angular oder Vue.js zur Auswahl.
Für das Netzwerktool gab es die Wahl zwischen NetzwerkX, NetzwerkX mit pyviz, Graphviz und Cytoscape.
Für die Provisionierung galt es unterscheiden ob einer der Hyperscaler AWS, GCP oder Azure mit deren kostenfreien Kontingenten zum Einsatz kommen sol oder ob die Server der Universität Südwestfahlen dafür geeignet sind.
## Proof-of-Concept mit Jupyter Notebooks
Bevor das Projekt startete wurde ein Proof-of-Concept (POC) durchgeführt um die Auswahl der Technologien zu evaluieren und den Aufwand abzuschätzen.