N8N: Modos de execução

Saudações.

Vou ensinar como funciona a arquitetura do N8N para execução de programas (workflows).

Pré-requisitos:

  • Ambiente capaz de rotas N8N (VPS, VM, Linux, …);
  • Acesso à Internet durante os procedimentos.

1 – Modo simples (SQLITE)

Nesse modo o N8N não requer nenhuma configuração especial, basta rodar o “n8n start” que ele já estará pronto pra uso.

Sua principal característica é rodar tudo em um único processo e salvar tudo em um arquivo SQLITE (banco de dados inteiro em um único arquivo).

N8N rodando todos os componentes internos em um único processo.

Esse modo é muito bom para testar, brincar, aprender, dar aulas, mas é totalmente inadequado a execuções em produção (produto online, SaaS, Agentes de IA, …).

Um workflow que alocar muita memória (listas grandes) ou entrar em loop compromete todo o ambiente, até mesmo o editor:

N8N rodando todos os componentes internos em um único processo.

2 – Modo fila

O objetivo do modo fila é separar as partes para que elas não sejam afetadas por falhas e possam ser reiniciadas ou duplicadas (escala horizontal).

Par que as partes se comuniquem e troquem serviços e mensagens o N8N faz uso de um serviço de mensagens próprio composto pelo Redis (pub/sub de eventos e cache de chaves) e pelo PostgreSQL (SQL com suporte a transações).

No modo fila o N8N roda desacoplado em 3 partes principais:

  • Editor: responsável pela configuração do ambiente e pela administração, edição e testes dos workflows. Ele preserva todas as capacidades do modo simples, podendo rodar workflows no seu núcleo, embora isso seja desencorajado.
  • Worker: responsável pela execução do workflow (processa os nodes um a um em um ambiente sandblox);
  • Webhook: responsável pela terceirização do servidor HTTP e dos gatilhos de execuções baseados no protocolo HTTP (Webhook, SSE, MCP Server);

Diagrama do modo fila:

As partes do N8N rodam separadas e se comunicam pelo Redis e PostgreSQL

As partes podem rodar em qualquer processador ou servidor, sendo apenas necessário que elas se comuniquem via IP com os servidores Redis e PG.

Escalando:

N8N rodando para escalar horizontalmente

3 – Modo fila com task-runner

O modo fila ainda possui uma pequena fragilidade: tarefas grandes e bugs ainda podem travar o worker, que mesmo rodando separado pode bugar e causar um efeito cascata quando outros workers assumirem o trabalho e também travaram.

Travamentos são mais comuns em códigos do usuário (node Code).

A arquitetura mais segura é separar a execução de código Javascript e Python do usuário para outro serviço segregado: o task-runner.

Ele é um processo que se conecta ao worker: sempre que códigos forem solicitados no workflow o task-runner fica responsável por receber o ambiente (variáveis de ambiente, variáveis do workflow, INPUT do node) e executar o código JS/PY.

Se o task-runner travar, travou! Falha no node Code e o ambiente é preservado.

Diagrama do N8N com TR:

Task-Runner se conecta ao Worker para manifestar sua presença e extrair trabalhos de execução de código do usuário.

Com essas informações você conseguirá entender melhor qual modo escolher e como configurar seu ambiente!

4 – Modo simples (SQLITE) com task-runner

Rodar o N8N com banco SQLITE, embora simples, irá requerer a implementação do task-runner nas futuras versões (v2). Não será mais viável nem possível executar código Javascript ou Python em “Node Code” sem ele.

Task-Runner se conecta ao N8N em instância única com Worker interno.

Terminamos por hoje!

Patrick Brandão, patrickbrandao@gmail.com