Angestrebte Lernergebnisse / Learning Outcomes
Die Studierenden können fortwährend entwickelte Software-Systeme automatisiert bauen
und automatisiert in von ihnen aufgesetzten virtualisierten Cloud-Umgebungen installieren, indem sie
- Grundkenntnisse in Linux (als dem marktbeherrschenden Server-Betriebssystem) besitzen und zur Administration einsetzen können,
- Build, Test und Deployment der Software-Systeme über eine CICD-Pipeline automatisieren,
- grundlegende Administrationskenntnisse (Firewall-, Proxy-, Domain-Konfiguration, …) nutzen,
- und Werkzeuge zur Virtualisierung und zum Cloud-Computing anwenden,
damit sie digitale Produkte agil über den gesamten Lebenszyklus und im Sinne einer Ende-zu-Ende-Verantwortung (“you build it - you run it”) realisieren können.
Inhalt
- Basiswissen Linux und Netzwerke
- Grundlegende Verfahren wie z.B. Public-Key-Authentifizierung
- Grundlegende Werkzeuge wie z.B. bash und ssh
- Weiterführende Continuous Integration und Delivery
- Betrieb
- klassische Data-Center-Infrastrukturen (Firewalls, Load-Balancer, Web-/App-/DB-Server etc.)
- Virtualisierungsformen
- Container-Virtualisierung mit z.B Docker
- Container-Orchestrierung mit z.B. Kubernetes
- Monitoring mit z.B. Prometheus
- Cloud-Computing mit z.B. Google Cloud
- Vorlesung
- Gastvortrag externer Referenten
- Seminar
- Übung
- Projekt:
- Ausgangssituation: existierenden System
- mit vorhandener, jedoch manuell versionierter und zu übersetzender Code-Base,
- mit manuellem Build, Test und Deployment auf verschiedenen, divergierenden Umgebungen,
- mit klassischer, nicht-virtualisierter, unüberwachter Produktionsumgebung
- Zielsituation: überarbeitetes System
- unter vollständiger Versionskontrolle,
- mit automatisiertem Build, Test und Deployment mittels einer CICD-Pipeline,
- betrieben auf container-virtualisierten Umgebungen in einer Cloud
Materialien / Ressourcen
- Vorlesungsunterlagen
- Übungsunterlagen inkl. Lösungen
- Projekt-Meilensteinbeschreibungen
- Zugänge, Lizenzen und Kontingente für
- gemeinsame Code-Repositories (z.B. GitLab)
- Cloud-Computing-Provider (z.B. Google Cloud)
- Entwicklungsumgebungen (z.B. IntelliJ IDEA)