[{"data":1,"prerenderedAt":466},["ShallowReactive",2],{"doc-\u002Fdocs\u002Foperacoes\u002Fmulti-region":3,"docs-all":396},{"id":4,"title":5,"body":6,"category":377,"description":378,"draft":379,"extension":380,"icon":381,"lastReviewed":382,"meta":383,"navigation":384,"order":385,"path":386,"prerequisites":387,"readingTime":388,"seo":389,"stem":390,"tags":391,"__hash__":395},"docs_pt\u002Fdocs\u002Foperacoes\u002Fmulti-region.md","Multi-region (em planejamento Q4 2026)",{"type":7,"value":8,"toc":359},"minimark",[9,24,29,32,54,58,65,68,79,82,94,97,102,126,130,134,137,140,144,147,150,154,157,160,164,167,193,200,204,207,267,270,274,277,303,307,318,329,332,336],[10,11,12],"blockquote",{},[13,14,15,19,20,23],"p",{},[16,17,18],"strong",{},"Status em 2026-04-26:"," multi-region nativo ",[16,21,22],{},"não está disponível",". O recurso entrou no roadmap para o quarto trimestre de 2026. Esta página existe para te ajudar a se preparar — e mostrar como conviver bem sem ele até lá.",[25,26,28],"h2",{"id":27},"por-que-multi-region-importa","Por que multi-region importa",[13,30,31],{},"Três motivos principais:",[33,34,35,42,48],"ol",{},[36,37,38,41],"li",{},[16,39,40],{},"Latência regional."," Servir um usuário no Recife a partir de Virginia adiciona 130ms ida-e-volta antes mesmo da aplicação responder. Para alguns produtos, é tolerável. Para outros, é a diferença entre vender e perder venda.",[36,43,44,47],{},[16,45,46],{},"Disaster recovery."," Um datacenter inteiro pode cair. Provedor inteiro pode ficar fora por horas. Estar presente em outra região te dá um plano B real.",[36,49,50,53],{},[16,51,52],{},"Compliance e residência de dados."," A LGPD favorece dados de cidadãos brasileiros em território nacional. GDPR é mais explícita ainda na Europa. Para vender em mercados regulados, a região onde o dado vive deixa de ser um detalhe técnico.",[25,55,57],{"id":56},"como-rodar-em-varias-regioes-hoje","Como rodar em várias regiões hoje",[13,59,60,61,64],{},"Sem suporte nativo, o caminho atual envolve ",[16,62,63],{},"clusters independentes"," — um por região — coordenados por DNS.",[13,66,67],{},"Topologia típica:",[69,70,75],"pre",{"className":71,"code":73,"language":74},[72],"language-text","                        Cloudflare DNS\n                       (geo steering)\n                              │\n                ┌─────────────┼─────────────┐\n                │             │             │\n        cluster-br      cluster-us    cluster-eu\n        (São Paulo)    (Virginia)    (Frankfurt)\n        4 nós          4 nós         4 nós\n","text",[76,77,73],"code",{"__ignoreMap":78},"",[13,80,81],{},"Cada cluster:",[83,84,85,88,91],"ul",{},[36,86,87],{},"Roda independente. Tem o próprio plano de controle.",[36,89,90],{},"Recebe os mesmos jobs, configurados separadamente.",[36,92,93],{},"Tem o próprio backup, próprios secrets, próprias métricas.",[13,95,96],{},"O DNS resolve o usuário para o cluster mais próximo. Cloudflare Geo Steering ou AWS Route 53 com latency-based routing fazem esse trabalho.",[98,99,101],"h3",{"id":100},"pontos-a-observar","Pontos a observar",[83,103,104,114,120],{},[36,105,106,109,110,113],{},[16,107,108],{},"Mudanças precisam ser aplicadas em todos os clusters."," Para isso vale a pena automatizar — mesmo que seja com um script que faz ",[76,111,112],{},"heroctl jobs submit"," em cada cluster.",[36,115,116,119],{},[16,117,118],{},"Secrets vivem isolados."," Atualizar uma senha em um cluster não atualiza nos outros.",[36,121,122,125],{},[16,123,124],{},"Banco de dados é problema separado."," Réplicas de leitura por região, escrita centralizada, ou modelos active-active — escolha sua estratégia. Não tem mágica aqui.",[25,127,129],{"id":128},"cenarios-comuns","Cenários comuns",[98,131,133],{"id":132},"startup-brasileira-que-quer-expandir","Startup brasileira que quer expandir",[13,135,136],{},"Topologia mínima: um cluster em São Paulo, um cluster em US-East. DNS roteia por proximidade.",[13,138,139],{},"Vantagem: usuário brasileiro tem latência baixa local; cliente internacional não sente o atraso de cruzar o Atlântico duas vezes.",[98,141,143],{"id":142},"empresa-com-clientes-em-mercados-regulados","Empresa com clientes em mercados regulados",[13,145,146],{},"Cluster BR para cliente brasileiro. Cluster EU para cliente europeu. Cluster US para o resto.",[13,148,149],{},"Cada cluster fica em jurisdição apropriada. Dados não atravessam fronteiras a menos que você decida explicitamente.",[98,151,153],{"id":152},"disaster-recovery-puro","Disaster recovery puro",[13,155,156],{},"Não importa onde o usuário está — você só quer um plano B se o provedor primário cair.",[13,158,159],{},"Cluster ativo + cluster passivo em outra região. DNS aponta para o ativo. Em desastre, troca o DNS para o passivo. Restore o snapshot mais recente lá. Tempo de recuperação: minutos a uma hora, dependendo do tamanho.",[25,161,163],{"id":162},"trade-offs-honestos","Trade-offs honestos",[13,165,166],{},"Multi-region não é grátis. Os custos:",[83,168,169,175,181,187],{},[36,170,171,174],{},[16,172,173],{},"Latência cross-region."," Sincronizar qualquer coisa entre regiões adiciona dezenas a centenas de milissegundos.",[36,176,177,180],{},[16,178,179],{},"Tráfego inter-região é caro."," A maioria das nuvens cobra por GB que sai da região. Multiplique por escala e o número assusta.",[36,182,183,186],{},[16,184,185],{},"Operação cresce."," Dois clusters não são duas vezes um cluster — são três vezes (porque a coordenação entre eles é trabalho novo).",[36,188,189,192],{},[16,190,191],{},"Debug fica mais difícil."," Um problema que aparece numa região e não na outra exige hipóteses extras.",[13,194,195,196,199],{},"A regra prática: ",[16,197,198],{},"só vá multi-region quando o custo de não estar for maior que o custo de estar",". Latência ruim que está perdendo cliente. Compliance que está bloqueando contrato. Risco de DR que mantém o time acordado de noite. Se nada disso é verdade, fique em uma região e durma melhor.",[25,201,203],{"id":202},"roadmap","Roadmap",[13,205,206],{},"O que vem por aí no HeroCtl:",[208,209,210,223],"table",{},[211,212,213],"thead",{},[214,215,216,220],"tr",{},[217,218,219],"th",{},"Quando",[217,221,222],{},"O quê",[224,225,226,237,247,257],"tbody",{},[214,227,228,234],{},[229,230,231],"td",{},[16,232,233],{},"Q4 2026",[229,235,236],{},"Federação de clusters: cada região continua um cluster, mas dá para listar e operar todos a partir de um só painel",[214,238,239,244],{},[229,240,241],{},[16,242,243],{},"Q1 2027",[229,245,246],{},"Replicação de armazenamento entre regiões para storage gerenciado pela plataforma",[214,248,249,254],{},[229,250,251],{},[16,252,253],{},"Q2 2027",[229,255,256],{},"Migração de workload entre regiões, com janela controlada",[214,258,259,264],{},[229,260,261],{},[16,262,263],{},"Q3 2027",[229,265,266],{},"Failover automatizado de DNS quando uma região cai",[13,268,269],{},"Datas indicativas. Coisas mudam.",[25,271,273],{"id":272},"como-se-preparar-agora","Como se preparar agora",[13,275,276],{},"Mesmo sem suporte nativo, algumas decisões facilitam a transição:",[83,278,279,285,291,297],{},[36,280,281,284],{},[16,282,283],{},"Mantenha definições de jobs em arquivos versionados."," Você vai querer aplicar os mesmos jobs em mais de um cluster.",[36,286,287,290],{},[16,288,289],{},"Centralize secrets em um cofre externo."," Vault, AWS Secrets Manager, ou similar. Cada cluster busca de lá.",[36,292,293,296],{},[16,294,295],{},"Pense no banco de dados desde já."," Migrar para um modelo regional depois é mais doloroso que começar planejado.",[36,298,299,302],{},[16,300,301],{},"Documente seu RPO e RTO."," Quanto de dado pode perder. Quanto pode ficar fora. As respostas guiam todas as outras decisões.",[25,304,306],{"id":305},"interesse-antecipado","Interesse antecipado",[13,308,309,310,317],{},"Se você quer participar do beta de federação no Q4 2026, escreva para ",[16,311,312],{},[313,314,316],"a",{"href":315},"mailto:roadmap@heroctl.com","roadmap@heroctl.com"," com:",[83,319,320,323,326],{},[36,321,322],{},"Quantas regiões você opera hoje",[36,324,325],{},"Volume estimado de jobs",[36,327,328],{},"Restrições regulatórias relevantes",[13,330,331],{},"Selecionamos um grupo pequeno de parceiros para o programa antecipado. Feedback nessa fase molda o produto final.",[25,333,335],{"id":334},"proximos-passos","Próximos passos",[83,337,338,345,352],{},[36,339,340,344],{},[313,341,343],{"href":342},"\u002Fdocs\u002Fobservabilidade\u002Fbackup-restore","Backup e restore"," — base de qualquer estratégia DR.",[36,346,347,351],{},[313,348,350],{"href":349},"\u002Fdocs\u002Frede\u002Fingress-tls","Ingress"," — DNS e roteamento para múltiplos endpoints.",[36,353,354,358],{},[313,355,357],{"href":356},"\u002Fdocs\u002Ftroubleshooting\u002Fproblemas-comuns","Troubleshooting"," — problemas operacionais comuns.",{"title":78,"searchDepth":360,"depth":360,"links":361},2,[362,363,367,372,373,374,375,376],{"id":27,"depth":360,"text":28},{"id":56,"depth":360,"text":57,"children":364},[365],{"id":100,"depth":366,"text":101},3,{"id":128,"depth":360,"text":129,"children":368},[369,370,371],{"id":132,"depth":366,"text":133},{"id":142,"depth":366,"text":143},{"id":152,"depth":366,"text":153},{"id":162,"depth":360,"text":163},{"id":202,"depth":360,"text":203},{"id":272,"depth":360,"text":273},{"id":305,"depth":360,"text":306},{"id":334,"depth":360,"text":335},"operacoes","O que esperar de multi-region no HeroCtl, como rodar em várias regiões hoje e o roadmap até 2027.",false,"md","i-lucide-globe","2026-04-26",{},true,4,"\u002Fdocs\u002Foperacoes\u002Fmulti-region",[],"5 min",{"title":5,"description":378},"docs\u002Foperacoes\u002Fmulti-region",[392,393,394,202],"multi-region","disaster-recovery","lgpd","a_MBLkQSvL96mWfeQrXilH0OZedL9WjepHvABb0tyd4",[397,404,410,415,420,425,430,435,436,441,447,450,456,461],{"path":398,"title":399,"description":400,"category":401,"order":402,"icon":403},"\u002Fdocs\u002Fapi\u002Freferencia-api","Referência da API REST","Endpoints, autenticação JWT, exemplos com curl e padrões de erro da API do HeroCtl.","api",1,"i-lucide-code",{"path":405,"title":406,"description":407,"category":408,"order":402,"icon":409},"\u002Fdocs\u002Fdeploy\u002Fprimeiro-deploy","Deploy do primeiro app","Suba uma aplicação Node.js com banco Postgres em 50 linhas de YAML. Inclui health check, rolling deploy e rollback.","deploy","i-lucide-rocket",{"path":411,"title":412,"description":413,"category":408,"order":360,"icon":414},"\u002Fdocs\u002Fdeploy\u002Frolling-canary-bluegreen","Rolling, canary, blue-green e rainbow","Quatro estratégias de deploy. Quando usar cada uma, com exemplos completos e trade-offs honestos.","i-lucide-git-branch",{"path":342,"title":416,"description":417,"category":418,"order":360,"icon":419},"Backup e restore do estado do cluster","Como salvar, agendar e restaurar snapshots do plano de controle do HeroCtl. Estratégia de disaster recovery.","observabilidade","i-lucide-archive",{"path":421,"title":422,"description":423,"category":418,"order":402,"icon":424},"\u002Fdocs\u002Fobservabilidade\u002Fmetricas-logs","Métricas e logs","Coleta de métricas, logs e traces sem montar uma pilha de observabilidade externa. Quando vale, e quando integrar com ferramenta de fora.","i-lucide-activity",{"path":426,"title":427,"description":428,"category":377,"order":366,"icon":429},"\u002Fdocs\u002Foperacoes\u002Fcomandos-cli","Referência completa do CLI","Todos os comandos heroctl com sinopse, flags e exemplo. Use como cola de mesa.","i-lucide-terminal",{"path":431,"title":432,"description":433,"category":377,"order":402,"icon":434},"\u002Fdocs\u002Foperacoes\u002Finstalacao","Instalação","Instale o HeroCtl em qualquer servidor Linux com Docker em um único comando. Cobre pré-requisitos, bootstrap e verificação.","i-lucide-download",{"path":386,"title":5,"description":378,"category":377,"order":385,"icon":381},{"path":437,"title":438,"description":439,"category":377,"order":360,"icon":440},"\u002Fdocs\u002Foperacoes\u002Fprimeiro-cluster","Subir cluster de 3 nós","Forme um cluster com 3 servidores em menos de 10 minutos. Tolera falha de 1 nó sem indisponibilidade.","i-lucide-network",{"path":442,"title":443,"description":444,"category":445,"order":360,"icon":446},"\u002Fdocs\u002Frede\u002Ffirewall","Configuração de firewall","Quais portas o HeroCtl usa, quais precisam ficar abertas, e quais nunca deveriam ser expostas à internet.","rede","i-lucide-shield",{"path":349,"title":448,"description":449,"category":445,"order":402,"icon":381},"Ingress e TLS automático","Como expor aplicações pela porta 443 com certificados emitidos e renovados automaticamente, sem operar um roteador externo.",{"path":451,"title":452,"description":453,"category":454,"order":360,"icon":455},"\u002Fdocs\u002Fseguranca\u002Frbac","RBAC e controle de acesso (Business+)","Modelo de papéis, políticas e tokens para limitar quem pode submeter, ler e operar o cluster.","seguranca","i-lucide-users",{"path":457,"title":458,"description":459,"category":454,"order":402,"icon":460},"\u002Fdocs\u002Fseguranca\u002Fsecrets","Gerenciamento de segredos","Como guardar senhas, tokens e chaves fora do spec do job, com criptografia em repouso e rotação versionada.","i-lucide-key",{"path":356,"title":462,"description":463,"category":464,"order":402,"icon":465},"Troubleshooting de problemas comuns","Os 12 problemas mais frequentes em clusters HeroCtl, com sintoma, diagnóstico e correção passo a passo.","troubleshooting","i-lucide-alert-triangle",1777362178347]