SlideShare ist ein Scribd-Unternehmen logo
1 von 46
VitaminExpress
Learnings aus einem Magento-Enterprise-Projekt
2
Themen
 Projektübernahme
 Verwaltung der Aufgaben
 3rd-Party-Extensions
 Geotargeting
 Bestellungsabwicklung
 Backend-Anpassungen
 Dev / Live
 Monitoring
40.000+
Personentage
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
Der Kunde
VitaminExpress
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
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 PSPs, Fulfillment,
Newsletter-System, …
 143 Extensions (and counting)
 > 370.000 Zeilen PHP-Dateien in
app/code/local|community
 760 Datenbank-Tabellen
Projektübernahme
„Wir sind zu 90% fertig“
10
Projektübernahme
 Laufendes Entwicklungsprojekt übernommen
 Keine Dokumentation, keine Git-History
 Zugriff auf Teile des Issue-Trackers
 Was ist der Status quo?
1111© https://economicscenter.org/media/416211/businesswoman.jpg
12
Projekt-Übernahme
 „Never trust a foreign issue tracker“
 Projekt anhand klar abgrenzbarer Aufgaben
kennen lernen
 Entwicklungsstand Modul für Modul evaluieren
Verwaltung der Aufgaben
„Issues, Issues, Issues“
© http://www.wpcentral.com/sites/wpcentral.com/files/postimages/15741/devballmey.png
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
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
 Mangelnde/r Dokumentation/Support
 Viele Extensions entsprechen den Anforderungen
nicht zu 100%
 Abwägen, ob Extensions sinnvoll sind!
Installationsaufwand
Einarbeitungs- und Anpassungsaufwand
16
Geotargeting
„Wo bin ich?“
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
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
 Bestelldaten überprüfen
 PDF-Rechnung generieren
 Order für Fulfillment vorbereiten & exportieren
 Order-Stati & Tracking-Codes importieren
 Versand-Info, Capturing, Order abschließen, …
24https://github.com/AOEmedia/Aoe_Scheduler 24
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
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
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
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
Backend-Anpassungen
Optimierungen in Callcenter-Prozessen
31
Backend-Anpassungen
 Backend-Grids
 Spalten hinzufügen / umsortieren / entfernen
 Adressdaten von anderen Tabellen beziehen
 Einträge hervorheben
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
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
Backend-Anpassungen
 Create New Order
Anpassungen sind mühsam:
 AJAX-Calls
 Nachladen von Blöcken
 Abhängigkeiten / Verbindungen zwischen Blöcken
 Wenig Events
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…
 Deployment
 Selbstverantwortlich
 Häufig
 Schnell
 Software für Build & Deployment:
phing
38
Dev / Live
 Aktuelle Files und Daten
Files aktualisieren:
Git & ugitsub & rsync
Datenbank rückportieren:
backportlive
Daten und Umgebungskonfiguration anpassen:
LimeSoda_EnvironmentConfiguration @ GitHub
3939
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
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
Monitoring
Überwachung der Systeme
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
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

Weitere ähnliche Inhalte

Andere mochten auch

Pemerintah kabupaten kepulauan selayar
Pemerintah kabupaten kepulauan selayarPemerintah kabupaten kepulauan selayar
Pemerintah kabupaten kepulauan selayarsmpn05makassar
 
Via 06 2013 ursula meier
Via 06 2013 ursula meierVia 06 2013 ursula meier
Via 06 2013 ursula meierGaston Haas
 
Social Media in der Touristik: Facebook, Twitter & Co |
Social Media in der Touristik: Facebook, Twitter & Co |Social Media in der Touristik: Facebook, Twitter & Co |
Social Media in der Touristik: Facebook, Twitter & Co |Michael Faber
 
Google+: Seien Sie da, wo die Kunden Sie suchen!
Google+: Seien Sie da, wo die Kunden Sie suchen!Google+: Seien Sie da, wo die Kunden Sie suchen!
Google+: Seien Sie da, wo die Kunden Sie suchen!ScribbleLive
 
Wien - live-liveonline
Wien - live-liveonlineWien - live-liveonline
Wien - live-liveonlineaquarana
 
Transforming Media 2015 - Mut zum Neustart: Wie sich das Wissenschaftsmagazin...
Transforming Media 2015 - Mut zum Neustart: Wie sich das Wissenschaftsmagazin...Transforming Media 2015 - Mut zum Neustart: Wie sich das Wissenschaftsmagazin...
Transforming Media 2015 - Mut zum Neustart: Wie sich das Wissenschaftsmagazin...Lokalrundfunktage
 
