internationale expansion mit dem (e)commerce framework spryker
TRANSCRIPT
Was ist Spryker?
• Lizenzpflichtiges (e)Commerce Framework
• Keine Out of the Box Software
• Weiterentwicklung von Yves&Zed
• Erfahrungen aus verschiedenen Ventures
Was ist Spryker?
• Zielgruppe: Größere Unternehmen bzw. Start-Ups
• Gängige Lösungen nicht performant und schwierig auszubauen
• Erweiter- und austauschbare Komponenten
• Leichtgewichtig und CleanCode
Die Spryker-Architektur
• Separate Applikationen
• Performantes und skalierbares Front-End Yves
• Back-End Zed verantwortlich für Geschäftslogik und Bestellverarbeitung
Internationalisierung
• Business will oftmals schnell in mehrere Länder expandieren
• Globale Features vs. länderspezifische Anforderungen
• Schnelle Implementierung vs. Wartbarkeit
I18N - Option 1
Eine Codebase für alle Stores
• Vorteile: Neue Features sind global verfügbar
• Nachteile: Schwer zu wartende IF-ElSE Ketten bzw. SWITCHES
...
if ($store === `DE`) { $this->doSomething();
} elseif ($store === `FR`) { $this->doSomethingElse();
}
...
I18N - Option 2
Eine Codebase für jeden Store
• Vorteile: Länder sind leicht zu individualisieren
• Nachteile: Repositories entwickeln sich auseinander, verschiedene Entwicklerteams, neue Features, die in jedem Land verfügbar sein sollen, müssen einzeln ausgerollt werden
I18N mit Spryker - Grundlagen
• Alle Stores teilen sich die selbe Codebase
• Jeder Store hat seine eigene Datenbank -> Vermeidung von Komplexität, nur eine Währung pro Datenbank
• Überschreibungslogik für länder-spezifische Shops
I18N mit Spryker - Factory
• Instanziierung von Klassen mit Spryker-Factory
• Projekt-Code überschreibt Core-Code
• Länderspezifischer Code überschreibt Projekt-Code
$calculator = $this->factory->createCalculator();
I18N mit Spryker - Überschreibungslogik
Factory prüft anhand von Länderkürzel ob spezielle Implementierung vorhanden:
namespace SprykerCore\Zed\Cart;
class Calculator {
public function calculate($items) {...} }
namespace SprykerProject\Zed\CartFR;
class Calculator {
public function calculate($items) {...} }
FR-Feature überschreibt Core-Feature
I18N mit Spryker - Fazit
• Keine IF-ELSE Verkettungen -> höhere Wartbarkeit
• Mehr Übersicht, länderspezifische Features in der Verzeichnisstruktur vom Projekt verankert
• Normale Features sofort in allen Ländern verfügbar
• Ein Entwicklerteam kann mehrere Länder verwalten