Architekturentscheidungen
Auf dieser Seite werden die Architekturentscheidungen des Gesamtsystems festgehalten. Innerhalb der einzelnen Systeme fallen weitere Architekturentscheidungen an, die nur die jeweiligen Systeme betreffen. Dazu zählt z.B. die Wahl des DBMS im Backend. Diese Entscheidungen werden nicht hier, sondern in der Dokumentation des betroffenen Systems dokumentiert.
Technologieentscheidungen
Bei Technologieentscheidungen ist zu berücksichtigen, dass Technologien eingesetzt werden, mit denen unsere Studierenden aus der Lehre vertraut sind. Damit stellen wir sicher, dass Erweiterungen in Form von studentischen Arbeiten grundsätzlich möglich sind.
Backend
Für das Backend von Subato wird das Spring Framework genutzt, welches die für uns notwendigen Aspekte (JPA, REST-API, Logging, RabbitMQ, Autorisierung/Authentifizierung) umfassend unterstützt, viel Dokumentation dazu vorhanden ist und das Framework schon seit einiger Zeit in der Lehre vermittelt wird.
Frontend
Für das Frontend wird eine Single-Page Application mit dem Angular-Framework verwendet. Subato ist keine hochinterkativen Anwendungen, weshalb eine SPA aus diesem Grund eigentlich nicht zwingend erforderlich ist. Es wäre aus der Sicht dieses Aspekts grundsätzlich auch eine traditionelle Webanwendung in Frage gekommen. Aus den folgenden Gründen wurde dennoch eine SPA verwendet:
- Das Ziel war die Reduzierung der Komplexität des monolithischen Altsystems. Daher macht es Sinn, die Darstellung von der serverseitigen Verarbeitung zu trennen. Zudem gibt es nun verschiedene Clients (Browser, IDE Plugins), sodass der Aspekt der Darstellung sowieso nicht zentral auf einem Server erfolgen sollte, da jeder Client unterschiedliche Anforderungen in Bezug darauf hat.
- Steigende Beliebtheit von SPAs und die damit vorhandene unterstützende Infrastruktur.
Angular wurde gewählt, da:
- in der Lehre JavaScript und Basics zu NodeJS und SPA-Frameworks (Vue.js und React) vermittelt werden
- Vue.js sich nicht für komplexe Projekte eignet
- React vieles, was benötigt wird (Routing etc.) nicht nativ anbietet, da es sich um ein Micro-Framework handelt
- Flutter SPAs zu neu sind, viele proprietäre Technologien verwendet werden und es ein im Vergleich eher geringes Angebot an Bibliotheken aus der Community gibt.
Plugins
Zu den populärsten IDEs/Code Editoren zählen IntelliJ, Eclipse, Visual Studio Code. Grundsätzlich sollen Plugins für alle dieser IDEs entwickelt werden. In der Priorisierung fiel die Wahl auf IntelliJ, da diese von den meisten Informatikstudenten der Hochschule RheinMain verwendet wird.
Authentifizierung über Keycloak
Authentifizierung ist ein Querschnittsaspekt, der die meisten Systeme betrifft. Subato ist Teil einer Plattform, in der auch die anderen Systeme eine Authentifizierung erfordern. Um zu vermeiden, dass jeder Client bzw. jedes System die Logik für die Kommunikation mit dem AD der Hochschule RheinMain selbst implementiert (und dadurch auch evtl. Änderungen an der Authentifizierungslogik in allen Systemen angepasst werden müssen), soll ein dediziertes System die Authentifizierung übernehmen. Ferner macht es in Hinsicht auf die Plattform und die unterschiedlichen Clients bei Subato Sinn, ein Single Sign-On Mechanismus zu ermöglichen.
Keycloak wird verwendet, da es ein populäres IAM-System ist, das diese Anforderungen berücksichtigt und eine Authentifizierung über OpenID Connect anbietet. Es gibt viele Bibliotheken, die das Protokoll implementieren. Die Authentifizierung mit OpenID Connect unterstützt auch die Anbindung von nativen Clients.
Verwendung des HDS
Im Altsystem wurde das AD des SBI genutzt. Darüber können jedoch die vollständigen Namen der authentifizierten Nutzer nicht abgeleitet werden. Dies ist jedoch erforderlich, da der "Informatik-Kürzel" in der Vergangenheit im Altsystem eine schlechte Usability zur Folge hatte. Die Lehrenden mussten ständig eine Zuordnung zwischen Accountname und vollständigem Namen der Studierenden vornehmen, was manchmal ziemlich schwierig ist. Aus diesem Grund wurde das zentrale AD der Hochschule RheinMain angebunden.
Der Nachteil besteht darin, dass die Rechte von Lehrkräften nicht einfach abgeleitet werden können. Dies ist jedoch nicht notwendig, da eine manuelle Zuordnung erfolgen kann und die Anzahl der Lehrkräfte, die das System verwenden, überschaubar ist.