Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
Nächste Überarbeitung | Vorhergehende Überarbeitung | ||
wiki:software:beuthbot:berichte:ws2020:zwischen:geplanter-stand-preambel [22.11.2020 19:45] Dennis Walz angelegt |
wiki:software:beuthbot:berichte:ws2020:zwischen:geplanter-stand-preambel [25.11.2020 02:12] (aktuell) Lukas Danke |
||
---|---|---|---|
Zeile 2: | Zeile 2: | ||
===== Präambel ===== | ===== Präambel ===== | ||
- | Neben einigen | + | Neben einigen |
- | ==== Der Bot hat keinen | + | ==== Content |
- | Der BHT-Bot besteht bisher aus lediglich zwei Services, die Content zur Verfügung stellen: Mensa- und Wetter-Service. Aufgrund der Covid19-Pandemie | + | Der BHT-Bot besteht bisher aus lediglich zwei Services, die Content zur Verfügung stellen: Mensa- und Wetter-Service. Aufgrund der Covid19-Pandemie |
- | ==== Der Bot besteht | + | ==== Hands-On & Dokumentation ==== |
+ | Wenn man neu in ein Projekt kommt gibt es viel Dokumentation aufzuarbeiten, | ||
+ | |||
+ | Ohne einen persönliche Hands-On-Workshop ist eins der größten Probleme um ins Projekt zu finden, dass es verschiedene Stellen gibt, an denen Dokumentation, | ||
+ | |||
+ | Wir wollen diese Situation verbessern, indem wir falsche und für uns nicht-nachvollziehbare Dokumentation verbessern, Wikistrukturen bereinigen, eine Landing-Page für den Bot unter einer zentralen Bot-Domain verfügbar machen und Abläufe und Strukturen in Code gießen. | ||
+ | |||
+ | ==== Redundanter | ||
Beim Studium der einzelnen Services wurde sichtbar, dass fast ausnahmslos jeder Service des BHT-Bot die gleiche Grundstruktur hat: Alle Services stellen eine JSON-REST-Schnittstelle zur Verfügung, die via NodeJS + Express Framework implementiert ist. Vergleicht man die Services, sieht man, dass insbesondere Services, die Inhalte ausspielen sollen einer identischen Struktur folgen (müssen), dies aber individuell handhaben. Dadurch ist der Boilerplate Code für jeden Service unnötig hoch und zugleich ist das Warten der Services bei Änderung von globalen Schnittstellen mit hohem individuellen Aufwand verbunden. Wir wollen diese Common-Funktionalitäten identifizieren und in zentralen Bibliotheken bzw. Frameworks bündeln. | Beim Studium der einzelnen Services wurde sichtbar, dass fast ausnahmslos jeder Service des BHT-Bot die gleiche Grundstruktur hat: Alle Services stellen eine JSON-REST-Schnittstelle zur Verfügung, die via NodeJS + Express Framework implementiert ist. Vergleicht man die Services, sieht man, dass insbesondere Services, die Inhalte ausspielen sollen einer identischen Struktur folgen (müssen), dies aber individuell handhaben. Dadurch ist der Boilerplate Code für jeden Service unnötig hoch und zugleich ist das Warten der Services bei Änderung von globalen Schnittstellen mit hohem individuellen Aufwand verbunden. Wir wollen diese Common-Funktionalitäten identifizieren und in zentralen Bibliotheken bzw. Frameworks bündeln. | ||
- | === Qualitätsmanagement === | + | Bei allem was wir tun und Planen gilt die alte Pfadfinder-Regel: |
+ | |||
+ | ==== Qualitätsmanagement ==== | ||
+ | Bisher sind alle Services lose miteinander verbunden, jeder Service implementiert die Kommunikation für sich selbst, die Integration erfolgt durch manuelles Deployment, es gibt keine Typisierung, | ||
+ | - Wir schreiben typisierte Libraries, die eine zentrale Dokumentation der Kommunikation mit dem Bot darstellt. | ||
+ | - Alle Libraries und Frameworks werden durch Linting-Regeln in ein, für alle Entwickler einheitliches, | ||
+ | - Alle Libraries und Frameworks haben automatische Unit-Tests, als auch Prüfung der Testabdeckung, | ||
+ | - Wir wechseln vom bisherigen manuellen Deployment zu einer automatischen CI/CD Pipeline. Diese Pipeline beinhaltet auch eine Testing-Stage, | ||
+ | - Releases werden durch Versionierte Git Tags erzeugt (und dann automatisch deployed) - Die Tags werden semantisch versioniert | ||
+ | - Neue Features werden via Pull Request in das Repository übernommen. Nach Möglichkeit werden die Requests durch ein Projektmitglied reviewd und freigegeben | ||
+ | ===== Übersicht geplante Tasks und Abhängigkeiten ===== | ||
+ | |||
+ | {{page>: | ||
+ | |||
+ | {{ : | ||
- | FIXME | + | ===== Architektur ===== |
+ | Die Architektur-Entscheidungen orientieren sich an der bisherigen Infrastruktur. Durch die Verwendung der gleichen Programmiersprachen und Technologien wird Wartbarkeit gewährleistet und insbesondere die Abstraktion von Common-Funktionalitäten in Libraries begünstiget. | ||
+ | Dies bedeutet für den BHT-Bot: | ||
+ | * Alle Features werden als Microservice-Architektur konzipiert | ||
+ | * Microservices werden via Docker Container betrieben | ||
+ | * Docker Container werden via docker-compose orchestriert | ||
+ | * Microservices kommunizieren via REST-Schnittstellen innerhalb des Docker-Network | ||
+ | * Services werden in Javascript geschrieben | ||
+ | * Libraries und Frameworks werden in Typescript geschrieben | ||
+ | {{page>: | ||
+ | < | ||
+ | ===== Aufgaben Spezifikation ===== | ||
+ | {{page>: |