Dal campo.
Riceviamo spesso questo ticket: i tempi di caricamento vanno bene in staging, malissimo in produzione, e tutti puntano il dito contro la piattaforma. Di solito non è la piattaforma.
Aprite il waterfall delle richieste di un checkout lento e vedrete Magento in attesa: di un ERP per le giacenze, di un gateway di pagamento senza timeout, di un'API di spedizione chiamata per ogni riga invece che una volta per carrello. A volte un job di sincronizzazione del PIM ha bloccato proprio le tabelle che la vetrina deve leggere, ed è partito un martedì alle 14 perché nessuno l'aveva programmato in base al traffico reale.
Testato da solo, Magento gestisce tutto questo senza problemi. Aggiungete tre o quattro integrazioni reali, ognuna con la propria latenza e i propri guasti, e i conti cambiano completamente.
Niente di tutto questo è davvero un bug. Sono decisioni sensate quando il negozio aveva meno traffico e nessuno controllava gli spazi tra un sistema e l'altro. Semplicemente non reggono più quando il negozio cresce.
Cosa aiuta di solito: mettete in cache tutto ciò che non deve essere aggiornato al secondo, inserite un circuit breaker davanti alle chiamate esterne, raggruppate le richieste di spedizione e di prezzo invece di inviarne una per articolo e spostate i job di sincronizzazione negli orari in cui nessuno fa acquisti.