Was geschieht eigentlich beim Austausch einer defekten Laptop-Netzbuchse?
Was geschieht eigentlich beim Austausch einer defekten Laptop-Netzbuchse?Was geschieht eigentlich beim Austausch einer defekten Laptop-Netzbuchse?
Was geschieht eigentlich beim Austausch einer defekten Laptop-Netzbuchse?PC Reparatur Center Dresden
 

Andere mochten auch (14)

Pemerintah kabupaten kepulauan selayar
Pemerintah kabupaten kepulauan selayarPemerintah kabupaten kepulauan selayar
Pemerintah kabupaten kepulauan selayar
 
Ansgar Mayer
Ansgar MayerAnsgar Mayer
Ansgar Mayer
 
Via 06 2013 ursula meier
Via 06 2013 ursula meierVia 06 2013 ursula meier
Via 06 2013 ursula meier
 
SEM & Recht - Die neuesten Rechtstipps zum Suchmaschinenmarketing
SEM & Recht - Die neuesten Rechtstipps zum SuchmaschinenmarketingSEM & Recht - Die neuesten Rechtstipps zum Suchmaschinenmarketing
SEM & Recht - Die neuesten Rechtstipps zum Suchmaschinenmarketing
 
Pemerintah kab. wajo
Pemerintah kab. wajoPemerintah kab. wajo
Pemerintah kab. wajo
 
Rensing - Adaptivität von mobilen Lernanwendungen
Rensing - Adaptivität von mobilen LernanwendungenRensing - Adaptivität von mobilen Lernanwendungen
Rensing - Adaptivität von mobilen Lernanwendungen
 
Social Media in der Touristik: Facebook, Twitter & Co |
Social Media in der Touristik: Facebook, Twitter & Co |Social Media in der Touristik: Facebook, Twitter & Co |
Social Media in der Touristik: Facebook, Twitter & Co |
 
Google+: Seien Sie da, wo die Kunden Sie suchen!
Google+: Seien Sie da, wo die Kunden Sie suchen!Google+: Seien Sie da, wo die Kunden Sie suchen!
Google+: Seien Sie da, wo die Kunden Sie suchen!
 
Calidad total
Calidad totalCalidad total
Calidad total
 
Wien - live-liveonline
Wien - live-liveonlineWien - live-liveonline
Wien - live-liveonline
 
Transforming Media 2015 - Mut zum Neustart: Wie sich das Wissenschaftsmagazin...
Transforming Media 2015 - Mut zum Neustart: Wie sich das Wissenschaftsmagazin...Transforming Media 2015 - Mut zum Neustart: Wie sich das Wissenschaftsmagazin...
Transforming Media 2015 - Mut zum Neustart: Wie sich das Wissenschaftsmagazin...
 
Präsentation radio in
Präsentation radio inPräsentation radio in
Präsentation radio in
 
Was geschieht eigentlich beim Austausch einer defekten Laptop-Netzbuchse?
Was geschieht eigentlich beim Austausch einer defekten Laptop-Netzbuchse?Was geschieht eigentlich beim Austausch einer defekten Laptop-Netzbuchse?
Was geschieht eigentlich beim Austausch einer defekten Laptop-Netzbuchse?
 
Dialnet
DialnetDialnet
Dialnet
 

Ähnlich wie Learnings aus einem Magento-Enterprise-Projekt

Kritische app performance erfolgreich optimieren mit Bison
Kritische app performance erfolgreich optimieren mit BisonKritische app performance erfolgreich optimieren mit Bison
Kritische app performance erfolgreich optimieren mit BisonDynatrace
 
High Performance Multi-Server Magento in der Cloud
High Performance Multi-Server Magento in der CloudHigh Performance Multi-Server Magento in der Cloud
High Performance Multi-Server Magento in der CloudAOE
 
Pimp My SharePoint - Performanceprobleme vorbeugen, analysieren und beheben
Pimp My SharePoint - Performanceprobleme vorbeugen, analysieren und behebenPimp My SharePoint - Performanceprobleme vorbeugen, analysieren und beheben
Pimp My SharePoint - Performanceprobleme vorbeugen, analysieren und behebenDavid Schneider
 
DACHNUG50 panagenda BigFix Notes Domino.pdf
DACHNUG50 panagenda BigFix Notes Domino.pdfDACHNUG50 panagenda BigFix Notes Domino.pdf
DACHNUG50 panagenda BigFix Notes Domino.pdfDNUG e.V.
 
