Softwareentwurf und Anwendungen verteilter Systeme
Die Vorlesung “Softwareentwurf und Anwendung verteilter Systeme” bietet den Studierenden eine umfassende Einführung in die Konzeption, Entwicklung und Implementierung verteilter Softwaresysteme.
Im Rahmen dieses Kurses erwerben die Teilnehmer*innen fortgeschrittene Fähigkeiten in der Nutzung und Verwaltung moderner Softwaretechnologien. Der Kurs ist praxisorientiert und zielt darauf ab, die Studierenden auf reale Herausforderungen in der Softwareentwicklung vorzubereiten.
Moderne Software-Entwicklung erfolgt heute in schnellen Zyklen mit häufigen und kontinuierlichen Updates. Dadurch wird es nötig, den Prozess der Softwarebereitstellung zu automatisieren. Zu diesem Zweck werden Deployment Pipelines konzipiert und genutzt, die dafür sorgen, dass Code-Änderungen schnell und zuverlässig in Produktionsumgebungen gelangen. Daher lernen die Studierenden in diesem Kurs, ihre Projekte nicht nur lokal auf ihren Rechnern zu testen, sondern sie tatsächlich zu deployen und im Internet von überall aus zugänglich zu machen. Dies erfordert das Einrichten und Pflegen eines eigenen Servers.
Ein Schwerpunkt liegt dabei auf Docker. Die Studierenden erwerben Kenntnisse im Serverhosting, einschließlich der grundlegenden Begriffe und Techniken wie SSH, Domain- und DNS-Verwaltung, Firewall-Konfiguration, Terminal-Kommandos, Paketinstallation sowie der Einrichtung von SSL-Zertifikaten und HTTPS. Der Bereich Deployment umfasst die Einführung in Continuous Integration und die kollaborative Nutzung von git branches, Portainer zur webbasierten Verwaltung von Docker, Container Registries wie GHCR, die Konfiguration von Reverse Proxies mit Traefik und die Automatisierung von Workflows mit GitHub Actions.
Eine grundsätzliche Einführung in das Thema Astronomie setzt den thematischen Rahmen und dient als Inspiration für die Projektarbeit. Die Aufgabe ist dabei, eine funktionierende Anwendung zu entwickeln, die mehrere integrierte Services umfasst. Diese Anwendung wird auf einem eigenen vServer unter einer eigenen Domain gehostet und nutzt Mechanismen für kontinuierliches Deployment. Ziel ist es, eine praxisnahe, interaktive und nutzerfreundliche Softwarelösung zu präsentieren, die das erworbene Wissen und die erlernten Fähigkeiten widerspiegelt.
StarEagle ist eine interaktive Webanwendung, die es Benutzern ermöglicht, Informationen über Sterne und Konstellationen zu erkunden. Mit einer benutzerfreundlichen Oberfläche können Benutzer durch verschiedene Konstellationen navigieren, detaillierte Informationen zu einzelnen Sternen anzeigen und ihre Suche mit Filtern anpassen.
Das Ziel
Entwicklung einer Anwendung für gelegentliche Sterneninteressierte, die jederzeit und überall einen schnellen Zugriff auf alle relevanten Informationen zu Sternen und Konstellationen ermöglicht.
Deployment
Im Rahmen des Kurses haben wir auch eine Deployment-Pipeline eingerichtet, die es uns ermöglicht, vollautomatisierte Updates der Anwendung durchzuführen. Dabei kamen GitHub Actions und der Dienst Blaze zum Einsatz. Bei jeder neuen Version der Anwendung wird zunächst ein Build-Befehl ausgeführt. Anschließend wird das erstellte Image über Blaze auf unseren Server gezogen und in unserem Portainer-Stack deployed.
Funktionen
Konstellationsinformationen: Durchsuchen Sie eine Liste von Konstellationen und erhalten Sie eine Übersicht über die Anzahl der Sterne in jeder Konstellation.
Sterninformationen: Zugriff auf detaillierte Informationen zu Sternen, einschließlich Spektraltyp, Helligkeit, Farbindex, Rektaszension, Deklination und mehr.
Darstellung des Sterns: Der Stern wird in Farbe und Helligkeit basierend auf seinem CI-Wert und seiner absoluten Magnitude beeinflusst, um ein möglichst realistisches Erscheinungsbild zu gewährleisten. Hierfür wird die Three.js-Bibliothek verwendet, die speziell für die Darstellung von 3D-Grafiken im Webbrowser entwickelt wurde.
Anpassbare Filter: Nutzer können die angezeigten Sterne basierend auf ihrer Helligkeit und anderen Kriterien filtern.
Suchfunktion: Schnelle Suche nach Konstellationen und Sternen basierend auf Namen oder anderen Eigenschaften.
Integration mit ESASky: Direkter Link zu ESASky für ausgewählte Sterne, um weitere Informationen und Bilder zu erhalten.
Exportfunktion: Möglichkeit, Sterninformationen in die Zwischenablage zu kopieren.
Hinterlasse einen Kommentar