TechDivision M2IF - Magento 2 Import Framework mit Multithreading

Nicht nur beim initialen Setup eines Shop-Projektes spielen Importe bzw. Importmöglichkeiten eine sehr wichtige Rolle. Unterschiedlichste Produktdaten inkl. Medien wie z.B. Bilder und/oder Videos müssen in den Shop übertragen werden. Gerade bei umfang-reichen Produktsortimenten bzw. einer sehr großen Anzahl an SKUs kann ein solcher Import durchaus eine größere Herausforderungen darstellen.

Magento bietet wie bereits in der Vergangenheit auch in der aktuellen Version einen Importer an, der grundsätzlich macht was er soll. Wenn man jedoch mit einer 6- oder gar 7-stelligen Anzahl an SKUs konfrontiert wird, kann es hier mit Bordmitteln schon zu Problemen kommen – zumindest die Performance ist dann häufig nicht mehr so, wie man sich das gerne wünschen würde.

Bereits in der Vergangenheit gab es hierzu verschiedenste Lösungsansätze und auch wir haben bei unserer Arbeit mit Magento in der Vergangenheit – abhängig von den genauen Anforderungen des Kunden – unterschiedliche Ansätze verfolgt.

Aufgrund der Learnings zahlreicher Magento-Projekte sind wir zur Auffassung gelangt, dass es aus verschiedenen Gründen sinnvoll ist, für Magento 2 ein komplett neues, eigenständiges und extrem leistungsfähiges Import Framework (M2IF) zu entwickeln. Bei der Entwicklung legen wir besonderes Augenmerk auf

  • signifikante Performanceverbesserung
  • geringer Speicherverbrauch
  • einfache Wartung und Erweiterung
  • Unterstützung von Multithreading/Multiprocessing

Aus unserer Sicht sind dies die entscheidenden Faktoren um das Framework auch in größeren Projekten erfolgreich einsetzen zu können.



Wie bereits zuvor angedeutet, entwickeln wir, im Gegensatz zu bestehenden Ansätze, das M2IF nicht als Magento 2 Extension, sondern als eigenständige Library, die als Ausgangsbasis für eigene Produkte oder Projekte eingesetzt werden kann. Um das M2IF möglichst generisch, leichtgewichtig und somit effizient zu gestalten, haben wir, soweit möglich, auf Abhängigkeiten zu anderen Libraries und Frameworks verzichtet. Stattdessen stellt das M2IF unabhängige Komponenten, z. B. für die verschiedenen Produkttypen zur Verfügung, die je nach Projekt kombiniert und über Composer installiert werden können.

Damit die in großen Projekten zumeist im Überfluss vorhandenen Systemresourcen effizient genutzt werden können, sehen wir insbesondere die Möglichkeit das M2IF auch in einem multithreaded/multiprozess Umfeld verwenden zu können als eine grundlegenden Voraussetzung. Aus der Möglichkeit der Parallelisierung ergeben sich aber auch spezielle Anforderungen, wie z. B. die Synchronisierung von parallel laufenden Tasks, um jederzeit die Kontrolle über den Import-Prozess zu behalten. Auch diese Anforderungen werden wir bei der Entwicklung des M2IF berücksichtigen.

Basierend auf dem M2IF planen wir auf Basis unserer Application-Server-Technologie appserver.io eine Plattform entwickeln, die insbesondere den Import großer Datenmengen optimiert und dafür nochmals eine signifikante Verbesserung der Import-Performance mitbringen wird.

Aktuell kann das M2IF mit dem M2IF Simple Console Tool, einer einfache Kommandozeilen-Implementierung, für den Import von Produktdaten in allen Magento 2 Projekten ab Version 2.1.2, verwendet werden. Das Tool zeigt, wie mit einfachsten Mitteln eine Import-Applikation implementiert kann. Für weitergehende Infos empfiehlt sich ein Blick auf das entsprechende Repository, das wir ebenfalls auf Github veröffentlicht haben.

Performance- & Speichervergleich

Performance ist nicht nur im Frontend ein wichtiger Faktor. Insbesondere bei umfang-reicheren Produktkatalogen stellt zudem auch die Importgeschwindigkeit ein sehr wichtiges Leistungskriterium dar um den Katalog in angemessener Zeit mit aktuellen Produktdaten versorgen zu können.

Der nachfolgend skizzierte Performancevergleich zwischen dem Magento Standard-Importer und M2IF sollte dabei lediglich als erste ganz grobe Orientierung dienen. Die von uns gemessenen Werte erheben dabei keinen Anspruch auf allgemeine Gültigkeit. Zudem sollte berücksichtigt werden, dass M2IF aktuell noch nicht den kompletten Funktions-umfang des Standard-Importers abdeckt. Da allerdings die wichtigsten Features bereits enthalten sind, eignet sich der Vergleich um einen ersten Eindruck der Möglichkeiten des M2IF zu erhalten.

Für den Vergleich benutzen wir eine gewöhnliche Magento 2 CE v2.1.2 mit den Magento Beispieldaten. Da M2IF derzeit die Produkttypen „Downloadable“ sowie „Grouped Product“ noch nicht unterstützt, wurden diese aus dem CSV-File entfernt, womit sich die Importdatei wie folgt darstellt:

  • 23 custom attributes
  • 1 bundle product
  • 147 configurable products
  • 1.891 simple products

Diese wurden von uns über den Standard CSV-Export exportiert und in 4 Bunches mit jeweils rund 500 Produkten aufgeteilt. Um den eigentlichen Importprozess zu starten nutzen wir das M2IF Simple Console Tool.