Mehr Sicherheit durch Automatisierung
Mehr Sicherheit durch AutomatisierungMehr Sicherheit durch Automatisierung
Mehr Sicherheit durch AutomatisierungOPEN KNOWLEDGE GmbH
 
Cloud Deployment und (Auto)Scaling am Beispiel von Angrybird
Cloud Deployment und (Auto)Scaling am Beispiel von AngrybirdCloud Deployment und (Auto)Scaling am Beispiel von Angrybird
Cloud Deployment und (Auto)Scaling am Beispiel von AngrybirdAOE
 
REST: Versprechen, Wirklichkeit & Alternativen: GraphQL, GRPC, JSON RPC...
REST: Versprechen, Wirklichkeit & Alternativen: GraphQL, GRPC, JSON RPC...REST: Versprechen, Wirklichkeit & Alternativen: GraphQL, GRPC, JSON RPC...
REST: Versprechen, Wirklichkeit & Alternativen: GraphQL, GRPC, JSON RPC...predic8
 
ShareConf 2014: 10 Gründe warum der SharePoint langsam ist
ShareConf 2014: 10 Gründe warum der SharePoint langsam istShareConf 2014: 10 Gründe warum der SharePoint langsam ist
ShareConf 2014: 10 Gründe warum der SharePoint langsam istDavid Schneider
 
Avoid Network-Issues and Polling
Avoid Network-Issues and PollingAvoid Network-Issues and Polling
Avoid Network-Issues and PollingKai Donato
 
Meet Magento - High performance magento
Meet Magento - High performance magentoMeet Magento - High performance magento
Meet Magento - High performance magentoAOE
 
Make Developers Fly: Principles for Platform Engineering
Make Developers Fly: Principles for Platform EngineeringMake Developers Fly: Principles for Platform Engineering
Make Developers Fly: Principles for Platform EngineeringQAware GmbH
 
Domino 12(.0.2) Lessons learned - DNUG Stammtisch Hamburg
Domino 12(.0.2) Lessons learned - DNUG Stammtisch HamburgDomino 12(.0.2) Lessons learned - DNUG Stammtisch Hamburg
Domino 12(.0.2) Lessons learned - DNUG Stammtisch HamburgDNUG e.V.
 
IBM Connections Troubleshooting oder "get the cow off the ice"
IBM Connections Troubleshooting oder "get the cow off the ice"IBM Connections Troubleshooting oder "get the cow off the ice"
IBM Connections Troubleshooting oder "get the cow off the ice"Nico Meisenzahl
 
REST Problems
REST ProblemsREST Problems
REST Problemspredic8
 
OSMC 2013 | Enterprise Platforms Monitoring at s IT Solutions AT by Johannes ...
OSMC 2013 | Enterprise Platforms Monitoring at s IT Solutions AT by Johannes ...OSMC 2013 | Enterprise Platforms Monitoring at s IT Solutions AT by Johannes ...
OSMC 2013 | Enterprise Platforms Monitoring at s IT Solutions AT by Johannes ...NETWAYS
 

Ähnlich wie Learnings aus einem Magento-Enterprise-Projekt (20)

Kritische app performance erfolgreich optimieren mit Bison
Kritische app performance erfolgreich optimieren mit BisonKritische app performance erfolgreich optimieren mit Bison
Kritische app performance erfolgreich optimieren mit Bison
 
High Performance Multi-Server Magento in der Cloud
High Performance Multi-Server Magento in der CloudHigh Performance Multi-Server Magento in der Cloud
High Performance Multi-Server Magento in der Cloud
 
Pimp My SharePoint - Performanceprobleme vorbeugen, analysieren und beheben
Pimp My SharePoint - Performanceprobleme vorbeugen, analysieren und behebenPimp My SharePoint - Performanceprobleme vorbeugen, analysieren und beheben
Pimp My SharePoint - Performanceprobleme vorbeugen, analysieren und beheben
 
DACHNUG50 panagenda BigFix Notes Domino.pdf
DACHNUG50 panagenda BigFix Notes Domino.pdfDACHNUG50 panagenda BigFix Notes Domino.pdf
DACHNUG50 panagenda BigFix Notes Domino.pdf
 
Mehr Sicherheit durch Automatisierung
Mehr Sicherheit durch AutomatisierungMehr Sicherheit durch Automatisierung
Mehr Sicherheit durch Automatisierung
 
BizSpark goes Cloud
BizSpark goes CloudBizSpark goes Cloud
BizSpark goes Cloud
 
