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.
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.660 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

×