VitaminExpress
Learnings aus einem Magento-Enterprise-Projekt
2
Themen
 Projektübernahme
 Verwaltung der Aufgaben
 3rd-Party-Extensions
 Geotargeting
 Bestellungsabwicklung
 Back...
3
Online-Agentur LimeSoda
 Gründung 2002 in Wien
 25+ fix Angestellte
 5 Magento-EntwicklerInnen
 4 Magento Certified ...
Der Kunde
VitaminExpress
5
VitaminExpress
 Seit 1990 im Geschäft
 Online & Katalog
 Nahrungsergänzungsmittel
 Mehr als 100.000 Kunden
 Mehr al...
6
VitaminExpress
www.vitaminexpress.org
Projekt-Eckdaten
Fakten, Fakten, Fakten
8
Eckdaten
 > 3500 Stunden
 Bis zu 5 LS-Backend-Entwickler gleichzeitig
 Plus externe Firmen
 Anbindungen an Amazon, 4...
Projektübernahme
„Wir sind zu 90% fertig“
10
Projektübernahme
 Laufendes Entwicklungsprojekt übernommen
 Keine Dokumentation, keine Git-History
 Zugriff auf Teil...
1111© https://economicscenter.org/media/416211/businesswoman.jpg
12
Projekt-Übernahme
 „Never trust a foreign issue tracker“
 Projekt anhand klar abgrenzbarer Aufgaben
kennen lernen
 E...
Verwaltung der Aufgaben
„Issues, Issues, Issues“
© http://www.wpcentral.com/sites/wpcentral.com/files/postimages/15741/dev...
14
Issues, Issues, Issues
 Issue = Aufgabe / Feature / Bug
 Issues großzügig verwenden
 Priorisieren!
• vor dem Start
•...
3rd-Party-Extensions
„Der liebe Gott hat einen großen Tiergarten“
16
3rd-Party-Extensions
 Probleme:
 Sicherheitslücken
 Performance-Einbußen
 Missachtung von Best Practices
 Mangelnd...
Geotargeting
„Wo bin ich?“
18
Geotargeting
 a.k.a. „GeoIP“
 Zuordnung der geographischen Herkunft
