Internationalisierung hat im e-Commerce eine besondere Relevanz. Da die meisten Shops in mehreren Ländern präsent sein sollen, wird dies für die Architektur der Software zur Herausforderung: Zum einen sollen die meisten Features in allen Ländern verfügbar sein, zum anderen gelten für jedes Land spezifische Anforderungen.
Das eCommerce Framework Spryker begegnet dieser Problemstellung mit einer besonderen Herangehensweise, die im Vortrag „Internationale Expansion mit dem (e)Commerce Framework Spryker“ vorgestellt wird.
3. Was ist Spryker?
• Lizenzpflichtiges (e)Commerce Framework
• Keine Out of the Box Software
• Weiterentwicklung von Yves&Zed
• Erfahrungen aus verschiedenen Ventures
4. 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
5. Die Spryker-Architektur
• Separate Applikationen
• Performantes und skalierbares
Front-End Yves
• Back-End Zed verantwortlich für
Geschäftslogik und
Bestellverarbeitung
6. Internationalisierung
• Business will oftmals schnell in mehrere Länder
expandieren
• Globale Features vs. länderspezifische
Anforderungen
• Schnelle Implementierung vs. Wartbarkeit
7. 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();
}
...
8. 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
9. 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
10. 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();
11. I18N mit Spryker - Überschreibungslogik
Factory prüft anhand von Länderkürzel ob spezielle Implementierung
vorhanden:
namespace SprykerCoreZedCart;
class Calculator
{
public function calculate($items) {...}
}
namespace SprykerProjectZedCartFR;
class Calculator
{
public function calculate($items) {...}
}
FR-Feature
überschreibt
Core-Feature
12. 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