Cloud Deployment und (Auto)Scaling am Beispiel von Angrybird
Cloud Deployment und (Auto)Scaling am Beispiel von AngrybirdCloud Deployment und (Auto)Scaling am Beispiel von Angrybird
Cloud Deployment und (Auto)Scaling am Beispiel von Angrybird
 
REST: Versprechen, Wirklichkeit & Alternativen: GraphQL, GRPC, JSON RPC...
REST: Versprechen, Wirklichkeit & Alternativen: GraphQL, GRPC, JSON RPC...REST: Versprechen, Wirklichkeit & Alternativen: GraphQL, GRPC, JSON RPC...
REST: Versprechen, Wirklichkeit & Alternativen: GraphQL, GRPC, JSON RPC...
 
ShareConf 2014: 10 Gründe warum der SharePoint langsam ist
ShareConf 2014: 10 Gründe warum der SharePoint langsam istShareConf 2014: 10 Gründe warum der SharePoint langsam ist
ShareConf 2014: 10 Gründe warum der SharePoint langsam ist
 
GWT – Google Web Toolkit in der Praxis
GWT – Google Web Toolkit in der PraxisGWT – Google Web Toolkit in der Praxis
GWT – Google Web Toolkit in der Praxis
 
Avoid Network-Issues and Polling
Avoid Network-Issues and PollingAvoid Network-Issues and Polling
Avoid Network-Issues and Polling
 
Meet Magento - High performance magento
Meet Magento - High performance magentoMeet Magento - High performance magento
Meet Magento - High performance magento
 
Make Developers Fly: Principles for Platform Engineering
Make Developers Fly: Principles for Platform EngineeringMake Developers Fly: Principles for Platform Engineering
Make Developers Fly: Principles for Platform Engineering
 
TDD für Testmuffel
TDD für TestmuffelTDD für Testmuffel
TDD für Testmuffel
 
Domino 12(.0.2) Lessons learned - DNUG Stammtisch Hamburg
Domino 12(.0.2) Lessons learned - DNUG Stammtisch HamburgDomino 12(.0.2) Lessons learned - DNUG Stammtisch Hamburg
Domino 12(.0.2) Lessons learned - DNUG Stammtisch Hamburg
 
IBM Connections Troubleshooting oder "get the cow off the ice"
IBM Connections Troubleshooting oder "get the cow off the ice"IBM Connections Troubleshooting oder "get the cow off the ice"
IBM Connections Troubleshooting oder "get the cow off the ice"
 
XPages: Performance-Optimierung - Ulrich Krause (eknori) SNoUG 2013
XPages: Performance-Optimierung  - Ulrich Krause (eknori) SNoUG 2013XPages: Performance-Optimierung  - Ulrich Krause (eknori) SNoUG 2013
XPages: Performance-Optimierung - Ulrich Krause (eknori) SNoUG 2013
 
REST Problems
REST ProblemsREST Problems
REST Problems
 
OSMC 2013 | Enterprise Platforms Monitoring at s IT Solutions AT by Johannes ...
OSMC 2013 | Enterprise Platforms Monitoring at s IT Solutions AT by Johannes ...OSMC 2013 | Enterprise Platforms Monitoring at s IT Solutions AT by Johannes ...
OSMC 2013 | Enterprise Platforms Monitoring at s IT Solutions AT by Johannes ...
 
GWT
GWTGWT
GWT
 

Learnings aus einem Magento-Enterprise-Projekt