Um den Standard-Import von Magento 2 auszuführen nutzen wir eine einfache M2 Extension, die das Magento 2 Kommandozeilentool erweitert. Diese Extension wurde von CedricBlondeau implementiert und steht auf Github zur Verfügung.

Bevor wir mit dem Import (sowohl Magento 2 als auch M2IF) beginnen, entfernen wir bereits importierte Bilder da der mehrmalige Import der gleichen Images die Performance negativ beeinflusst.

Ergebnis

Der Test wurde von uns auf einem MacBook Pro mit den folgenden Leistungsdaten durchgeführt:

  • Intel Core i7 2.3 GHz
  • 8 GB RAM
  • 256 GB HDD

Bei Verwendung von PHP 5.6 + MySQL 5.6.34 wurde dabei folgende Ergebnisse erzielt:



Neben der Performance stellt die Speichernutzung in manchen Fällen ebenfalls ein wichtiges Kriterium beim Import dar – insbesondere bei Projekten mit mehr als 100.000 Produkten müssen beide Parameter entsprechend berücksichtigt werden.

Wenn wir die Beispieldaten wie oben beschrieben importieren, liegt die maximale Speichernutzung in unserem Test bei 38.1 MB wohingegen der Standard-Import von Magento 149.4 MB benötigt. Dabei ist es im Falle von M2IF irrelevant wie groß die CSV Datei ist.

Wie bereits erwähnt sollte bei diesem ersten Vergleich immer berücksichtigt werden dass einige Funktionalitäten bei uns noch nicht vorhanden sind. Hierzu zählt auch die Datenvalidierung, die Performance kostet.

Dennoch sind wir sehr optimistisch, mit unserem Ansatz auf das „richtige Pferd“ zu setzen.

Aktueller Projektstatus

Derzeit befindet sich unser Import Framework im Alpha-Stadium. Daher würden wir dringend empfehlen, unser Tool aktuell noch nicht im Livebetrieb einzusetzen. Den aktuellen Stand haben wir auf Github unter folgendem Link veröffentlicht: https://github.com/techdivision/import

Feedback und Mitarbeit ist dabei natürlich jederzeit gerne gesehen!

Bislang haben wurden von uns die nachfolgenden Funktionalitäten sowohl für Magento 2 EE als auch CE implementiert:

  • Delete/Replace Import Mode
  • Simple Products
  • Configurable Products
  • Bundle Products
  • Product Relations
  • Media Gallery
  • Inventory
  • Relation with existing Categories
  • Relation with existing Websites
  • Url Rewrites

An den folgenden Features arbeiten wir derzeit:

  • Add/Update Import Mode
  • Import Scheduled Product Updates
  • Customizable Options
  • Product Reviews
  • Valididation
  • Fine Grained Error Handling
  • Extended Logging
  • RESTFul Webservice
  • Archiving (vergleichbar mit der Magento Standardfunktionalität)
  • History (angehängt an die standard Magento Import Historie)
  • Seamless Magento 2 Backend Integration
  • Tier Prices

Mit kommenden Versionen unseres M2IF werden wir zudem Importertypen für folgendes bereitstellen:

  • Categories
  • Product Attributes
  • Customers
  • Advanced Pricing

Darüberhinaus planen wir für die Zukunft zudem entsprechende Export-Funktionalitäten.

Neueste Posts

Die größten Akquisitionen von Google, Amazon und Apple und einige Learnings daraus!
Neue Ausgabe des eStrategy-Magazin verfügbar 360 Stories – ein Spiel für Teams Die B2B E-Commerce Pyramide
Digital Storytelling - ein Kurztrip in die Kreativität und wieder zurück

Archiv

Dezember November Oktober September August Juli Juni Mai April März Februar Januar
Dezember November Oktober September August Juni Mai April Februar Januar
Dezember November Oktober September August Juli Juni März Februar
Oktober September August Juli Juni Mai April März Januar
Dezember November Oktober September August Juli Mai April Februar
November Oktober September April Februar
Dezember September Juni Mai Februar Januar
Juli Mai April März Februar Januar
September August Juli März
Oktober September Juli Juni Mai März Februar
Februar

Kategorien

E-Commerce Unternehmensmeldung Online-Marketing Magento Commerce Neos TYPO3 SEO SEA Usability Digitale Transformation Agile Projektentwicklung Corporate Web Analytics Künstliche Intelligenz Mobile Marketing Social Media Veranstaltungen Research & Development

Unser Herz schlägt online -
Deins Auch?


Wir stellen uns jeden Tag neuen Heraus-forderungen des Online-Business – immer auf der Suche nach spannenden Lösungs-ansätzen und sinnvollen Technologien. Eine Vielzahl namhafter Kunden vertrauen auf das Online Know-how „Made in Kolbermoor / Rosenheim und München“. 

Lust auf TechDivision? Hier geht zu unseren Stellenanzeigen

eStrategy Magazin


Erfahren Sie mehr zu den Themen E-Commerce, Online-Marketing, Mobile, Projektmanagement, Webentwicklung und E-Recht in unserem kostenlosen Online-Magazin.

Jetzt herunterladen!

Whitepaper:
Agiles Projektmanagement


In unserem kostenlosen Whitepaper versuchen wir Basiswissen und Erfahrungen aus vielen Jahren täglicher Projekt- und Unternehmenspraxis zu vermitteln, mit denen Sie die Anforderungen des Arbeitslebens von Heute besser bewältigen können.

Jetzt herunterladen!

Autor

Haben wir Ihr Interesse mit unserem Blog geweckt?

Wir sind der richtige Partner für anspruchsvolle Projekte im Bereich E-Commerce, Corporate Web, Consulting und Online-Marketing. Sprechen Sie mit uns!

Autor

Josef Willkommer Geschäftsführer / CMO