La carga de trabajo de una etiqueta de envío, en un párrafo
Cada pedido produce un PDF, cada PDF se imprime una vez en una impresora térmica y, si el sistema va lento, el modo de fallo no es “la página tarda en cargar”: es “la recogida del almacén queda esperando detrás de la API que renderiza etiquetas”. En envíos, la latencia p99 es el indicador de producto. La salida determinista importa porque las reimpresiones son rutina. Y la calidad del código de barras, medida en tolerancias de dimensión X de GS1 y no en píxeles, decide si el escáner lee la etiqueta al primer intento.
Las pilas de PDF basadas en navegadores sin interfaz gráfica tienen dificultades para cumplir las tres cosas a la vez: el coste de arranque en frío se acumula durante los picos, los códigos de barras rasterizados se degradan en etiquetas térmicas pequeñas y la rasterización de fuentes cambia entre versiones de Chromium, por lo que una “reimpresión idéntica byte a byte” deja de ser posible.
Por qué gPdf encaja
Una etiqueta térmica 4×6 es pequeña (576 × 864 píxeles a 203 dpi), tiene pocos elementos (bloques de texto, uno o dos códigos de barras y, opcionalmente, el logotipo del transportista) y se genera en alto volumen: un 3PL mediano renderiza entre 50.000 y 500.000 al día. Ese es el tipo de carga para el que se diseñó gPdf. El renderizador:
- Compila la composición una vez: las coordenadas de página, las cascadas de fuentes y la geometría de los códigos de barras se resuelven al procesar la solicitud, no mediante un motor de maquetación de navegador.
- Vectoriza cada código de barras: los módulos se dibujan directamente en el flujo PDF, de modo que un GS1-128 de 30 mm de ancho se lee con nitidez a 203 dpi o 600 dpi sin que usted tenga que implementar lógica de rasterización sensible al DPI.
- Integra NotoSans CJK + Latin: el mismo dato de entrada renderiza correctamente el nombre de un transportista en chino sin que deba aprovisionar fuentes en un contenedor de renderizado.
El p99 se mantiene plano en 8 ms en nuestra carga de referencia (1.000 invocaciones del ejemplo anterior en EU-WEST), sin importar si un isolate ha renderizado una etiqueta o 10.000 etiquetas.
Volumen y cálculo de coste
Un 3PL mediano típico opera alrededor de 50.000 etiquetas al día, es decir, cerca de 1,5 millones al mes. Con el plan Basic (5 USD/mes para 100.000 páginas, con excedente a 0,00005 USD por página), el cálculo es:
1,5M páginas × 0,00005 USD = 75,00 USD de excedente
+ base del plan Basic = 5,00 USD
─────────────────────────────────────
total = 80,00 USD/mes
La misma carga en Puppeteer-on-Lambda suele quedar en el rango de 200-400 USD/mes con configuraciones habituales de concurrencia en Lambda, antes de sumar el coste operativo de los arranques en frío durante los picos.
Black Friday: un ejemplo trabajado
Los picos son la carga donde el renderizado en el edge demuestra su valor con más claridad. Imagine un cliente de comercio minorista que alcanza el 200% de su volumen normal de etiquetas durante la primera hora de Black Friday: 100.000 etiquetas en 60 minutos, un promedio de 1.700 etiquetas/minuto y ráfagas máximas de 5.000/minuto. Esa carga termina dentro de un único pool regional de Cloudflare Workers, sin coste de arranque en frío. La misma carga sobre un pool precalentado de Puppeteer dimensionado para el tráfico medio genera arranques en frío de 1,5 a 2,5 s en los contenedores creados para absorber la ráfaga, y el mostrador de recogida del almacén siente cada uno de ellos.
Qué leer después
- La JSON Render API cubre todos los campos usados en el ejemplo de etiqueta anterior.
- Para profundizar en la geometría de códigos de barras, lea el artículo sobre precisión GS1-128.
- ¿Está reemplazando una canalización de etiquetas basada en iText? Consulte gPdf vs iText para etiquetas logísticas o el desglose completo del TCO de etiquetas de envío de 100.000 a 100 millones de páginas/mes.
- Para comparar con una pila basada en Chromium, consulte gPdf vs Puppeteer.