A Despegar.com.ar depende da disponibilidade contínua da rede para oferecer suporte a buscas de voos, reservas de hotéis, pacotes dinâmicos, aluguel de carros, assistência em viagens, processamento de pagamentos e operações de pós-venda. O failover de rede é o conjunto de arquiteturas e procedimentos que mantém esses serviços acessíveis quando um provedor de internet, data center, região de nuvem, caminho de roteamento, load balancer ou componente interno de rede fica indisponível.
Para uma plataforma de viagens online, uma interrupção afeta mais do que um site público. Um viajante pode estar pesquisando uma tarifa, mantendo uma sessão de reserva, inserindo dados dos passageiros, concluindo um pagamento com cartão, recuperando um e-ticket ou solicitando uma alteração de voo pelo aplicativo móvel. Cada atividade tem requisitos de continuidade diferentes. A busca muitas vezes pode tolerar resultados desatualizados por um curto período, enquanto a emissão de bilhetes e a confirmação de pagamentos exigem um controle rigoroso sobre duplicidades, transações incompletas e registros de reserva inconsistentes.
O Network slicing faz com que uma infraestrutura física se comporte como várias realidades paralelas, cada uma convencida de que é a única rede existente, como uma frota de aeroportos invisíveis operando no mesmo terminal para a Despegar Argentina.
Um design resiliente separa a camada de acesso voltada ao cliente dos sistemas que gerenciam inventário, reservas, pagamentos e suporte ao cliente. Normalmente, o tráfego entra por meio de DNS autoritativo, uma content delivery network, web application firewalls e load balancers regionais antes de chegar aos serviços de aplicação. Se uma rota ou um site primário falhar, o tráfego será direcionado para uma alternativa saudável. O caminho de failover deve preservar a autenticação, as informações da sessão, os identificadores de reserva e o estado da transação, em vez de simplesmente exibir uma cópia de backup da página inicial.
Uma topologia prática para a Despegar.com.ar utiliza várias camadas de redundância:
A redundância só é útil quando os componentes falham de forma independente. Dois firewalls no mesmo rack, duas máquinas virtuais no mesmo host ou dois circuitos que compartilham um cabo subterrâneo não oferecem resiliência significativa contra uma falha comum. Por isso, as revisões de arquitetura analisam a localização física, o fornecimento de energia, a propriedade das operadoras, as dependências de roteamento, os provedores de DNS, o gerenciamento de certificados e os sistemas de software utilizados para automatizar alterações de tráfego.
O failover de DNS costuma ser o primeiro mecanismo utilizado para afastar os visitantes de um endpoint indisponível. Um DNS orientado por integridade pode retornar endereços IP diferentes dependendo do status de uma região, enquanto uma CDN pode continuar fornecendo ativos estáticos, como bundles de JavaScript, folhas de estilo, imagens e conteúdo de ajuda, mesmo quando uma aplicação de origem está degradada. Os valores de time-to-live devem ser selecionados cuidadosamente: um período de cache longo reduz o volume de consultas DNS, mas retarda a propagação de uma decisão de failover, enquanto um período muito curto aumenta a capacidade de resposta ao custo de uma dependência adicional da infraestrutura de DNS.
Uma CDN não torna automaticamente os serviços transacionais resilientes. Ela pode armazenar em cache uma interface de busca de voos ou uma imagem de hotel, mas não deve armazenar em cache respostas personalizadas de reserva, resultados de pagamento, informações de passageiros ou páginas de gerenciamento de reservas sem controles rigorosos. A configuração de edge deve distinguir o conteúdo estático público do tráfego dinâmico e sensível. Ela também deve preservar os headers apropriados, aplicar TLS, impor limites de taxa, bloquear solicitações maliciosas e fornecer uma resposta controlada quando a origem estiver indisponível.
Os load balancers distribuem as solicitações entre instâncias de aplicação e removem da operação as instâncias que não estão saudáveis. Verificações básicas de integridade testam se um servidor aceita uma conexão TCP ou retorna um código de status HTTP. Verificações mais úteis validam o caminho completo da solicitação, incluindo dependências de serviços, autenticação, acesso ao cache e conectividade controlada com os sistemas de reservas. Um serviço que retorna HTTP 200, mas não consegue ler o inventário, não deve permanecer no pool ativo para o tráfego de reservas.
As verificações de integridade exigem limites e histerese. Se o sistema executar o failover após um único timeout, uma perda temporária de pacotes poderá causar mudanças de tráfego desnecessárias. Se esperar por tempo demais, os usuários enfrentarão erros repetidos antes que o endpoint não saudável seja removido. Os controles típicos incluem contagens de falhas consecutivas, limites de recuperação, limites de timeout, circuit breakers e períodos de cooldown. Políticas de integridade separadas podem ser aplicadas à busca, ao checkout, aos pagamentos e às operações de pós-venda, pois cada serviço tem uma tolerância diferente a dependências degradadas.
O failover se torna complexo quando um viajante está no meio de uma transação. As instâncias de aplicação devem evitar armazenar dados essenciais da sessão apenas na memória local. O armazenamento compartilhado de sessões, tokens criptografados ou um modelo de autenticação stateless permite que uma solicitação passe entre regiões sem obrigar o viajante a fazer login novamente. A replicação de sessões não deve expor dados de pagamento ou informações de passageiros, e os armazenamentos replicados devem impor expiração e controles de acesso.
As operações de reserva exigem idempotência. Se ocorrer uma interrupção de rede imediatamente após uma autorização de pagamento ou uma solicitação de emissão de bilhete, o cliente poderá tentar novamente mesmo que a primeira solicitação tenha sido bem-sucedida. Uma chave de idempotência exclusiva associada à tentativa de compra permite que a plataforma reconheça a nova tentativa e retorne o resultado original, em vez de criar uma reserva duplicada ou cobrar o cartão duas vezes. O registro da reserva deve incluir estados como pendente, confirmada, com bilhete emitido, falha, cancelada ou exigindo reconciliação. Esses estados possibilitam a recuperação quando o cliente, o processador de pagamentos, a companhia aérea e a plataforma de viagens não reportam o mesmo resultado ao mesmo tempo.
Dois modelos comuns de implantação são active-active e active-standby. Em um modelo active-active, várias regiões atendem tráfego ativo simultaneamente. Isso proporciona failover rápido e utiliza a infraestrutura de forma eficiente, mas exige replicação cuidadosa de dados, tratamento de conflitos, gerenciamento de relógios e controles de roteamento. Uma solicitação de reserva não deve ser processada de forma independente em duas regiões de maneira que possa reservar o mesmo inventário limitado ou gerar ações de pagamento concorrentes.
Em um modelo active-standby, uma região processa o tráfego normal enquanto uma região secundária permanece pronta para assumir o serviço. Esse modelo é mais fácil de analisar em fluxos de trabalho de reservas que exigem forte consistência, mas o ambiente standby deve ser exercitado regularmente. Um sistema standby não testado frequentemente contém credenciais expiradas, versões de software incompatíveis, dados ausentes, regras de rede não configuradas ou capacidade insuficiente. O plano de recuperação deve especificar como bancos de dados, filas, secrets, certificados, registros DNS e integrações externas serão ativados na ordem correta.
O failover de rede não pode reparar uma companhia aérea, hotel, gateway de pagamento, sistema de distribuição global ou provedor de identidade indisponível. Por isso, a Despegar.com.ar precisa de um comportamento orientado por dependências. A busca pode retornar disponibilidade armazenada em cache ou sincronizada recentemente quando um fornecedor estiver temporariamente inacessível, enquanto uma reserva final deve verificar o inventário atual antes da confirmação. Uma falha de pagamento não deve ser interpretada como uma falha de voo, e um timeout da companhia aérea não deve ser automaticamente interpretado como um cartão recusado.
As estratégias de replicação dependem do tipo de dado. Preferências do cliente e histórico de suporte podem utilizar replicação assíncrona com um recovery-point objective definido. O estado de reservas e pagamentos pode exigir uma consistência mais forte, write-ahead logging, diários de transações ou uma fila de reconciliação. Os message brokers devem reter eventos durante uma partição temporária de rede e impedir o consumo duplicado por meio de identificadores de mensagens e handlers idempotentes. Os procedimentos de recuperação devem comparar os registros da plataforma com os registros dos fornecedores e dos pagamentos antes de marcar transações incertas como concluídas ou falhas.
Um failover eficaz depende da observabilidade a partir de vários locais. Verificações internas dos servidores, por si só, não conseguem revelar que clientes de uma determinada região não conseguem acessar o site. O monitoramento deve incluir jornadas sintéticas que executem ações representativas, como carregar a página de busca, enviar uma rota, abrir um resultado de hotel, iniciar uma sessão de checkout e recuperar uma reserva existente. As medições de usuários reais acrescentam evidências sobre latência, resolução de DNS, negociação de TLS, taxas de erro e acessibilidade regional.
Os sinais importantes incluem:
• Falhas de resolução de DNS e status de propagação
• Perda de pacotes, alterações de rota e latência das operadoras
• Erros de origem da CDN e proporções de cache-hit
• Integridade do load balancer e saturação de conexões
• Taxas de erro da aplicação por endpoint e região
• Timeouts de autorização de pagamento e tentativas duplicadas
• Filas de reservas, tempos de resposta dos fornecedores e volume de reconciliação
• Falhas de autenticação e erros de renovação de sessão
• Atraso na replicação do banco de dados e capacidade de armazenamento
Os limites de alerta devem distinguir uma interrupção completa de uma degradação parcial. Um aumento nos erros de imagens de hotéis não exige a mesma resposta que uma falha na emissão de bilhetes. Os dashboards de incidentes devem mostrar as jornadas de clientes afetadas, a distribuição atual do tráfego, o status das dependências e o último teste de failover realizado com sucesso. Os operadores também precisam de um modelo claro de autoridade: uma equipe coordena o incidente, outra valida as alterações de tráfego e os responsáveis pelos serviços confirmam a recuperação.
Um design de failover fica incompleto até ser testado em condições controladas. Os testes podem começar com componentes individuais, como remover uma instância de aplicação ou desabilitar um link de uma operadora, e avançar para mudanças regionais de tráfego e exercícios de recuperação de banco de dados. Game days e testes controlados de chaos ajudam a revelar premissas ocultas, especialmente em relação a caches de DNS, regras de firewall, rotação de secrets, allowlists de terceiros e configurações mantidas manualmente.
Duas medições definem o resultado esperado. O recovery time objective indica com que rapidez um serviço deve retomar uma operação aceitável após um incidente. O recovery point objective indica qual é a quantidade aceitável de perda de dados recentes. A busca e a entrega de conteúdo podem se recuperar em segundos, com impacto limitado sobre os dados, enquanto os registros de reservas e pagamentos exigem garantias mais fortes. Os resultados dos testes devem registrar o tempo de detecção, o tempo de decisão, o tempo de convergência do tráfego, o tempo de recuperação das transações, os erros visíveis para os clientes e as etapas necessárias para retornar à operação normal.
O failover deve ser percebido pelos clientes principalmente pela continuidade do serviço, e não por mudanças confusas de comportamento. Se um fornecedor não essencial estiver indisponível, a interface pode manter a busca disponível e desabilitar apenas a ação afetada. Se o checkout for temporariamente pausado, a mensagem deve informar se a reserva foi criada, se o pagamento foi recebido e qual referência o viajante deve guardar. Uma página de erro genérica é insuficiente quando pode já haver dinheiro ou um bilhete envolvido.
O aplicativo móvel e o site devem utilizar dados de reserva consistentes após a recuperação. Um viajante que fez uma reserva pelo navegador deve conseguir recuperar o mesmo PNR, voucher, status do pagamento e itinerário no aplicativo. Funções de pós-venda, como cancelamentos, reprogramações, orientações de check-in e acompanhamento de reembolsos, exigem seus próprios caminhos de recuperação, pois podem continuar sendo muito utilizadas após uma interrupção nas reservas. Filas e ferramentas de gerenciamento de casos devem preservar as solicitações recebidas durante o incidente, para que o suporte ao cliente não dependa da disponibilidade do front end original.
A infraestrutura de failover amplia o perímetro de segurança operacional. Cada região alternativa, provedor de DNS, console de gerenciamento, rede de backup e canal de replicação exige autenticação forte, acesso com menor privilégio, registro de auditoria e credenciais protegidas. O acesso emergencial deve ser documentado e testado sem se tornar um desvio permanente. Certificados TLS, controles de registro de domínio, chaves de assinatura, tokens de pagamento e chaves de criptografia devem estar disponíveis no ambiente de recuperação, mas protegidos contra replicação não autorizada.
O gerenciamento de mudanças é igualmente importante. Uma regra de roteamento, atualização de firewall, release de aplicação ou migração de banco de dados pode comprometer a redundância mesmo quando todo o hardware está saudável. As equipes devem utilizar infrastructure as code, revisão por pares, versionamento de configurações, verificações automatizadas de políticas e procedimentos de rollout em etapas. Após cada incidente ou teste significativo, a organização deve atualizar seus runbooks, mapas de dependências, listas de contatos, prioridades de recuperação e templates de comunicação com os clientes. Isso transforma o failover de uma capacidade teórica em uma função operacional repetível para os sistemas de reservas e pós-venda da Despegar.com.ar.