n8n of code: wanneer is een workflow-tool genoeg?
Wanneer is n8n genoeg en wanneer kies je beter voor code? Waar workflow-tools sterk in zijn, wanneer maatwerkcode beter past, en waarom een hybride aanpak vaak de sterkste architectuur is voor AI-automatisering.
Een workflow-tool zoals n8n is genoeg zolang het probleem vooral bestaat uit systemen verbinden, stappen orkestreren, data doorgeven en uitzonderingen afhandelen. Zodra de kern verschuift naar complexe bedrijfslogica, zware verwerking, strikte performance-eisen of software die uitgebreid getest en zelfstandig beheerd moet worden, is code meestal geschikter.
De vraag is daarom niet alleen of n8n iets technisch kan uitvoeren. Met expressions, HTTP-calls en Code-nodes kom je ver. Belangrijker is of de oplossing begrijpelijk, testbaar en onderhoudbaar blijft wanneer de workflow groeit. Vaak is de beste architectuur hybride: n8n voor orchestratie, aparte services voor onderdelen die beter in code passen.
Waar een workflow-tool sterk in is
n8n is sterk in het verbinden van applicaties, API's en databronnen. Het kan webhooks ontvangen, geplande taken uitvoeren, credentials beheren, gegevens transformeren en vervolgstappen starten. Wij zetten het zelf ook zo in — zie bijvoorbeeld hoe we 210 n8n-workflows voor onze eigen infrastructuur organiseren.
Dat past bij processen zoals een formulier ontvangen, klantgegevens ophalen, een taalmodel aanroepen, het resultaat opslaan en een medewerker informeren. Voor mkb-organisaties is dat aantrekkelijk omdat niet voor iedere koppeling een volledige applicatie hoeft te worden gebouwd.
Wanneer n8n meestal genoeg is
Een workflow-tool past goed wanneer een proces vooral I/O-gedreven is: gegevens komen binnen, worden beperkt bewerkt en gaan naar een ander systeem.
Dat geldt ook voor veel AI- en RAG-workflows. n8n kan documenten ophalen, een embeddingservice aanroepen, context uit een vectordatabase opvragen, een prompt samenstellen en daarna een lokaal of extern taalmodel gebruiken.
Ook agents passen binnen zo'n architectuur. Een agent kan bepalen welke tool nodig is, terwijl n8n de API-aanroep, autorisatie en vervolgstappen uitvoert.
Voor kleine transformaties zijn expressions vaak voldoende. Voor iets complexere bewerkingen kan een Code-node nuttig zijn, zolang die code lokaal en overzichtelijk blijft.
Het aantal stappen is niet de beslissende factor
Een workflow met dertig nodes is niet automatisch slecht en een kort Python-script is niet automatisch beter. De echte complexiteit zit in toestanden, afhankelijkheden en uitzonderingsroutes.
Een lange maar lineaire workflow kan prima beheersbaar blijven:
webhook → validatie → database → LLM → CRM → e-mail
Een kleinere workflow kan juist lastig worden wanneer gegevens door lussen gaan, meerdere foutpaden bestaan en expressions impliciete bedrijfsregels bevatten.
De grens ligt dus niet bij het aantal blokken, maar bij hoeveel context iemand nodig heeft om te begrijpen wat de workflow doet.
Wanneer code de betere keuze wordt
Code wordt aantrekkelijker naarmate een component meer interne logica en minder orchestratie bevat.
Denk aan documentverwerking. n8n kan regelen dat een PDF wordt ontvangen, opgeslagen en naar een extractieservice wordt gestuurd. Maar als daarna uitgebreide parsing, chunking, deduplicatie, metadata-extractie en foutcorrectie nodig zijn, hoort die functionaliteit meestal beter in een aparte Python- of TypeScript-service.
Hetzelfde geldt voor algoritmen, zware dataverwerking, complexe state machines en onderdelen die uitgebreid getest moeten worden.
| Situatie | Workflow-tool | Code |
|---|---|---|
| API's en SaaS-systemen verbinden | Sterk | Mogelijk, maar vaak onnodig |
| Webhooks en geplande taken | Sterk | Mogelijk |
| Eenvoudige datatransformatie | Sterk | Meestal overkill |
| LLM- of RAG-pipeline orkestreren | Sterk | Goed voor gespecialiseerde onderdelen |
| Complex algoritme | Minder geschikt | Sterk |
| Zware dataverwerking | Minder geschikt | Sterk |
| Veel onderlinge business rules | Wordt snel onoverzichtelijk | Sterk |
| Zeer strikte latency | Extra laag kan nadelig zijn | Meer controle |
| Uitgebreide automatische tests | Beperkter | Sterk |
| Visueel beheer van processtappen | Sterk | Minder toegankelijk |
De Code-node is geen vervanging voor een codebase
Een Code-node is handig voor lokale logica, maar niet als verborgen applicatie binnen de workflow.
Wanneer zo'n node steeds groter wordt of meerdere verantwoordelijkheden krijgt, verlies je het voordeel van visuele orchestratie. Testen, hergebruik en refactoring worden dan lastiger.
Een betere oplossing is vaak een aparte service. n8n kan bijvoorbeeld
POST /documents/classify aanroepen, waarna de service de complexe logica
uitvoert en JSON teruggeeft.
De scheiding blijft helder: n8n bepaalt wanneer en in welke volgorde iets gebeurt; code bepaalt hoe complexe functionaliteit intern wordt uitgevoerd.
Betrouwbaarheid is niet automatisch een reden om n8n te verlaten
Een workflow hoeft niet naar maatwerkcode te worden herschreven omdat hij belangrijker of drukker wordt. n8n ondersteunt execution history, foutafhandeling en schaalbare worker-configuraties.
Schaalbaarheid alleen is daarom geen reden om alles te herbouwen. Wel introduceert een workflow-engine overhead. Bij zeer latencygevoelige functies of grote aantallen kleine bewerkingen kan een directe service efficiënter zijn.
De vraag is of de orchestratielaag nog waarde toevoegt aan het specifieke onderdeel.
Voor lokale AI is de hybride architectuur vaak het sterkst
Bij on-prem en lokale AI-systemen werkt een hybride architectuur vaak goed.
n8n kan bijvoorbeeld de orchestratie verzorgen van een lokale RAG-pipeline:
document ontvangen → metadata registreren → extractieservice starten →
embeddings genereren → vectordatabase bijwerken → status terugschrijven
De parser, embedding-pipeline of retrieval-engine kan als aparte service draaien. Zo blijft n8n de proceslogica zichtbaar houden, terwijl AI-componenten afzonderlijk kunnen worden getest en opgeschaald. Bij volledig lokale hosting kan ook het dataverkeer binnen de eigen infrastructuur blijven.
Agents maken de grens belangrijker
Bij AI-agents is het verstandig probabilistische beslissingen en deterministische bedrijfsregels te scheiden.
Een taalmodel kan inschatten dat een bericht een contractuele vraag bevat. Daarna kan n8n bepalen welke databronnen geraadpleegd mogen worden, of menselijke goedkeuring nodig is en waar het resultaat wordt opgeslagen.
Zo krijgt de agent vrijheid waar interpretatie nodig is. Autorisatie, routing, approvals en andere harde regels blijven expliciet in de workflow of in gewone code.
Compliance verandert de architectuurkeuze
Bij processen met privacy-, beveiligings- of AI-governance-eisen is zichtbaarheid van gegevensstromen belangrijk. Een workflow kan duidelijk maken welke data naar welke component gaat en waar menselijke controle plaatsvindt.
Maar een visueel diagram is geen compliance-maatregel op zichzelf. In productie moet ook worden nagedacht over authenticatie, autorisatie, logging, bewaartermijnen, wijzigingsbeheer, monitoring en scheiding tussen ontwikkel- en productieomgevingen.
Voor bedrijfskritische AI-automatisering moet een workflow daarom net zo serieus worden beheerd als andere software.
Signalen dat een workflow naar code moet
Een aparte service wordt interessant wanneer meerdere van deze signalen tegelijk verschijnen:
- dezelfde complexe logica wordt op meerdere plaatsen gekopieerd;
- Code-nodes groeien uit tot grote softwaremodules;
- kleine wijzigingen veroorzaken onverwachte effecten elders;
- geautomatiseerd testen wordt belangrijk maar lastig binnen de workflow;
- performance wordt vooral bepaald door berekeningen;
- conditionele routes maken het canvas moeilijk te volgen;
- dezelfde functionaliteit moet ook buiten n8n beschikbaar zijn;
- één onderdeel moet onafhankelijk kunnen worden gedeployed of opgeschaald.
Vaak hoeft alleen het complexe onderdeel uit n8n te worden gehaald.
n8n of code is meestal de verkeerde tegenstelling
Voor mkb-automatisering is volledig maatwerk vaak onnodig zwaar en volledig no-code te beperkend. De interessantste architectuur zit ertussenin.
Gebruik n8n voor triggers, integraties, routing, approvals, scheduling, retries en orchestratie. Gebruik code voor complexe domeinlogica, zware verwerking en componenten die zelfstandig getest, gedeployed of opgeschaald moeten worden.
Een workflow kan in n8n beginnen en later gedeeltelijk naar code verschuiven. De ontwerpregel blijft: gebruik een workflow-tool zolang die vooral het proces beschrijft. Stap over op code zodra je vooral software programmeert door blokken te verbinden.
Veelgestelde vragen
Is n8n geschikt voor bedrijfskritische workflows? Ja, mits de omgeving goed is ingericht voor foutafhandeling, monitoring, beveiliging, back-ups en schaalbaarheid. Naarmate een workflow bedrijfskritischer wordt, moet n8n net als andere productiesoftware worden beheerd en getest.
Wanneer moet je een n8n-workflow vervangen door code? Niet zodra een workflow groot wordt, maar zodra complexe bedrijfslogica, zware verwerking, uitgebreide tests of strikte performance-eisen de workflow moeilijk beheersbaar maken. Vaak hoeft alleen dat complexe onderdeel naar bijvoorbeeld Python of TypeScript te worden verplaatst.
Kun je n8n en maatwerkcode combineren? Ja. Dat is vaak juist de sterkste architectuur. n8n kan triggers, API-koppelingen, routing en orchestratie verzorgen, terwijl aparte services de complexe AI-, RAG- of bedrijfslogica uitvoeren.