tva
← Insights

Self-Hosting de CRM: Por Que Migramos do SaaS

O mercado de CRM SaaS não tem falta de opções. Salesforce, HubSpot, Pipedrive, Zoho — cada um com sua própria faixa de preços, matriz de recursos e gerente de conta pronto para explicar por que o próximo nível é exatamente o que seu negócio precisa. Usamos várias dessas ferramentas ao longo dos anos e descobrimos que, além de certo ponto, a proposta de valor se inverte.

Os custos são o sintoma mais visível. O Pipedrive começa razoavelmente, depois escala por assento. O nível gratuito do HubSpot’ é funcional até o momento em que não é, ponto em que o salto para um plano pago é substancial. O Salesforce opera em uma categoria totalmente diferente: é software empresarial com preços correspondentes, exigindo administradores dedicados para configurar e manter. Para uma empresa de consultoria gerenciando algumas centenas de contatos e alguns negócios ativos, nenhuma dessas estruturas de preços é particularmente eficiente.

Mas o cálculo de custo não é puramente sobre taxas de assinatura. Há também a questão do que você está realmente comprando.

O Problema do Lock-in

Os fornecedores de CRM SaaS vendem conveniência. Em troca, retêm a custódia de seus dados, o controle sobre a interface e a capacidade de alterar preços a seu critério. Esta não é uma observação controversa — é o modelo. O Salesforce aumentou os preços várias vezes. O HubSpot reestruturou o acesso a recursos em seus níveis. O Pipedrive introduziu mínimos de assentos em planos que anteriormente não tinham. Cada um desses movimentos está totalmente dentro dos direitos do fornecedor’, e cada um cria atrito para clientes que construíram fluxos de trabalho em torno dos termos anteriores.

A questão da portabilidade de dados é mais saliente do que a maioria das discussões reconhece. Todo grande CRM oferece funcionalidade de exportação, normalmente para CSV. Mas uma exportação CSV de seus dados de contato não é o mesmo que seus dados de CRM. Relacionamentos entre contatos e empresas, histórico de atividades, cronogramas de negócios, campos personalizados — esses raramente sobrevivem a uma exportação de forma limpa. Na prática, migrar de um CRM SaaS significa reconstruir partes significativas do seu histórico operacional do zero. Os dados são tecnicamente seus, mas recuperá-los de forma útil requer esforço substancial.

Twenty CRM e a Opção de Self-Hosting

O Twenty (twenty.com) é um CRM open-source que emergiu como uma alternativa séria às ofertas comerciais. O código-fonte é desenvolvido ativamente, o modelo de dados é bem estruturado e a interface é genuinamente utilizável. Ele roda em PostgreSQL, o que significa que ferramentas padrão de banco de dados se aplicam diretamente. O projeto não é um repositório de hobby — tem uma equipe financiada por trás e um roadmap claro.

Implantamos em nossa infraestrutura Hetzner existente, a mesma instância CX53 que executa nosso site e outros serviços atrás do Traefik. A configuração do Docker Compose que o Twenty fornece é simples. Os serviços principais são o servidor API, o frontend, o banco de dados PostgreSQL e o Redis para cache e gerenciamento de filas. O overhead total de recursos para uma equipe pequena é modesto: a stack consome menos de 2 GB de RAM em idle.

O processo de configuração levou cerca de duas horas, incluindo configuração de DNS e encerramento de SSL pelo nosso proxy reverso Traefik existente. A documentação do Twenty cobre o caminho de deployment Docker claramente. As variáveis de ambiente estão bem documentadas, as verificações de saúde funcionam como esperado e a migração inicial de dados é executada automaticamente na primeira inicialização. Não houve obstáculos significativos.

O Que a Análise de Custos Realmente Mostra

Executar o Twenty em self-hosting na infraestrutura que já operamos não custa praticamente nada em termos incrementais. Em infraestrutura dedicada, o custo é a fatura mensal do servidor. Nosso Hetzner CX53 roda a aproximadamente €30 por mês e hospeda múltiplos serviços — o CRM é um inquilino em um ambiente compartilhado, não a razão pela qual o servidor existe.

