​​Amazon OpenSearch Service optimieren – ohne erhöhte Kosten

Wie wir einem MarTech-Unternehmen geholfen haben, ihre betriebliche Effizienz zu erhöhen und dabei die Kosten zu senken – mit Amazon OpenSearch Service
08.12.2021

Das Projekt

Um ein Marketing-Programm zum Erfolg zu führen, muss eine kontinuierliche Analyse der Leistungskennzahlen erfolgen, damit fundierte Entscheidungen zu Kooperationen und Kampagnen getroffen werden können. Und wenn man ein Global Player im Digitalen Marketing ist, benötigt man leistungsfähige und skalierbare Systeme, um die täglich anfallenden riesigen Datenmengen analysieren zu können. kreuzwerker wurde beauftragt, ein Analysesystem auf Basis von Amazon OpenSearch Service (Nachfolger von Amazon Elasticsearch) zu bewerten, mögliche Kostenoptimierungen zu identifizieren und zu Verbesserungen in Betrieb und Wartung zu beraten.

Das Problem

Unser Kunde bietet umfangreiche Tools zum Monitoring von Leistungsindikatoren innerhalb von Marketingkampagnen – Klicks, Page Impressions, Umsatzraten etc. Das Projekt fokussierte das Tracking- und Analysesystem, das kundenorientierte Berichte über Klickraten und Page Impressions liefert. Sämtliche Daten werden hier über Apache Kafka in das System gestreamt, durch Spring Boot Microservices angereichert, in einem Elasticsearch-Cluster auf Amazon OpenSearch Service indiziert und regelmäßig durch Spark-Aufträge aggregiert. Die Verwendung von Elasticsearch als Analysetool führte zu einer guten und stabilen Performance, insbesondere in Zeiten mit hoher Last wie am Black Friday. Amazon OpenSearch Service vereinfachte zudem die Wartung des Clusters in der Anfangsphase erheblich, obwohl das Team nur begrenzte Erfahrung damit hatte.

Das Ziel des Projekts bestand darin, hierauf aufzubauen und das System auf eine höhere Ebene zu bringen. Folgende Themen wurden behandelt:

  • Überprüfung der aktuellen Cluster-Konfiguration; Ermittlung möglicher Ineffizienzen und Kosteneinsparungen
  • Verbesserung der Wartungsautomatisierung, insbesondere für die Erstellung von Staging-Umgebungen für Tests und QA, anstatt die AWS-Konsole für alle Vorgänge zu verwenden
  • Evaluierung des Index- und Abfrage-Set-ups, um Auswirkungen von Aggregationsaufträgen auf die Abfragelatenz zu verringern, die gelegentlich die Benutzererfahrung beeinträchtigten
  • Beratung zu zeitnahen, reproduzierbaren Benchmarking-Experimenten in Elasticsearch, um alternative Abfragen und Einstellungen zu bewerten.

Die Lösung

Cluster-Konfiguration

Zunächst überprüften wir die Einstellungen des Amazon OpenSearch Service, werteten Cluster- und Nutzungsstatistiken aus und validierten die Kapazitätsplanung. Es ergaben sich kostensparende Optimierungen von bis zu 10.000 Euro monatlich. Wir stellten fest, dass die Elasticsearch-Instanztypen bezüglich CPU und Speicherkapazität überdimensioniert waren. Deshalb schlugen wir Cluster-Konfigurationen vor, die den tatsächlichen Bedürfnissen besser entsprachen, sowie Richtlinien für ihre iterative Evaluierung ohne Beeinträchtigung des Produktionssystems. Durch Änderungen des Abonnementmodells und der Speicherkonfiguration (Verkleinerung von EBS und Verwendung von UltraWarm) könnten weitere Einsparungen erzielt werden. Zudem könnten die empfohlenen Optimierungen hinsichtlich der (Ausfall-)Sicherheit des Clusters versteckte Kosten von Betriebsunterbrechungen verringern.

Wartung

Infrastructure as Code ist ein wesentlicher Bestandteil von DevOps und ein kreuzwerker Best Practice. Wir stellten unserem Kunden Terraform-Module zur Verfügung, um in einer bestimmten Umgebung einen Amazon-OpenSearch-Cluster aufzubauen, zu aktualisieren und abzubauen. Die Vorlage enthielt eine Lambda-Funktion zum Booten von Daten aus Snapshots, die in Amazon S3 gespeichert sind, und automatisierte die Erstellung von ephemeren Clustern für Leistungstests und QA.

Zudem berieten wir unseren Kunden zu Verbesserungen bei der Verwaltung und Aufbewahrung von Daten und schlugen vor, das selbst erstellte Skript durch die integrierte Amazon-OpenSearch-Funktion Index State Management zu ersetzen. Diese beinhaltet ausgefeiltere Rollover- und Löschrichtlinien – und es gibt ein Skript weniger zu pflegen.

Indizierung und Abfrage

Das Problem der Abfragelatenz gingen wir an, indem wir zunächst das Index-Set-up überprüften. Wir diskutierten gemeinsam mit dem Kunden eine alternative Sharding-Strategie für seine indexlastige Anwendung und empfahlen größere, gleichmäßig verteilte Shards, um die durch die Spark-Aufträge verursachte Last besser bewältigen zu können. Weitere kleine aber wirkungsvolle Änderungen an der Indexzuordnung und den Einstellungen könnten zusätzliche Verbesserungen bringen. Anschließend diskutierten wir alternative Optionen, die die Auswirkung der Aufträge auf die Clusterleistung verringern könnten. Diese reichten von der Identifizierung besserer Zeitfenster für ihre Ausführung bis hin zum Überdenken des Aggregationsprozesses mithilfe von Elasticsearch-Funktionen wie Roll-ups oder Transformationen.

Benchmarking

Wir erstellten ein Runbook, um Benchmarking-Experimente in Amazon OpenSearch teilweise zu automatisieren und das Vertrauen in die Ergebnisse zu erhöhen. Vor dem Hintergrund unserer Erfahrungen und Best Practices passten wir das Runbook an das Click- and-Impression-Analysesystem an und überprüften im Team, ob Wiederholbarkeit und Reproduzierbarkeit der Methodik gegeben sind.

Das Ergebnis

Zweifellos hat unser Kunde mit Elasticsearch als Grundbaustein seines Analysesystems digitaler Marketingdaten die richtige Wahl getroffen. Der Einsatz von Amazon OpenSearch Service beschleunigte die Markteinführung, ließ aber Raum für Optimierungen. Als zertifizierter AWS- und Elasticsearch-Partner arbeitete kreuzwerker gemeinsam mit dem Kunden an der Steigerung der Betriebs- und Kosteneffizienz des Systems. Letztendlich konnten wir veritable Konfigurations- und Prozessoptimierungen, die die AWS-Kosten nahezu halbieren sollten, sowie Tools zur verbesserten Automatisierung und zu transparenteren Wartungseingriffen erarbeiten.