Folgendes Diagram beschreibt den groben Aufbau von Dynexite im größeren Kontext.
orbit-teacher
) und einem Teil (orbit-learner
) für die Studierenden.Import-Export
statt.Bei diesen Diagrammen handelt es sich um Empfehlungen. Durch die Konfiguration von Dynexite ist es durchaus möglich Dienste auf verschiedene Netzwerke oder Systeme zu verteilen.
Der Orbit besteht in unserer Variante aus mehreren internen Diensten und einigen externen Diensten:
Dynexite
Externe Dienste
Das Ergebnis ist ein einzelne URL (z.B. dynexite.rwth-aachen.de) - ohne die Nutzung von zahllosen Subdomains.
Die Einzelnen Dienste werden dann z.B. als /t/
, /t/api/
, /l/
und /l/api/
aufgelöst. Auf /
findet man eine Landing Page, welche dem Nutzer helfen soll die richtige Applikation zu finden.
Die Konfiguration ist sehr flexibel. Auch andere Konstrukte mit anderen Domänen, Subdomänen und Unterpfaden sind möglich!
Dies ist eine Darstellung einer Satellite-Instanz und einem autonomer Telescope-Instanz.
Dynexite
Externe Dienste
Eine einzelne Telescope Instanz kann in Kombination mit verschiedenen anderen Systemen verwendet werden. Es ist daher nicht nötig mehrere Instanzen aufzusetzen, wenn es verschiedene Prüfungsserver gibt.
Dynexite
Warum sind die Applikationen in Frontend- und Backend-Server getrennt?
Die Hauptgründe für dies ist, dass es sich hierbei nicht mehr um eine klassische Web-Applikation handelt. Angular ist ähnlich wie Vue, React u.A. ein Framework um Single-Page-Applikationen zu entwickeln, welche unabhängig von Server arbeiten könnten. Daraus ergibt sich eine erheblich andere Kommunikation zwischen Server und Client.
Natürlich könnte man beide Dienste in einen Dienst zwängen - dies würde die Komplexität allerdings nur unnötig erhöhen und erzwingen, dass ein Dienst aktualisiert werden muss, auch wenn es keine Änderungen gegeben hat.
Warum teilen sich die Orbit-Instanzen eine SQL Instanz, wenn es doch unterschiedliche Applikationen sind?
Unser ursprüngliches Ziel war es, die Sicherheit der Applikation auf möglichst einfacher Art zu erhöhen und gleichzeitig die Komplexität bei der Entwicklung möglichst gering zu halten. Mit dieser Trennung ist es uns nun möglich, nicht nur ganz unterschiedlich auf die verschiedenen Benutzergruppen zu reagieren, sondern auch gezielt Firewalls einzusetzen, um die Arbeit mit dem Dozenten System (orbit-teacher) einzuschränken.
Zudem können wir so Applikationen in den Wartungsmodus versetzen, ohne dass wir die andere dabei beeinflussen. Während es vermutlich am besten gewesen wäre die Applikationen vollständig zu trennen, so hätte es uns einfach an Mitarbeitern gefehlt, um diese Arbeit in kurzer Zeit mit unseren Qualitätsanforderungen umzusetzen.
Warum werden Reverse-Proxies verwendet?