anhand der IP-Adresse
 Eigenes GeoIP-Modul (basi...
19
20
Bestellungsabwicklung
„Don‘t mess with order statuses!“
22
Bestellungsabwicklung
40.000+
Personentage
23
Bestellungsabwicklung
 Automatisierte Verarbeitung von Orders
 Cronjobs
 Observer
 Cronjobs
 Lagerstand überprüfen...
24https://github.com/AOEmedia/Aoe_Scheduler 24
25
Bestellungsabwicklung
 Murphy‘s Law #1:
 „Anything that can be allocated wrong – will be
allocated wrong“
Fallbeispi...
26
Bestellungsabwicklung
 Murphy‘s Law #2:
 „Anything that can go wrong without a transaction –
will go wrong“
„Wir müs...
27
Bestellungsabwicklung
 Abläufe und Überlegung dahinter dokumentieren
Externe Dokumente vermeiden
Direkt im Backend e...
28
Bestellungsabwicklung
 „Don‘t mess with order states (and statuses)“
 Magento-Standard-States verwenden
 Externe Sys...
29
Backend-Anpassungen
Optimierungen in Callcenter-Prozessen
31
Backend-Anpassungen
 Backend-Grids
 Spalten hinzufügen / umsortieren / entfernen
 Adressdaten von anderen Tabellen b...
32
Backend-Anpassungen
 Callcenter-Funktionalität
 Store-Auswahl überspringen
 Letzte Bestellungen anzeigen
 Liste der...
33
Backend-Anpassungen
 Backend Grids in der Enterprise Edition
 Achtung bei zusätzlichen Joins:
SQL-Errors für eingesch...
34
Backend-Anpassungen
 Create New Order
Anpassungen sind mühsam:
 AJAX-Calls
 Nachladen von Blöcken
 Abhängigkeiten ...
Dev / Live
Handling unterschiedlicher Umgebungen
36
Dev / Live
 Mehrstufiger Prozess
 Entwicklung (Dev)
 Staging / Testing
 Live
 Bis zu 9 Umgebungen gleichzeitig
37
Dev / Live
 Git-Workflow
 master-Zweig immer deployfähig halten
 Feature-Branches, Stashing, Remote-Branches…
 Depl...
38
Dev / Live
 Aktuelle Files und Daten
Files aktualisieren:
Git & ugitsub & rsync
Datenbank rückportieren:
backportliv...
3939
40
Dev / Live
 Pro Umgebung zu berücksichtigen
 Automatismen abstellen?
 Importe / Exporte deaktivieren?
 Cronjobs dea...
41
Dev / Live
 Live-Systeme schützen
Extension:
LimeSoda_LiveGuard @ GitHub
Ergänzt LimeSoda_EnvironmentConfiguration
...
Monitoring
Überwachung der Systeme
43
Monitoring
 Aktive Überwachung von
 Server-Auslastung & HDD-Speicher
 Logs, Exceptions und Logs (Tabellen und Files)...
44
Monitoring
 Tools
Icinga
pnp4nagios
n98-magerun
Shell-Skripte
 Vielen Dank!
46
Kontakt
LimeSoda Interactive Marketing GmbH
Syringgasse 5, 1170 Wien, Austria
office@limesoda.com
www.limesoda.com
Nächste SlideShare
Wird geladen in …5
×

Learnings aus einem Magento-Enterprise-Projekt

1.627 Aufrufe

Veröffentlicht am

Wir haben im Rahmen des siebenten Magento-Stammtischs Wien unsere Erfahrungen aus unserem letzten Magento-Enterprise-Projekt geteilt.
In der Präsentation geben wir Tipps zu den Themen Projektübernahme, Verwaltung der Aufgaben, 3rd-Party-Extensions, Geotargeting, Bestellungsabwicklung, Backend-Anpassungen, Verwaltung mehrerer Entwicklungsumgebungen und Monitoring.

Veröffentlicht in: Internet
  • Als Erste(r) kommentieren

Learnings aus einem Magento-Enterprise-Projekt

  1. 1. VitaminExpress Learnings aus einem Magento-Enterprise-Projekt
  2. 2. 2 Themen  Projektübernahme  Verwaltung der Aufgaben  3rd-Party-Extensions  Geotargeting  Bestellungsabwicklung  Backend-Anpassungen  Dev / Live  Monitoring 40.000+ Personentage
  3. 3. 3 Online-Agentur LimeSoda  Gründung 2002 in Wien  25+ fix Angestellte  5 Magento-EntwicklerInnen  4 Magento Certified Developers 3 500+ Kunden 3.000+ Projekte 40.000+ Personentage
  4. 4. Der Kunde VitaminExpress
  5. 5. 5 VitaminExpress  Seit 1990 im Geschäft  Online & Katalog  Nahrungsergänzungsmittel  Mehr als 100.000 Kunden  Mehr als 5 Millionen ausgelieferte Produkte  Wechsel von Java-Lösung zu Magento 40.000+ Personentage
  6. 6. 6 VitaminExpress www.vitaminexpress.org
  7. 7. Projekt-Eckdaten Fakten, Fakten, Fakten
  8. 8. 8 Eckdaten  > 3500 Stunden  Bis zu 5 LS-Backend-Entwickler gleichzeitig  Plus externe Firmen  Anbindungen an Amazon, 4 PSPs, Fulfillment, Newsletter-System, …  143 Extensions (and counting)  > 370.000 Zeilen PHP-Dateien in app/code/local|community  760 Datenbank-Tabellen
  9. 9. Projektübernahme „Wir sind zu 90% fertig“
  10. 10. 10 Projektübernahme  Laufendes Entwicklungsprojekt übernommen  Keine Dokumentation, keine Git-History  Zugriff auf Teile des Issue-Trackers  Was ist der Status quo?
  11. 11. 1111© https://economicscenter.org/media/416211/businesswoman.jpg
  12. 12. 12 Projekt-Übernahme  „Never trust a foreign issue tracker“  Projekt anhand klar abgrenzbarer Aufgaben kennen lernen  Entwicklungsstand Modul für Modul evaluieren
  13. 13. Verwaltung der Aufgaben „Issues, Issues, Issues“ © http://www.wpcentral.com/sites/wpcentral.com/files/postimages/15741/devballmey.png
  14. 14. 14 Issues, Issues, Issues  Issue = Aufgabe / Feature / Bug  Issues großzügig verwenden  Priorisieren! • vor dem Start • nach dem Start  Kunde mit Leserechten = ok  Kunde mit Schreibrechten ≠ ok
  15. 15. 3rd-Party-Extensions „Der liebe Gott hat einen großen Tiergarten“
  16. 16. 16 3rd-Party-Extensions  Probleme:  Sicherheitslücken  Performance-Einbußen  Missachtung von Best Practices  Mangelnde/r Dokumentation/Support  Viele Extensions entsprechen den Anforderungen nicht zu 100%  Abwägen, ob Extensions sinnvoll sind! Installationsaufwand Einarbeitungs- und Anpassungsaufwand 16
  17. 17. Geotargeting „Wo bin ich?“
  18. 18. 18 Geotargeting  a.k.a. „GeoIP“  Zuordnung der geographischen Herkunft anhand der IP-Adresse  Eigenes GeoIP-Modul (basiert auf MaxMind)  Andere IPs testbar machen  Caching anpassen!
  19. 19. 19
  20. 20. 20
  21. 21. Bestellungsabwicklung „Don‘t mess with order statuses!“
  22. 22. 22 Bestellungsabwicklung 40.000+ Personentage
  23. 23. 23 Bestellungsabwicklung  Automatisierte Verarbeitung von Orders  Cronjobs  Observer  Cronjobs  Lagerstand überprüfen  Bestelldaten überprüfen  PDF-Rechnung generieren  Order für Fulfillment vorbereiten & exportieren  Order-Stati & Tracking-Codes importieren  Versand-Info, Capturing, Order abschließen, …
  24. 24. 24https://github.com/AOEmedia/Aoe_Scheduler 24
  25. 25. 25 Bestellungsabwicklung  Murphy‘s Law #1:  „Anything that can be allocated wrong – will be allocated wrong“ Fallbeispiele überlegen Anhand von Ablaufdiagrammen durchspielen Worst case überlegen Viel Zeit einplanen
  26. 26. 26 Bestellungsabwicklung  Murphy‘s Law #2:  „Anything that can go wrong without a transaction – will go wrong“ „Wir müssen aufpassen, dass nichts dazwischen funkt!“ „Nein!“ „Doch!“ „Oh!“ Race conditions! Transaktionen: $transaction = Mage::getModel('core/resource_transaction'); $transaction->addObject($invoice); $transaction->addObject($invoice->getOrder()); $transaction->save();
  27. 27. 27 Bestellungsabwicklung  Abläufe und Überlegung dahinter dokumentieren Externe Dokumente vermeiden Direkt im Backend erläutern  Nach Vereinfachungsmöglichkeiten suchen Fühlt es sich falsch an, dann ist es meistens auch falsch
  28. 28. 28 Bestellungsabwicklung  „Don‘t mess with order states (and statuses)“  Magento-Standard-States verwenden  Externe Systeme ignorieren die eigene Geschäftslogik Asynchrone Bestellstatusaktualisierungen Lösung:  3rd-Party-Extensions überschreiben oder  Bestellungen regelmäßig auf fehlgeleitete Stati überprüfen Wir überprüfen die Bestellungen im Rahmen der Order-Flow-Cronjobs
  29. 29. 29
  30. 30. Backend-Anpassungen Optimierungen in Callcenter-Prozessen
  31. 31. 31 Backend-Anpassungen  Backend-Grids  Spalten hinzufügen / umsortieren / entfernen  Adressdaten von anderen Tabellen beziehen  Einträge hervorheben
  32. 32. 32 Backend-Anpassungen  Callcenter-Funktionalität  Store-Auswahl überspringen  Letzte Bestellungen anzeigen  Liste der bestellbaren Produkte anpassen  Zusätzliche Kunden- und Produkt-Informationen  Link zum Kundenkonto hinzufügen  Reduzierung der AJAX-Loads bei Adressdaten
  33. 33. 33 Backend-Anpassungen  Backend Grids in der Enterprise Edition  Achtung bei zusätzlichen Joins: SQL-Errors für eingeschränkte User „ambiguous column names“ beseitigen  Grids allgemein  Performance-Verluste beim Joinen von Tabellen  Views helfen nur, wenn sich Daten selten ändern Werte vorberechnen Grid-Tabellen erweitern oder eigene Grid-Tabellen entwerfen => automatische Propagation erweitern!
  34. 34. 34 Backend-Anpassungen  Create New Order Anpassungen sind mühsam:  AJAX-Calls  Nachladen von Blöcken  Abhängigkeiten / Verbindungen zwischen Blöcken  Wenig Events
  35. 35. Dev / Live Handling unterschiedlicher Umgebungen
  36. 36. 36 Dev / Live  Mehrstufiger Prozess  Entwicklung (Dev)  Staging / Testing  Live  Bis zu 9 Umgebungen gleichzeitig
  37. 37. 37 Dev / Live  Git-Workflow  master-Zweig immer deployfähig halten  Feature-Branches, Stashing, Remote-Branches…  Deployment  Selbstverantwortlich  Häufig  Schnell  Software für Build & Deployment: phing
  38. 38. 38 Dev / Live  Aktuelle Files und Daten Files aktualisieren: Git & ugitsub & rsync Datenbank rückportieren: backportlive Daten und Umgebungskonfiguration anpassen: LimeSoda_EnvironmentConfiguration @ GitHub
  39. 39. 3939
  40. 40. 40 Dev / Live  Pro Umgebung zu berücksichtigen  Automatismen abstellen?  Importe / Exporte deaktivieren?  Cronjobs deaktivieren?  Andere externe Systeme verwenden?  Häufig keine vollfunktionalen Testsysteme vorhanden  Testsysteme verhalten sich häufig anders als Livesysteme  Manchmal gar keine Testsysteme (I‘m looking at you, Amazon)  Echtdaten anonymisieren/entfernen?
  41. 41. 41 Dev / Live  Live-Systeme schützen Extension: LimeSoda_LiveGuard @ GitHub Ergänzt LimeSoda_EnvironmentConfiguration Überwacht jeden Magento-Aufruf „Defensive“ Taktik Plugin-Architektur Testen auf Konfigurationswerte E-Mail-Adressen FTP-/SSH-/REST-/SOAP-Verbindungsdaten
  42. 42. Monitoring Überwachung der Systeme
  43. 43. 43 Monitoring  Aktive Überwachung von  Server-Auslastung & HDD-Speicher  Logs, Exceptions und Logs (Tabellen und Files)  Session-Files  Website-Erreichbarkeit  Ausführung von Cronjobs  …
  44. 44. 44 Monitoring  Tools Icinga pnp4nagios n98-magerun Shell-Skripte
  45. 45.  Vielen Dank!
  46. 46. 46 Kontakt LimeSoda Interactive Marketing GmbH Syringgasse 5, 1170 Wien, Austria office@limesoda.com www.limesoda.com

×