Die Herausforderung des Klienten
Das Hauptproblem, mit dem unser Klient konfrontiert war, war ein Mangel an helfenden Händen. Der Kern der Geschäftstätigkeit unseres Klienten ist ein kleines Team aus sieben Mitarbeitern, wobei ein Hauptmitarbeiter die IT-Entwicklung des Unternehmens betreut. Dieser Mitarbeiter war mit Verantwortlichkeiten überlastet, die für den laufenden Betrieb unerlässlich waren, und er hatte keine Zeit, nach neuen Funktionen zu suchen, geschweige denn zu integrieren. Darüber hinaus hatte der Entwickler unseres Klienten keine Zeit, DevOps-Prinzipien umzusetzen oder sich mit dem Thema Skalierbarkeit auseinanderzusetzen.
Da unser Klient Veranstalter eines Musik- und Gaming-Festivals ist, erlebt er im September einen plötzlichen Anstieg der Online-Aktivitäten – wenn der Ticketverkauf startet. Die Ticketpreise sind so strukturiert, dass die günstigsten Tickets zuerst verfügbar sind, gefolgt von teureren. Das System muss der plötzlichen Nachfrage gerecht werden, wenn sich Festivalbesucher die günstigeren Tickets sichern möchten, und sich dann für den Rest des Jahres an eine niedrigere Nutzungsquote anpassen. Wenn unser Klient die Nachfrage nicht decken kann, riskiert er frustrierte Kunden und ein PR-Problem. Aber die bestehende Anwendung war nicht zum Skalieren geeignet. Sie verursachte erhebliche Kostenüberschreitungen während der Spitzenzeiten und konnte keine Anfragen bearbeiten, wenn die Nutzungsquote unterschätzt wurde.
Unser Klient verwendete DigitalOcean für seine VM-basierte Anwendung, obwohl die Containerlösungen nicht geeignet waren, und er wollte den Aufwand für den Betrieb und die Wartung von Kubernetes nicht haben. Ebenso war die Unterstützung für Managed Services für Redis, PostgreSQL und RabbitMQ unzureichend. Jede Instanz der Anwendung lief auf einer eigenen VM und wurde nicht containerisiert. Das führte dazu, dass Hotfixes in der Quellcodeverwaltung verloren gingen oder nicht nachverfolgt wurden.