Il carico di lavoro delle etichette di spedizione, in un paragrafo
Ogni ordine produce un PDF, ogni PDF viene stampato una volta su una stampante termica, e il modo in cui il sistema fallisce quando siete lenti non è “la pagina carica lentamente”: è “il ritiro in magazzino resta in coda dietro la vostra API di rendering delle etichette”. La spedizione è un lavoro in cui la latenza p99 è la metrica di prodotto, l’output deterministico conta perché le ristampe sono routine, e la qualità del codice a barre, misurata in tolleranze GS1 X-dimension e non in pixel, decide se gli scanner leggono l’etichetta al primo passaggio.
Gli stack PDF basati su browser headless faticano su tutti e tre i fronti insieme: il costo di cold start si somma durante i picchi, i codici a barre raster degradano sulle piccole etichette termiche e la rasterizzazione dei font cambia tra versioni Chromium, quindi una ristampa byte-identical diventa impossibile.
Perché gPdf è adatto
Una etichetta termica 4×6 è piccola (576 × 864 pixel a 203 dpi), con pochi elementi (blocchi testo + 1-2 codici a barre + logo corriere opzionale) e ad alto volume (un 3PL medio renderizza 50K-500K al giorno). È il carico per cui gPdf è costruito. Il motore:
- Compila il layout una volta: coordinate pagina, cascate font e geometria dei codici a barre vengono risolte al tempo della richiesta, non tramite un motore di layout browser.
- Vettorializza ogni codice a barre: i moduli vengono disegnati direttamente nello stream PDF, così un GS1-128 largo 30 mm resta leggibile a 203 dpi o 600 dpi senza logica di rasterizzazione DPI-aware lato vostro.
- Incorpora NotoSans CJK + Latin: gli stessi dati renderizzano correttamente un nome corriere cinese senza dover predisporre font su un container di rendering.
Il p99 resta piatto a 8 ms sul nostro carico di riferimento (1K invocazioni del campione sopra su EU-WEST), indipendentemente dal fatto che un singolo isolate abbia renderizzato una etichetta o 10K etichette.
Volume + matematica dei costi
Un tipico 3PL di medie dimensioni lavora intorno a 50K etichette/giorno = circa 1,5M/mese. Sul piano Basic (5 USD/mese per 100K pagine, eccedenza 0,00005 USD per pagina) significa:
1,5M pagine × 0,00005 USD = 75,00 USD di eccedenza
+ base piano Basic = 5,00 USD
─────────────────────────────────────
totale = 80,00 USD / mese
Lo stesso carico su Puppeteer-on-Lambda rientra nella fascia 200-400 USD/mese con impostazioni Lambda tipiche di concorrenza, prima di considerare la tassa di cold start durante il picco.
Black Friday: un esempio calcolato
Il picco è il carico in cui il rendering edge ripaga più chiaramente. Un cliente retail che raggiunge il 200% del volume normale di etichette nella prima ora del Black Friday, per esempio 100K etichette in 60 minuti, media di 1,7K etichette/minuto con burst di picco a 5K/minuto, completa dentro un pool regionale Cloudflare Workers senza tassa di cold start. Lo stesso carico su un pool Puppeteer caldo dimensionato per il traffico medio produce cold start da 1,5-2,5 s sui container avviati per il burst, e il banco ritiro del magazzino li sente tutti.
Dove guardare dopo
- La JSON Render API copre ogni campo usato nel campione di etichetta sopra.
- Per la storia più dettagliata sulla geometria dei codici a barre, leggete il post sulla precisione GS1-128.
- State sostituendo una pipeline di etichette iText? Leggete gPdf vs iText per etichette logistiche o il breakdown completo TCO etichette di spedizione da 100K a 100M pagine/mese.
- Per confrontare uno stack basato su Chromium, leggete gPdf vs Puppeteer.