Abstract
Die vorliegende Semesterarbeit befasst sich mit der Optimierung und Standardisierung der Bereitstellungsprozesse von virtuellen Serverinstanzen innerhalb der Amazon Web Services (AWS) Cloud-Infrastruktur.
Problematik
Der aktuelle Prozess der Instanziierung von Amazon EC2-Systemen basiert auf manuellen Konfigurationsschritten über die AWS Management Console. Dieser Ansatz führt zu einer hohen Fehleranfälligkeit, mangelnder Reproduzierbarkeit der Umgebungen und einem signifikanten zeitlichen Aufwand. Besonders die fehlende Konsistenz zwischen Development-, Integration- und Production-Umgebungen erschwert das spätere Troubleshooting und den Systemsupport massiv.
Zielsetzung und Methodik
Ziel dieser Arbeit ist die Entwicklung eines skriptbasierten Automatisierungswerkzeugs, welches eine konsistente und standardisierte Bereitstellung ermöglicht. Methodisch wird hierbei ein interaktives Setup-Verfahren implementiert, welches auf einer zentralisierten userdata.yml basiert. Das primäre Ziel ist es, die Deployment-Dauer auf ein Maximum von fünf Minuten zu reduzieren und gleichzeitig sicherzustellen, dass jede Instanz definierten Qualitäts- und Sicherheitsstandards entspricht.
Ergebnisse
Durch die technische Umsetzung wird der „Configuration Drift“ zwischen den verschiedenen Umgebungen eliminiert. Das entwickelte Skript bietet eine effiziente Schnittstelle für Administratoren, welche die Komplexität des Deployments reduziert und die Wartbarkeit der Gesamtinfrastruktur durch einheitliche Konfigurationsparameter verbessert. Die Arbeit demonstriert, wie durch einfache Automatisierungsschritte die Betriebssicherheit erhöht und die Agilität in der Ressourcenbereitstellung nachhaltig gesteigert werden kann.
Ist-Situation
In der aktuellen operativen Praxis erfolgt die Bereitstellung von Rechenkapazitäten in der Amazon Web Services (AWS) Cloud primär durch manuelle Interaktionen mit der AWS Management Console. Sobald eine neue Server-Ressource (EC2-Instanz) benötigt wird, konfiguriert ein Administrator die Parameter wie Instanztyp, Storage, Security Groups und Netzwerkeinstellungen, individuell per „Point-and-Click“. Dieser Prozess ist organisch gewachsen, stösst jedoch aufgrund der steigenden Komplexität und der Anzahl der zu verwaltenden Systeme an seine Grenzen. Es fehlt eine zentrale Standardisierung, was dazu führt, dass jede Instanz potenziell als „Snowflake-Server“ (einzigartiges, nicht replizierbares System) existiert.
Problemanalyse der aktuellen Situation
Die manuelle Verwaltung der Infrastruktur bringt signifikante Risiken und Ineffizienzen mit sich:
- Fehlende Reproduzierbarkeit: Da keine versionierten Konfigurationsdateien existieren, ist es nahezu unmöglich, eine identische Umgebung (z. B. für Testzwecke) exakt zu duplizieren. Abweichungen in der Konfiguration („Configuration Drift“) sind die zwangsläufige Folge.
- Hoher Zeitaufwand und Ineffizienz: Das manuelle Durchklicken der Setups ist zeitintensiv und bindet wertvolle Ressourcen der IT-Abteilung, die für strategische Aufgaben fehlen.
- Erhöhte Fehleranfälligkeit: Menschliche Fehler bei der Eingabe von Parametern oder beim Setzen von Berechtigungen in den Security Groups lassen sich kaum vermeiden. Dies führt oft zu Sicherheitslücken oder instabilen Anwendungen.
- Erschwertes Troubleshooting: Im Fehlerfall ist die Ursachenforschung mühsam. Da die Historie der manuellen Änderungen nicht lückenlos dokumentiert ist, lässt sich schwer nachvollziehen, welche spezifische Einstellung zu einem Systemausfall geführt hat.
- Mangelnde Skalierbarkeit: Ein schnelles Auf- oder Abwärtsskalieren der Infrastruktur (Elasticity) ist händisch nicht in einer Geschwindigkeit möglich, die modernen Business-Anforderungen gerecht wird.
Methodik
Die Umsetzung erfolgt nach agilen Prinzipien in Anlehnung an das SCRUM-Framework. Zur Visualisierung des Arbeitsfortschritts und zum Management der User Stories wird das Issue Board von GitLab als Kanban-Board eingesetzt.
Relevanz / Motivation
Relevanz Die Abyss Inc. verwaltet viele AWS EC2-Instanzen auf allen Entwicklungsstufen (Dev / Int / Prod). Die derzeitige manuelle Provisionierung führt zu Inkonsistenzen und erschwert den Supportaufwand deutlich. Um diese Probleme zu mitigieren, ist es erforderlich, diesen Prozess zu automatisieren und zu standardisieren, damit die Cloud-Infrastruktur einheitlich und einfacher skalierbar wird.
Motivation In der momentanen Konstellation wird die gesamte AWS-EC2-Infrastruktur manuell deployed, gewartet und erweitert. Dadurch entsteht ein erheblicher Mehraufwand beim Bereitstellen und beim Support. Meine Motivation ist es eine standardisierte, schnelle und simple Automatisierungslösung bereitzustellen, welche diese Probleme mitigiert.
Out-of-Scope
Für dieses Projekt sind folgende Punkte out of Scope:
- Alle AWS-Services bis auf EC2
- Die Wartung der Cloud Infrastruktur nach dem initialen Deployment
- Applikationen, welche auf der Cloud-Infrastruktur deployed werden
- Die Erstellung und Verwaltung von IAM-Rollen und Berechtigungen sowie das Monitoring der Instanzen nach dem Deployment sind nicht Bestandteil dieser Arbeit.
Projektorganisation
| Name | Rolle | Kontaktinformationen | GitLab User | GitHub User |
|---|---|---|---|---|
| Ramon Schmocker | Projektleiter | ramon.schmocker@edu.tbz.ch | @4G0NYY | @4G0NYY |
| Michel Rodriguez | Fachdozent PRJ | michel.rodriguez@tbz.ch | @??? | @??? |
| Armin Dörzbach | Fachdozent IaC | armin.doerzbach@tbz.ch | @armindoerzbachtbz | @armindoerzbachtbz |
| Thanam Pangri | Lehrgangsleiter | thanam.pangri@tbz.ch | @pat-teacher | @pat-teacher |