Compare isso com alternativas SaaS comuns. O Pipedrive custa $24–67 por assento por mês dependendo do nível. Para uma equipe de três pessoas, são $72–201 por mês, ou $864–2.412 por ano. O nível Professional do HubSpot’, que desbloqueia automação e relatórios personalizados, custa $800 por mês para cinco assentos. O Salesforce Essentials — o ponto de entrada — começa em $25 por assento por mês, mas os recursos que a maioria das equipes de vendas realmente requer estão no nível Professional a $75 por assento.

Nenhuma dessas cifras é irrazoável para grandes organizações de vendas onde a adoção de CRM impulsiona diretamente o valor mensurável do pipeline. Mas para uma empresa de consultoria técnica onde o CRM é principalmente um banco de dados de contatos e histórico de engajamento, o cálculo é diferente. O overhead operacional de um deployment em self-hosting é medido em horas por ano, não por semana. O ponto de equilíbrio é alcançado rapidamente.

Propriedade de Dados na Prática

Quando seus dados de CRM vivem em um banco de dados PostgreSQL que você controla, as implicações operacionais são concretas. Os backups são dumps de banco de dados padrão — executamos exportações diárias de pg_dump para o Hetzner Object Storage, retidas por 30 dias com snapshots mensais mantidos por um ano. As queries não têm restrições. Você pode fazer join das tabelas do CRM com seus próprios dados, construir relatórios personalizados contra o schema bruto ou alimentar dados de contato em outros sistemas internos sem limites de taxa de exportação ou cotas de chamadas de API.

Isso importa mais do que parece inicialmente. CRMs SaaS impõem limites de taxa de API que se tornam restrições arquiteturais em escala. O nível gratuito do HubSpot’ limita as solicitações a 500 por dia. Os limites do Pipedrive’ variam por plano. Quando você precisa sincronizar dados de CRM com sistemas externos — ferramentas de faturamento, gerenciamento de projetos, dashboards personalizados — esses limites moldam quais integrações são arquiteturalmente viáveis. Com um banco de dados PostgreSQL em self-hosting, a única restrição é a capacidade do servidor’.

Há também a questão do que acontece com seus dados se o fornecedor for adquirido, alterar seus termos ou cessar as operações. Esses são eventos de baixa probabilidade para os principais fornecedores, mas não são eventos de probabilidade zero. Possuir seus dados significa possuir o modelo de risco, não delegá-lo.

Personalização Sem um Parceiro de Desenvolvimento

O Twenty é construído em uma API GraphQL com um modelo de dados orientado por metadados. Adicionar campos personalizados a qualquer entidade leva segundos na interface — você define o tipo de campo, ele aparece imediatamente na UI e no schema da API. Sem exportações de configuração, sem deployments em sandbox, sem tickets de suporte, sem necessidade de atualização de nível.

Isso é qualitativamente diferente do que os CRMs SaaS oferecem. O Salesforce permite personalização extensiva, mas o modelo de personalização é complexo o suficiente para sustentar toda uma indústria de serviços profissionais ao seu redor. O Pipedrive permite campos personalizados na maioria dos objetos, mas a personalização da interface é limitada. As capacidades de personalização do HubSpot’ dependem muito de qual plano você está pagando.

A abordagem do Twenty — schema aberto, controle local — significa que quando um engajamento requer rastreamento de informações que o modelo de dados padrão não cobre, você o estende diretamente. Para uma empresa de consultoria que às vezes precisa rastrear estruturas de negócios incomuns ou metadados específicos do cliente, essa flexibilidade provou ser genuinamente útil.

Estratégia de Backup

Nossa configuração de backup é intencionalmente simples. Um pg_dump automatizado diário do banco de dados PostgreSQL do Twenty, comprimido e enviado para o Hetzner Object Storage. Os dados da aplicação — imagens de perfil, anexos — vivem em um volume Docker com backup via restic no mesmo horário. A retenção é de 30 dias para snapshots diários, 12 meses para snapshots mensais.

Os testes de recuperação são executados trimestralmente: restaurar o backup em um banco de dados de staging, verificar as contagens de linhas, verificar aleatoriamente a integridade dos dados. Uma restauração completa do backup para uma instância Twenty operacional leva aproximadamente 15 minutos — aceitável para uma ferramenta que não está no caminho crítico para operações em tempo real. O Hetzner Object Storage custa €6 por mês por 1 TB; nossos backups de CRM consomem uma pequena fração dessa alocação.

