Architektur und Implementierung einer Serverless-Plattform für Data Science

Unser Kunde, der Produktzweig einer Top-Tier Managementberatung, wollte eine Plattform für die Berechnung von kurz- und langlaufenden Berechnungen haben. niologic plante und implementierte eine Berechnungsplattform auf Basis des Designprinzips der Serverless Architecture.

Herausforderung

Das Produktentwicklungsteam hatte ein Jahr zuvor erfolgreich einen Prototyp seiner Analysesoftware gestartet. Zwischenzeitlich kamen weitere Parameter und Analyseschritte hinzu, so dass die Berechnungen trotz weiterer Optimierung nicht mehr umgehend möglich waren.

Durch die vormals synchrone Berechnung kam es zu Wartezeiten und Ausfällen, welche nach Recherche u.a. durch die darunterliegende Netzwerkinfrastruktur (Timeouts) verursacht wurden. Gleichzeitig hatte sich die Bandbreite der unterschiedlichen und unterschiedlich aufwendigen Simulationen und Berechnungen deutlich gesteigert. Wir benötigten einen Weg Berechnungsjobs anzustoßen und in regelmäßigen Intervallen den Fortschritt abzufragen. Gleichzeitig sollte die Plattform horizontal skalierbar sein, so dass beim weiteren Wachstum des Gesamtprodukts Engpässe durch eine Skalierung schnell behoben werden können.

Vorgehen

niologic moderierte die Anforderungen an eine Berechnungsplattform und evaluierte mehrere asynchrone Worker Engines / Berechnungsplattformen. Ein Teil dieser Plattformen basierte auf klassischen Service-orientierten Architekturen (SOA), ein anderer Teil auf der modernen Serverless-Architektur.

Anhand des Anforderungskatalogs kamen drei Serverless-Plattformen in die engere Auswahl für eine Machbarkeitsanalyse (Proof-of-Concept / PoC). Im PoC wurde schnell klar, dass nur ein Kandidat die Anforderungen an eine stabile und skalierbare Berechnungsplattform erfüllen konnte. Die Wahl fiel auf ein Projekt, welches gleichzeitig auch in die vorhandene Kubernetes-Infrastruktur integriert werden konnte.

niologic entwickelte eine API zur Verwaltung der Berechnungsjobs, so dass Berechnungen einen eindeutigen Schlüssel erhielten und bei der späteren Fortschrittsanzeige referenziert werden konnten. Weiterhin wurden mehrere Basisabbilder für Kubernetes erstellt, so dass sowohl R, Python und Java-Worker auf der Plattform ausgeführt werden konnten.

Projektergebnis und Kundennutzen

Das Entwicklungsteam des Kunden erhielt innerhalb von 4 Wochen eine Machbarkeitseinschätzung, Planung und Implementierung einer Serverless-Architektur, welche mit den vorhandenen Systemen integriert wurde. Durch Designprinzipien, wie Asynchronität, konnte die Software um eine Kommunikation des Status an den Endnutzer erweitert werden.  Weitere Prinzipien wie Serverless und Containerization sorgten für eine Kapselung der Algorithmen und Berechnungen, so dass Data Scientists sich bei ihren Algorithmen nicht mehr um die Ausführung kümmern mussten. Vielmehr ist die Ausführung ihres Programmcodes nun gekapselt und kann als Paket in die Serverless-Plattform geladen und verändert werden.

Der Kunde konnte durch die kurze Evaluationsphase und die schnelle Implementierung Entwicklungszeit sparen und sich auf die Elemente Usability / Kommunikation des Fortschritts und Berechnung konzentrieren. Damit wurden die Einschränkungen der ursprünglichen Architektur durch ein Redesign umgehend abgestellt.