tva
← Insights

Multi-Marktplatz-Datenpipelines: Verkäuferkonten über Regionen hinweg verwalten

Eine Amazon-Datenpipeline von einem auf drei Marktplätze auszuweiten bedeutet nicht, denselben Code dreimal auszuführen. Die Marktplätze in den USA, Japan und Deutschland unterscheiden sich grundlegender als nur durch Zeitzonenverschiebungen: Bei demselben Berichtstyp variieren die Berichtsformate je nach Marktplatz. Für Währungen muss ausdrücklich festgelegt werden, wo die Umrechnung erfolgt und zu welchem Kurs. Datumskonventionen sind sowohl in API-Antworten als auch in heruntergeladenen Dateien uneinheitlich. Und die Kontostrukturen – vereinheitlicht oder regional – bestimmen, welche Zugangsdaten Zugriff auf welche Daten ermöglichen.

Die meisten Teams entdecken diese Unterschiede nacheinander: Sie entwickeln für einen Marktplatz und stoßen beim Ausbau für den nächsten auf jede Abweichung einzeln. Produktiver ist es, von Anfang an für mehrere Marktplätze zu planen, selbst wenn zunächst nur einer angebunden wird. Der zusätzliche Aufwand für eine konfigurationsgesteuerte Architektur ist gering. Eine fest auf einen Marktplatz zugeschnittene Implementierung nachträglich für weitere Regionen umzubauen ist dagegen teuer.


Worin sich Marktplätze tatsächlich unterscheiden

Die Verfügbarkeit von Berichten variiert stärker, als die SP-API-Dokumentation vermuten lässt. Manche Berichtstypen sind auf allen Marktplätzen verfügbar, andere nur in Nordamerika, nur in der EU oder nur an bestimmten regionalen Endpunkten. Berichte zur Einhaltung von Umsatzsteuervorschriften beispielsweise sind auf EU-Marktplätze beschränkt und haben in Nordamerika keine Entsprechung. Umgekehrt haben einige FBA-Bestandsberichte auf Amazon.co.jp andere Spaltenstrukturen als auf Amazon.com: Dieselbe Berichtstyp-ID liefert je nach Marktplatzendpunkt unterschiedliche Schemata.

Die Verarbeitung von Datum und Uhrzeit ist eine ständige Quelle schwer erkennbarer Fehler. Amazons API liefert Zeitstempel in UTC, heruntergeladene Berichtsdateien verwenden für Datumsspalten jedoch häufig die lokale Zeitzone des Marktplatzes, ohne dies ausdrücklich anzugeben. Bei Berichten, die die lokale Zeit verwenden, enthält eine Datei für den japanischen Marktplatz Datumsangaben in JST; derselbe Bericht für Deutschland verwendet je nach Jahreszeit CET oder CEST. Andere Zeitangaben, etwa die Spalte posted-date-time im V2-Abrechnungsbericht, sind dagegen als UTC dokumentiert. Code, der alle Datumsspalten als UTC behandelt, führt bei der Aggregation nach Datum zu Verschiebungen um einen Tag. Diese sind schwer zu erkennen, weil die Daten oberflächlich korrekt aussehen.

Währungen sind der Unterschied mit den größten Auswirkungen auf den Betrieb. Amazon rechnet in der lokalen Marktplatzwährung ab: USD für die USA, JPY für Japan und EUR für Deutschland. Speichert eine Pipeline Geldbeträge ohne ausdrückliche Währungskennzeichnung, entsteht ein Datenqualitätsproblem, das mit der Zeit wächst. Bis der Fehler auffällt, müssen möglicherweise Daten aus mehreren Monaten korrigiert werden. Ein geeigneter Entwurf speichert den Währungscode neben jedem Geldbetrag und verschiebt die Umrechnung auf die Analyse, statt sie fest in der Extraktionsschicht zu verankern.


Konfigurationsgesteuerte Architektur

Das Herzstück einer wartbaren Datenpipeline für mehrere Marktplätze ist eine Konfigurationsschicht, die alle marktplatzspezifischen Eigenschaften an einer Stelle erfasst, statt bedingte Logik im gesamten Extraktionscode zu verteilen. Jeder Marktplatz erhält einen Konfigurationsblock mit Endpunkt, Verweisen auf Zugangsdaten, lokaler Zeitzone, Währungscode, unterstützten Berichtstypen und gegebenenfalls Formatabweichungen vom Referenzschema.

Der Extraktionscode selbst wird unabhängig vom Marktplatz: Er liest die Konfiguration des Zielmarktplatzes, wählt die passenden Zugangsdaten, wendet die richtige Zeitzone auf Datumsfelder an und kennzeichnet alle Geldbeträge mit dem konfigurierten Währungscode. Für einen weiteren Marktplatz genügt ein zusätzlicher Konfigurationsblock mit den jeweiligen Formatabweichungen; die Extraktionslogik bleibt unverändert.

Dieser Ansatz hat einen weiteren Vorteil: Er macht das Datenmodell ausdrücklich sichtbar. Sind Währungscode, Zeitzone und Abweichungen der Berichtsformate in einer Konfigurationsdatei dokumentiert statt in Codekommentaren verborgen, sind sie für alle zugänglich, die mit der Pipeline arbeiten – nicht nur für den Entwickler, der die jeweiligen Sonderfälle ursprünglich behandelt hat.


