Diese Präsentation wurde erfolgreich gemeldet.
Wir verwenden Ihre LinkedIn Profilangaben und Informationen zu Ihren Aktivitäten, um Anzeigen zu personalisieren und Ihnen relevantere Inhalte anzuzeigen. Sie können Ihre Anzeigeneinstellungen jederzeit ändern.

Learnings aus einem Magento-Enterprise-Projekt

1.969 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

×