diff --git a/documentations/Ergebnisse/Abschlussbericht_und_Praesentation/PhHo/05-DEV-OPS.md b/documentations/Ergebnisse/Abschlussbericht_und_Praesentation/PhHo/05-DEV-OPS.md new file mode 100644 index 0000000..c56999c --- /dev/null +++ b/documentations/Ergebnisse/Abschlussbericht_und_Praesentation/PhHo/05-DEV-OPS.md @@ -0,0 +1,77 @@ +# DevOps - in der Nutzung (Philipp Horstenkamp) + +Die meisten Aspekte von DevOps und CI/CD wurden bereits zur Zwischenpräsentation ausführlich beschrieben. +Hier konzentriere ich mich auf Änderungen seit der Präsentation und teile Erfahrungsberichte aus dem Team. + +## Poetry + +Poetry kam erfolgreich zum Einsatz. +Wir nutzten Abhängigkeitsgruppen wie `root`, lint, test, doc und develop. +Dabei enthält nur die `root`-Gruppe Laufzeitabhängigkeiten. +Zusätzlich wurden Extras wie `ingest`, `transformation` und `webserver` verwendet. + +- `ingest` umfasst Abhängigkeiten, die ausschließlich für das Data-Mining benötigt werden. +- `transformation` beinhaltet Werkzeuge zur Weiterverarbeitung, wie Sentimentanalysen und `rapidfuzz` für das Matching von Firmennamen. +- `webserver` umfasst Abhängigkeiten, die nur für die Darstellung von Ergebnissen auf dem Webserver eingesetzt werden. + +Unser Ziel war es, Ressourcen bei Ausführung und Installation zu schonen. + +## GitHub + +### Dependabot + +Wir setzten zusätzlich zu den GitHub Workflows Dependabot ein. +Ich bin weiterhin der Meinung, dass es für das aktiv entwickelte Projekt nicht essenziell war. +Allerdings wollte ich den Umgang damit erlernen und aktivierte es daher zusätzlich. +Die benötigte Konfiguration war wie folgt: +```yaml +version: 2 +updates: +- package-ecosystem: github-actions + directory: / + schedule: + interval: daily + open-pull-requests-limit: 10 +- package-ecosystem: pip + directory: / + schedule: + interval: daily + open-pull-requests-limit: 5 + ignore: + - dependency-name: '*' + update-types: ['version-update:semver-major'] +``` + +Die erstellten PRs müssen vom Nutzer nur noch überprüft und gemerged werden. + +### Zusätzliche Workflows + +Während der Entwicklung des Projektes wurden die folgenden `workflows` hinzugefügt: + +- **Dependabot-auto-merge**\ + aktiviert das automatische Mergen von PRs durch Dependabot und `github-actions[bot]`, sobald Änderungen genehmigt werden. + Dieser Workflow wurde erstellt, um die GitHub-Berechtigungen besser zu verstehen. +- **Auto Maintenance Cycle**\ + ist ein täglich ausgeführter Workflow, der routinemäßige Arbeiten verrichtet: + - Löschen alter Docker Images, deren Tags überschrieben wurden. + - Aktualisieren von `pre-commit` zur Nutzung aktueller Linter. + +Die ursprünglichen Workflows wurden konzeptionell nur minimal verändert. +Installierte Gruppen, Caching und Ausführungstrigger wurden optimiert, um die Ausführung zu verbessern. + +## Code Qualität + +Die Einarbeitung in Linter und automatisierte Tests stellte für einige Teammitglieder eine große Herausforderung dar. +Dies lag insbesondere daran, dass ganze Programmteile in Jupyter-Notebooks erstellt wurden und die Code-Struktur überdacht und angepasst werden musste. +Das nachträgliche Hinzufügen von Tests war anfangs eine Hürde. +Für Teammitglieder ohne CI/CD-Erfahrung war dies besonders frustrierend. +Nach dem ersten Beitrag zur zentralen Codebasis und der Überführung von Jupyter-Code auf den `main`-Branch verbesserte sich dies jedoch. +In der Rückmeldung wurde betont, dass die Werkzeuge zur Qualitätssicherung nach einer Eingewöhnungsphase als lernfördernd empfunden wurden. +Besonders die Erfahrung, wann Einwände von `ruff` oder `mypy` übergangen werden müssen, war wertvoll. +Mit zunehmender Erfahrung wurden einzelne Entwicklungsstränge kürzer und besser integriert. +Es wurde berichtet, dass `ruff` durch das Durchsetzen von Code-Standards in einigen Situationen Sicherheit bot. +Tools wie `mypy` waren besonders hilfreich, wo Code von verschiedenen Teammitgliedern verzahnt wurde. +Es ist schwer zu sagen, wie die Situation ohne diese Werkzeuge gewesen wäre. +Ein nachträgliches Hinzufügen von Lintern wäre jedoch nicht möglich gewesen. + +Ein Versuch, ChatGPT als Code-Reviewer für Pull Requests einzusetzen, scheiterte. diff --git a/documentations/index.rst b/documentations/index.rst index 99c0c75..0997f03 100644 --- a/documentations/index.rst +++ b/documentations/index.rst @@ -56,6 +56,7 @@ The timeline to reach this goal is: seminararbeiten/DevOps/Seminarpraesentation.ipynb seminararbeiten/Datenspeicherung/00_Datenspeicherung + Ergebnisse/Abschlussbericht_und_Praesentation/PhHo/05-DEV-OPS .. toctree:: :glob: