Skip to content
ZERONE
Approfondimenti

Lezioni dalla produzione.

Note dal campo da sistemi reali — storie di debug, scelte di architettura, anti-pattern pagati con outage. Niente tutorial, niente hot take. Solo ciò che ha tenuto alle 3 del mattino.

8Case study·20Approfondimenti·dal 2026
Infrastruttura2026-07-10 · 9 min

Costi cloud Blender 2026: RebusFarm, GarageFarm, RunPod vs. ZER0ONE Lab — conti concreti

Abbiamo calcolato tre job Blender tipici su quattro provider: turntable da 240 frame, cinema loop 4K, batch prodotto da 100 frame. Numeri onesti inclusi i point system e il tempo di self-setup — niente marketing. Risultato: nessun provider vince tutti e tre gli scenari, ma un fattore di costo viene spesso trascurato.

Leggi l'articolo
Sistemi distribuiti2026-07-06 · 7 min

Se avvii Redis solo per il job trigger, poi lo butti fuori di nuovo: Postgres pg_notify come worker queue

Il nostro worker di cinema-orch doveva vedere subito i nuovi render job — un polling ogni 5 secondi era troppo lento e faceva salire il carico Postgres nell’ordine delle cinque cifre in QPS. Aggiungere Redis era il riflesso ovvio. Abbiamo scelto invece \`LISTEN/NOTIFY\`, abbassato la latenza sotto i 200 ms e tenuto un intero componente fuori dallo stack.

Leggi l'articolo
SMB delivery2026-07-06 · 9 min

3.544 aziende DACH scored senza rendere imbarazzante una cold campaign — la nostra lead pipeline nel dettaglio

„Gentile Sig./Sig.ra Auto" è l'intestazione email che ricevi per Car Den KFZ Reparatur quando ti fidi dei domini di free-mail come fonte del nome. Su qualche migliaio di send è fatale. Abbiamo quindi costruito una pipeline di filtri a 4 layer che da una raw list DACH auto-crawlata produce 3.544 aziende verificate e mobile-unfriendly — abbastanza pulita per l'invio automatizzato.

Leggi l'articolo
Pattern architetturali2026-07-06 · 8 min

Anatomia di un add-on Blender che parla OAuth e REST — senza congelare la UI

L’API bpy di Blender gira sul main thread. Una chiamata HTTP bloccante per l’upload di un file \`.blend\` da 500 MB lascia Blender „non risponde“ per 90 secondi — e la maggior parte degli utenti forza il restart del processo. Il fix è un background worker con timer callback verso il main thread, più OAuth device flow (nessun browser callback necessario).

Leggi l'articolo
Infrastruttura2026-07-06 · 5 min

Come portare l’indexing di Bing da settimane a ore — un deploy hook, 15 righe di bash

Bing tipicamente non fa un crawl completo di un sito nuovo prima di 3–6 settimane. Per un cold launch è troppo. IndexNow è il semplice protocollo di segnalazione di Microsoft — una richiesta POST per deploy, e i nuovi URL sono nell’indice Bing in meno di un’ora. Bonus: le citation di ChatGPT Search passano attraverso l’indice Bing.

Leggi l'articolo
SMB delivery2026-07-06 · 7 min

Sei domande che i 3D studio ci pongono sul cloud rendering — e le risposte oneste

Quanto costa davvero un render 4K, quanto dura l'upload di una .blend da 12 GB, cosa succede se il job crasha al frame 187 di 240, e perché accettiamo clienti di cui non abbiamo mai visto la scena? Sei risposte da quattro settimane di inbox di supporto beta.

Leggi l'articolo
Infrastruttura2026-07-06 · 8 min

Cinema 4D vs. Blender nel cloud: perché il 4× di differenza di prezzo non c'entra con il software

Un render Cinema 4D da noi costa 4× più dello stesso job in Blender. Non perché Cinema 4D sia più lento — Redshift su una A6000 renderizza a velocità comparabile a Cycles OptiX sulla stessa scheda. La differenza sta altrove: la politica di licensing di Maxon costringe i cloud vendor in un modello che la libertà GPL di Blender semplicemente non ha.

Leggi l'articolo
Sistemi distribuiti2026-07-06 · 8 min

Quattro strati di protezione dei costi: come il nostro auto-scaler non fa esplodere la fattura

Un cliente carica una scena rotta, l'orchestrator avvia un pod, il pod finisce in OOM infinito, tenta tre retry, ogni pod ci costa 0,80 dollari al minuto. Senza protezione, questo genera in un'ora una fattura a tre cifre. Quattro strati indipendenti devono fallire prima che accada.

Leggi l'articolo
Pattern architetturali2026-07-06 · 6 min

Il bug della CPU al 90 % nel nostro Cinema Web: come React Three Fiber ha grigliato la nostra landing page

Il task manager di Chrome mostrava l’87 % di CPU su un laptop Intel i7, non appena zer0onelab.com era aperto in un tab. Non 87 % di picco. 87 % steady state. Pensavamo fosse colpa del Bloom di post-processing. Era invece il setting DPR combinato con una GPU-Tier-Detection mancante.

Leggi l'articolo
Pattern architetturali2026-07-06 · 7 min

Come due domini diventano una sola entity Google: le cross-reference JSON-LD @id spiegate

Gestiamo zer0one.codes (Studio) e zer0onelab.com (Cloud-Product). Per Google sono state a lungo due aziende separate — pur essendo la stessa GmbH. Il fix è una singola riga per nodo JSON-LD: URI @id stabili più reference parentOrganization / subOrganization. Dopo, il Knowledge Graph di Google risolve entrambi i domini come la stessa entity.

Leggi l'articolo
Infrastruttura2026-07-06 · 6 min

La GPU più economica per i render Blender non è la più veloce — RTX A4000 nel confronto cost-per-frame

240 frame di turntable RS6, 1080p, Cycles OptiX a 128 sample: 3 minuti e 18 secondi, 1,4 centesimi di dollaro di costo totale. Il rendering sulla RTX A4000 è più lento che su una H100 — ma costa un decimo per frame. Perché la metrica „GPU più veloce" nel cloud è quella sbagliata.

Leggi l'articolo
Pattern architetturali2026-06-05 · 4 minDa Case 06

L'anonimato come invariante architetturale: perché «non vi contatteremo» non basta

Promesse come «non sarete mai contattati senza preavviso» nelle piattaforme B2B non sono applicabili — i fornitori le aggirano offline. Ciò che funziona è un'invariante tecnica: i dati di contatto vivono in una sfera separata, il server li rilascia solo a match bilaterale. Una proprietà del codice, non una clausola dei TOS.

Leggi l'articolo
SMB delivery2026-06-04 · 4 minDa Case 07

Static export invece di webshop: quando il negozio è fisico, il carrello è il problema

Una boutique con sede fisica non ha bisogno di un webshop, ma di un percorso di conversione verso il negozio. Abbiamo eliminato carrello, checkout e sync magazzino — e consegnato un prodotto più veloce, più economico, più robusto.

Leggi l'articolo
SMB delivery2026-06-03 · 4 minDa Case 08

Schema.org LocalBusiness: la leva sottovalutata per le SERP regionali

Un piccolo sito di artigiani non si posiziona tramite backlink, ma tramite segnali di dati strutturati. Schema.org LocalBusiness con coordinate geo, `areaServed` e `serviceArea` è una leva diretta per le query locali — più efficace di qualsiasi meta tag, perché Google lo legge come fatto, non come affermazione.

Leggi l'articolo
Debugging2026-04-18 · 5 minDa Case 01

Sintomo ≠ Causa: come l'auto-healer è diventato il vero problema

Un PostgreSQL primary al 91 % di CPU. L'auto-healer killa la query più rumorosa. Un'ora dopo: di nuovo 91 %. La lezione: i quickfix possono incastrarsi in loop infinito se nessuno chiede quale pattern si stia ripetendo.

Leggi l'articolo
Infrastruttura2026-04-18 · 6 minDa Case 04

Cache senza lock è thundering herd: 14 endpoint, 8 worker, un database morto

L'expire della cache è l'unico momento in cui i worker paralleli diventano costosi tutti insieme. Senza un lock per chiave, ogni refresh manda l'intero carico sul percorso più lento.

Leggi l'articolo
Data Engineering2026-04-18 · 5 minDa Case 01

Expression index ignorato: perché COALESCE nell'indice non corrispondeva all'ORDER BY — 29 500× di speedup

Un indice funzionale su COALESCE(column, 0) non aveva alcun effetto. Il planner lo ignorava perché l'ORDER BY usava un'espressione lievemente diversa. Lezione: l'identità dell'espressione non è un suggerimento, è una precondizione.

Leggi l'articolo
Data Engineering2026-04-18 · 4 minDa Case 01

UPDATE con subquery e LIMIT: quando il daemon gira a vuoto

Un semplice pattern UPDATE che sembra corretto su piccoli dataset e in produzione stagna silenziosamente. La causa: un filtro nel posto sbagliato distrugge il progresso.

Leggi l'articolo
Data Engineering2026-04-18 · 4 minDa Case 03

Commit prima dell'I/O asincrono: come un enricher ha tenuto idle l'intero pool PgBouncer

Una transazione in attesa di una risposta HTTP è invisibile nel connection pool — ma occupa lo slot. Con dodici daemon paralleli basta a portare un backend intero al 502.

Leggi l'articolo
Sistemi distribuiti2026-04-18 · 4 minDa Case 01

Finalizzazione batch a livello di container: perché il monitor non ha visto nulla per 83 minuti

Una pipeline con N sub-job paralleli finalizza lo stato a livello di batch — tutti i worker stanno girando, ma il monitor segnala blocco finché l'ultimo container non finisce. La soluzione: finalizzare per container, non per batch.

Leggi l'articolo

Dietro alle lezioni ci sono case reali.

Guarda i sistemi da cui questi insights sono nati — o porta direttamente il tuo problema sul tavolo.