Якщо ви генеруєте кілька сотень PDF на день в одній Lambda або невеликому Kubernetes pod, архітектура рідко здається критичною. Майже будь-який підхід працює й виглядає достатньо швидким.
На десятках тисяч документів на день усе змінюється. E-commerce invoices, shipping labels, BNPL receipts, payroll documents і billing platforms починають відчувати три числа:
- Cold-start latency, бо десь завжди є холодний instance.
- Регіональна затримка, бо користувачі не сидять поруч із вашим origin.
- Compute на один render, бо ви платите його тисячі разів щодня.
Edge-deployed renderers на кшталт gPdf змінюють цю математику, а не просто прискорюють той самий підхід.
1. Cold start зростає разом із concurrency
Типовий сценарій: 10 warm containers покривають середній traffic. Приходить 3x spike на Black Friday, кінець місяця або день payroll. 20 нових containers cold-start, кожен витрачає 1,5-2,5 секунди на запуск Chromium, Prince або runtime. У цей час global p99 росте.
PDF traffic майже завжди нерівний. Invoices з’являються на межах billing cycle, labels під час carrier pickup, statements наприкінці місяця.
Edge-альтернатива: Cloudflare Worker isolate cold-start за 5-20 ms, а не за секунди. Немає container або browser boot; WASM module завантажується у вже живий process. У benchmark gPdf worst cold start близько 12 ms і лише для першого request нового isolate.
2. Регіональна затримка не зникає
Sydney до us-east-1 — це приблизно 200 ms ще до виконання коду. São Paulo до eu-west-1 — близько 190 ms. Mumbai до US East — близько 220 ms.
Централізований PDF API з render 300 ms з Sydney виглядає так:
client -> us-east : 200 ms
us-east render : 300 ms
us-east -> client : 200 ms
total wall-clock : 700 ms
Для batch job це може бути прийнятно. Для interactive invoice preview — повільно.
Edge-альтернатива: Cloudflare працює в сотнях міст. Colo біля Sydney може бути за кілька ms:
client -> SYD colo : 5 ms
SYD render : 4 ms
SYD -> client : 5 ms
total wall-clock : 14 ms
Коли PDF API працює на edge, auth, rate limit і checkout preview також можна наблизити до hot path.
3. Compute на render тихо накопичується
Приклад 100 000 рендерів на день:
- Puppeteer близько 600 ms і 1024 MB: приблизно $240/місяць лише compute.
- DocRaptor
89/100 000 сторінок: приблизно **2 670/місяць** за 3 млн pages. - gPdf
5/100 000 сторінок: приблизно **150/місяць** при 100 000/day або $5 при рівно 100 000 сторінок на місяць.
При 1 млн renders/day різниця більша: Puppeteer близько 2 400/місяць плюс ops, DocRaptor близько 26 700/місяць, gPdf близько $1 500/місяць за тією ж volume логікою.
Причина — footprint renderer. Chromium process на сотні MB і WASM module на кілька MB мають різну unit economics.
Що edge дає насправді
Передбачувану latency під навантаженням
Без boot cost на кожен request p50 і p99 залишаються близькими. gPdf часто бачить p99 у межах 3x p50 навіть під spike; Puppeteer під cold-start storm може піти до 10x.
Один artefact всюди
.wasm module однаково deployиться в кожен Cloudflare colo. Питання “чи warm pool у Sydney” зникає.
Шлях до embedded deployment
Якщо клієнт хоче запускати gPdf у своїй VPC, isolated cluster або intranet, той самий WASM module працює. Це portable technology, не лише hosted SaaS.
Де edge не найкраща відповідь
- Renders на багато секунд: гігантські фінансові звіти на 30 секунд краще почуваються в long-running containers.
- Renders, прив’язані до database: важкі OLAP JOIN краще виконати біля database, а final JSON відправити на edge.
- Stateful post-processing: signing, archival або складний watermark pipeline можуть вимагати централізованого workflow.
Для більшості B2B invoices, labels і receipts edge виграє на latency, cost і operations.
Коли перестати терпіти поточний setup
Якщо збігаються три пункти, migration вже варто тестувати:
- PDF infrastructure коштує понад $300/місяць.
- PDF p99 перевищує 800 ms у нормальному traffic.
- Був cold-start incident, який побачили клієнти.
- Ви витратили понад 4 години на CJK, RTL або emoji glyphs.
- PDF генеруються в interactive flow.
- Ви працюєте в більш ніж одному geographic region.
Якщо це знайомо, Playground renderить sample invoice за кілька ms.