Automatizzare sul serio con n8n
n8n è diventato il mio coltellino svizzero per le automazioni: open source, self-host, e abbastanza flessibile da non mettermi i bastoni tra le ruote quando un flusso cresce.
Perché self-host
Tenere n8n sulla mia infrastruttura significa che il dato non lascia la macchina finché non decido io. Per i workflow che toccano informazioni sensibili è la differenza tra "si può fare" e "non se ne parla".
- Controllo completo su versioni e dipendenze
- Nessun limite artificiale sul numero di esecuzioni
- Possibilità di mettere un reverse proxy davanti e gestire l'auth come voglio
Il pattern webhook → validazione → azione
La maggior parte dei flussi utili parte da un webhook. La regola che mi sono dato è semplice: valida sempre l'input prima di fare qualsiasi cosa.
// Pseudo-logica di un nodo Function
if (!body.email || !body.email.includes('@')) {
throw new Error('Email non valida')
}
return { json: { ok: true } }
Un webhook senza validazione è solo un modo elegante per farsi riempire il database di spazzatura.
Integrare gli LLM senza far esplodere i costi
Quando aggiungo un nodo LLM nel flusso, lo tratto come una chiamata costosa e fallibile:
- Cache aggressiva sugli input ripetuti
- Timeout espliciti
- Un fallback deterministico quando il modello non risponde
L'automazione deve restare prevedibile anche quando il pezzo "intelligente" fa i capricci.