Hinweis der Redaktion

  1. PSPs: Acceptance, Sofortüberweisung, Billsafe, PayPal Datenbank: EE Standard 447, M2E Pro 179, Sonstige 134
  2. Zustand des externen Issue Trackers: veraltete Information, nicht hilfreich => zu viel implizites Wissen - Es war sinnlos, zuerst den kompletten Status quo zu erheben - Arbeitspakete zusammenstellen: Anhand klarer Aufgaben kann man arbeiten, sich im System orientieren lernen
  3. Issues großzügig verwenden: lieber zu viele Issues als zu wenige verwenden Viele Aufgaben, wenig Zeit => wir mussten priorisieren! Aufteilung in 2 Phasen: => bietet mehr Flexibilität => bei harter Deadline: Weniger wichtige Issues auf nach dem Start verlagern oder simplere Lösung finden
  4. Man sollte vor Einsatz Code-Checks machen! (Fabian: 2 PT Aufwand für Check) Sicherheitslücken: SQL-Injection, Textfile mit letzter Transaktion im Root-Verzeichnis Performance: Cross-Selling-Extension: Produktseite: +2,5 Sekunden, + 600 Queries Missachtung von Best Practices: Haarsträubender Code: Original-Dateien überschrieben, unnötige Rewrites, vorhandener Code nach programmiert, Model/View/Controller vermischt, … Kunden glauben es meistens nicht, und doch ist es so: gekaufte Extensions verursachen ebenfalls Kosten, manchmal mehr als eine Eigenprogrammierung (plus: Aufwände bei Upgrades)
  5. Caching: Cache-Keys für Blöcke anpassen, die GeoIP berücksichtigen!
  6. Order wird erstellt => nach Bezahlung im Status Processing. Lagerstand wird reduziert und wir merken uns, wieviele Stück reserviert sind. Wir benötigen den allokierten Lagerstand, um aufgrund des Versandlager-Lagerbestands die tatsächlich im Shop verfügbare Menge zu berechnen.
  7. Cronjobs (für regelmäßige Abläufe, die man planen kann) Observer (schießen irgendwann dazwischen): Wareneingänge, Stornierungen / Refundierungen, …
  8. Lücken: entstehen durch lang laufenden Cronjobs. Sind inzwischen in extra Prozesse ausgelagert. Außerdem haben wir nun auch häufiger laufende Cronjobs. Außerdem indiziert die EE laufend.
  9. „Lagerstandsverwaltung = komplexes Thema“ Fallbeispiele erstellen: komplexe Fälle durchüberlegen Worst case besprechen: was passiert, wenn XY schief geht? => ist wichtig, denn irgendwann wird es schief gehen! Vorbereitung wichtig: wenn es schief geht, hat man nicht die Zeit dafür.
  10. Wir: „Was passiert, wenn gerade die Aktion X ausgeführt wird und mittendrin Aktion Y passiert? Kunde: „Das wird in der Praxis nicht passieren!“ => Lücke von max. 0,1 Sekunde bei Order-Speichern und Verarbeiten => Bis zum nächsten Abend hatten wir den ersten Fall.
  11. Externe Dokumente sind schnell outdated Direkt im Backend = man erfasst schneller, worum es geht. Hinweis auf Issues sind möglich Vereinfachungen suchen: „Manchmal sieht man den Wald vor lauter Bäumen nicht“. Wenn es sich falsch anfühlt, ist es meistens auch falsch. Zuerst hatten wir 4 variable Lagerstände: Versandlager Lagerstand Reservierter Lagerstand Freier Lagerstand Magento-Lagerstand Reduzierung auf: Extern definierten und berechneten Versandlager-Lagerstand Reservierter Lagerstand (variabel) Magento-Lagerstand (berechnet sich aus Versandlager - reserviert)
  12. Don‘t mess: Keine eigenen States Eigene Statuses gefahrloser, aber potentiell problematisch mit externen Systemen - Externe Schnittstellen und deren Extensions scheren sich normalerweise nicht darum, welchen Status eine Extension gerade hat und ob der neue Status Sinn macht   => Entweder alle Extensions überschreiben oder Orders regelmäßig überprüfen => Entscheidung für Cronjob, siehe Order-Stop-Rules und Order-Status-Flow
  13. Wir gehen nur auf die Anpassungen rund um die Sales- und Customer-Menüs ein Adressdaten von woanders beziehen
  14. Auto-Propagation: Herausforderung, eigene Daten in Grids aktuell zu halten => man muss die Auto-Propagation erweitern, damit diese Daten !
  15. AJAX-Calls schießen kreuz und quer Blöcke werden kreuz und quer nachgeladen Es gibt Verknüpfungen zwischen Blöcken Es gibt keine anständigen Events / Rewrites
  16. Deployfähig = „funktionsfähiger und stabiler Code, der ohne wenn und aber ins Live-System darf“
  17. Files und Daten in den Entwicklungskopien müssen aktuell gehalten werden ugitsub: Bash-Script, das alle Submodule aktualisiert backportlive: Shell-Skript: Umgebung und Backup angeben: holt sich eines der nächtlichen Backups vom Live-Server, spielt sie ein, passt die Konfiguration etc. der Datenbank an. LimeSoda_EnvironmentConfiguration: Hilft, die Umgebung vorzubereiten (Beispiele folgen gleich)
  18. Variablen und Befehle Beliebig viele Vererbungen
  19. Daraus ergibt sich im Gegenzug eine weitere Anforderung: Live-Systeme müssen geschützt werden