Marktplatzspezifischer YAML-Zustand

Die für Pipelines mit einem Marktplatz beschriebene YAML-Zustandsverwaltung lässt sich problemlos auf mehrere Marktplätze übertragen. Die Struktur der Zustandsdateien erfordert jedoch eine bewusste Entscheidung: eine Datei pro Marktplatz oder eine Datei mit marktplatzbezogenen Abschnitten.

Separate Zustandsdateien pro Marktplatz sind klar vorzuziehen. Sie erlauben unabhängige Pipeline-Läufe ohne konkurrierende Zugriffe auf dieselbe Zustandsdatei. Die Extraktion eines Marktplatzes lässt sich einfach zurücksetzen oder erneut ausführen, ohne andere zu beeinflussen. Außerdem passen sie zu einer Verzeichnisstruktur, die extrahierte Dateien nach Marktplatz ordnet. Ein Zustandsverzeichnis mit einer YAML-Datei pro Marktplatz – state/us.yaml, state/jp.yaml, state/de.yaml – ist selbsterklärend, anders als eine einzelne kombinierte Datei mit verschachtelten Abschnitten.

Das Schema der Zustandsdatei sollte die Marktplatzkennung ausdrücklich enthalten, auch wenn sie bereits aus dem Dateinamen hervorgeht. Werden die Dateien zur Fehlersuche oder für ein Audit untersucht, beseitigt diese Redundanz Zweifel darüber, zu welchem Marktplatz die geprüften Daten gehören.


Berichtsdefinitionen in einem zentralen Register

Ein Berichtsregister – eine strukturierte Definition jedes unterstützten Berichtstyps mit ID, Verfügbarkeit je Marktplatz, erwartetem Schema und etwaigen Formatabweichungen – ist die Investition mit dem größten Nutzen für eine Datenpipeline über mehrere Marktplätze. Ohne ein solches Register bleibt das Wissen darüber, welche Berichte existieren, wie sie sich zwischen Marktplätzen unterscheiden und was ihre Spaltennamen bedeuten, in den Köpfen der Entwickler, die die Pipeline aufgebaut haben.

Das Register erfüllt mehrere Aufgaben zugleich. Es ist die maßgebliche Datenquelle für Berichtstyp-IDs, die Amazon gelegentlich ändert oder abkündigt. Es dokumentiert Schemaabweichungen je Marktplatz und erleichtert damit die programmatische Behandlung der Unterschiede, statt verstreute Bedingungen im Code zu verwenden. Es ermöglicht Validierung: Jede heruntergeladene Datei lässt sich gegen ihr erwartetes Schema prüfen. Abweichungen werden zur Untersuchung markiert, statt die Datei ungeprüft auf die Festplatte zu schreiben.

Das Register vereinfacht auch die Lückenanalyse. Mit einer Liste der erwarteten Berichtstypen und den YAML-Zustandsdateien pro Marktplatz kann ein einfaches Skript feststellen, welche Berichte fehlen, veraltet sind oder wiederholt Fehler verursacht haben – für alle Marktplätze gleichzeitig. Ohne Register erfordert diese Analyse ein Verständnis des Extraktionscodes, statt nur eine Datenstruktur abzufragen.


Betriebsaspekte bei wachsendem Umfang

Die parallele Extraktion über drei Marktplätze bringt zeitliche Anforderungen mit sich, die bei einem einzigen Marktplatz nicht auftreten. Der Workflow mit zwei Durchläufen – abends anfordern, morgens herunterladen – muss berücksichtigen, dass „abends“ und „morgens“ für die Marktplätze in den USA, Japan und Deutschland unterschiedlichen UTC-Zeiten entsprechen. Ein einzelner geplanter Lauf, der für Deutschland passt, fordert Berichte für Japan zu einem ungünstigen Zeitpunkt an und kann in den USA die Tagesgrenze des Geschäftstags verfehlen.

Die praktische Lösung ist eine lokale Zeitplanung pro Marktplatz: Jede Pipeline läuft nach einem Zeitplan, der sich an ihrem jeweiligen Geschäftstag orientiert, statt nach einem globalen Zeitplan. Das erhöht die Komplexität im Betrieb, verhindert aber zeitzonenbedingte Race Conditions, die sporadische Datenlücken verursachen.

Aufruflimits sind ein weiterer Betriebsaspekt, der bei mehreren Marktplätzen stärker ins Gewicht fällt. Die SP-API legt für jede Kombination aus Verkäufer und Anwendung Aufruflimits pro API-Operation fest, und ein Verkäuferkonto kann mehrere Marktplätze innerhalb einer Region abdecken. Eine Pipeline, die für drei Marktplätze parallel viele Berichte anfordert, kann gemeinsame Kontingente aufbrauchen, was bei einem einzelnen Marktplatz nicht passiert. Eine ausdrückliche Erfassung der Aufruflimits – pro Verkäufer, Anwendung und API-Operation, nicht pro Marktplatz – verhindert die sonst schwer zu diagnostizierenden Drosselungsfehler.


Weiterführende Beiträge

Weiterführende Beiträge