Data2Day, Karlsruhe, September 2022, Mario-Leander Reimer (@LeanderReimer, Principal Software Architect bei QAware).
== Dokument bitte herunterladen, falls unscharf! Please download slides if blurred! ==
Daten sind der neue Brennstoff für moderne digital Produkte. Aber auch Daten müssen zunächst gefördert und anschließend aufwendig raffiniert und angereichert werden, bevor sie wirklich nutzbringend verwendet werden können. Die hierfür verwendeten ETL- und ELT-Ansätze und Tools sind dabei häufig entweder proprietär oder extrem individuell. Die Wartbarkeit und Skalierbarkeit solcher Ansätze ist leider beschränkt.
Dieser Vortrag beschreibt die Evolution und Migration einer individuellen Datenversorgung auf Basis von Jenkins und einzelnen Maven-Projekten, hinzu flexibel orchestrierbaren Kubernetes-nativen Datenpipelines auf Basis von Argo Workflows und Events zur Orchestrierung.
6. ■ In einem Whitepaper haben wir Ende 2018 zunächst die Modernisierung und Cloudifizierung des
kompletten Systemverbunds beschrieben. Migration in 3 Phasen:
– Enabling (Infrastruktur, CI/CD)
– Microservice Decomposition und Service Migration
– Data Decomposition, Solr und Loader Migration
■ Natürlich gab es unvorhergesehene Herausforderungen:
– Zunehmende Datenmenge machte kurzfristige Bedatungs-Jobs quasi unmöglich
– Datenqualität der Quellsysteme ist häufig suboptimal und wird erst zu spät erkannt
– Instabilitäten der On-Premise Infrastruktur sorgen für schlechte Availability
– EOL der Server-Hardware der Solr und Loader Services verschärft die Dringlichkeit
– AWS EC2 Instanzen mit AMIs zur Loader Orchestrierung funktioniert, führt jedoch zu langen
Feedback Cycles und schlechter Dev-Prod Parity
– Betriebsverantwortung und TLM für self-hosted Services (z.B. Jenkins) ist aufwändig
Seit dem ist viel passiert …
QAware | 6
10. Argo Workflow im Überblick
QAware | 10
■ Open source Container-native Workflow Engine zur parallelen Job Orchestrierung mit Kubernetes
■ Ermöglicht die einfache und schnelle Ausführung von rechenintensive Jobs für maschinelles Lernen,
Datenverarbeitung und ETL Jobs, CI/CD sowie Infrastructure Automation auf Kubernetes.
■ Definition der Workflows erfolgt über Kubernetes CRDs (Custom Resource Definition).
– Jeder Schritt einer Workflow Definition ist dabei ein Container
– Komplexe Workflows können über eine Sequenz von Schritten einfach abgebildet werden, oder
aber über eine DAG (Directed Acyclic Graph)
– Workflows können parametrisiert werden, über Artifacts können Ergebnisse zwischen Steps
ausgetauscht und übergeben werden
– Zahlreiche Features wie Schleifen, Conditionals, Parallelität, Synchronisation, Retries, Templates,
Lifecycle Hooks werden unterstützt
■ Einfache Installation via Plain YAML oder Helm Chart