A disciplina operacional necessária aqui é modesta. Os jobs de backup rodam como tarefas cron no host, registram seus resultados em um sistema de monitoramento e alertam em caso de falha. Esta é uma prática de infraestrutura padrão que qualquer equipe que executa cargas de trabalho de servidor já deveria ter implementado.

Quando o Self-Hosting Faz Sentido

O caso para hospedar um CRM em self-hosting é mais forte quando várias condições se alinham. Sua equipe tem capacidade operacional genuína para executar contêineres Docker e gerenciar um banco de dados PostgreSQL — este é um pré-requisito real, não uma formalidade. Você já opera infraestrutura de servidor com capacidade disponível. Seu caso de uso de CRM é relativamente estável, o que significa que você não depende do roadmap do fornecedor’ para recursos que precisará no próximo trimestre.

Os argumentos de custo e propriedade de dados são reais, mas são secundários à questão da capacidade operacional. O self-hosting troca dinheiro por tempo e expertise. Se o tempo operacional da sua equipe’ for mais caro do que uma assinatura SaaS, a economia pode não favorecer a troca. O ponto de equilíbrio não é puramente financeiro — é também uma função de onde as habilidades e a disponibilidade da sua equipe’ realmente estão.

Quando Não Faz Sentido

Se sua organização precisa de integrações empresariais profundas — um CRM conectado a uma plataforma de automação de marketing, um CDP e um data warehouse, todos mantidos por uma função RevOps dedicada — o self-hosting é a direção errada. O ecossistema de integração em torno dos CRMs comerciais é profundo porque os fornecedores investiram anos na sua construção. Uma instância Twenty em self-hosting se conecta por meio de sua API GraphQL ou acesso direto ao banco de dados. Ela não tem uma biblioteca de 500 conectores pré-construídos.

Da mesma forma, se ninguém em sua equipe consegue diagnosticar um contêiner Docker com falha, ler logs do PostgreSQL ou restaurar a partir de um backup de banco de dados, o fardo operacional superará rapidamente as economias de custo. O caminho do self-hosting requer uma linha de base de competência em infraestrutura que nem toda equipe tem — e adquirir essa competência tem seu próprio custo.

Os requisitos de conformidade também podem alterar a equação. Se sua empresa opera sob regulamentações que exigem tratamento certificado de dados de fornecedores de tecnologia — atestados SOC 2, auditorias ISO 27001 — um deployment em self-hosting significa que essas certificações devem se aplicar à sua própria infraestrutura. Se isso é uma vantagem ou um fardo depende da sua postura de conformidade existente.

O Que Realmente Executamos

Nosso deployment de produção do Twenty está em execução há vários meses sem um incidente significativo. Gerenciamento de contatos, registros de empresas, rastreamento de negócios e logging de atividades funcionam conforme o esperado. A interface é limpa o suficiente para que o onboarding não exigiu treinamento formal. A API GraphQL tem sido útil para extrair contexto de CRM para outras ferramentas internas — especificamente para relatórios de clientes e rastreamento de engajamento que construímos nós mesmos em vez de comprar como um add-on SaaS.

A manutenção é menor do que o antecipado. O Twenty lança atualizações em um ritmo constante; implantá-las é uma questão de baixar a nova imagem Docker e reiniciar o serviço, normalmente em menos de cinco minutos. O banco de dados PostgreSQL não requereu intervenção manual além da verificação rotineira de backup.

A decisão não foi ideológica. Não nos afastamos do CRM SaaS porque SaaS é inerentemente errado ou porque o self-hosting é inerentemente virtuoso. A decisão foi operacional: para o nosso caso de uso específico, o caminho em self-hosting é mais simples, mais barato e nos dá melhor controle sobre dados que nos pertencem. Para uma organização com restrições diferentes — uma equipe de vendas maior, requisitos de integração mais profundos ou capacidade de infraestrutura limitada — a conclusão pode ser diferente. O ponto é fazer o cálculo explicitamente em vez de recorrer ao modelo de assinatura porque é o caminho de menor resistência.


Insights Relacionados

Artigos relacionados