Antes de escolher uma plataforma de CDC, teste o estado de reinicialização, a recuperação, a validação, o comportamento de reprodução, os diagnósticos e os limites de recuperação.
A maioria das demonstrações do CDC mostra o processo funcionando conforme o planejado. Os dados são transferidos. A meta é atualizada. O painel permanece verde. Mas uma avaliação de recuperação do CDC precisa testar uma questão diferente:
O que acontece quando o caminho se rompe?
As diretrizes do AWS Well-Architected recomendam testar a resiliência em condições adversas em ambientes o mais próximos possível da produção. Elas alertam contra o projeto de resiliência sem verificar como a carga de trabalho se comporta quando ocorrem falhas e cargas inesperadas.*
Uma prova de conceito (POC) da plataforma oferece à sua equipe a oportunidade de observar como o sistema se comporta quando a replicação atrasa, para durante o processamento ativo, perde o acesso imediato ao histórico de origem necessário ou precisa comprovar que o destino recuperado está correto.
O objetivo não é construir uma falha artificial que nunca ocorreria em produção. É avaliar se a plataforma torna a recuperação visível, testável e defensável em condições que refletem o seu ambiente.
Um plano de recuperação prático do CDC deve testar oito áreas:
Para cada teste, pergunte-se qual condição foi introduzida, o que os operadores puderam ver, qual estado a plataforma manteve, o que aconteceu durante a recuperação, quais evidências permaneceram posteriormente e o que a plataforma não conseguiu estabelecer. Cada conclusão deve estar relacionada à origem, ao destino, à topologia, à versão, à configuração e ao cenário de falha testado.
O padrão é simples: mostre-nos o que acontece quando o caminho se rompe. Em seguida, mostre-nos como saberíamos que a recuperação foi bem-sucedida.
Chegar a este estágio significa que você provavelmente já determinou que a recuperação merece uma avaliação mais detalhada. Não repita toda a avaliação de prontidão dentro da Prova de Conceito (POC). Em vez disso, incorpore as lacunas documentadas no ambiente atual ao plano de testes.
Se essas lacunas não foram documentadas, comece com "Quando um problema de recuperação do CDC se torna um problema de plataforma ?" e documente as lacunas de recuperação no ambiente atual antes de definir a prova de conceito.
Em seguida, defina o ambiente que a prova de conceito (POC) pretende representar. No mínimo, documente:
Uma demonstração genérica fornece evidências limitadas.
A questão importante não é: a plataforma suporta recuperação? É: como a recuperação funciona para nossa origem, destino, configuração, carga de trabalho e requisitos operacionais?
As seis áreas de capacidade abaixo definem o que uma recuperação eficaz de CDC deve tornar visível, testável e explicável. Os oito testes de prova de conceito (POC) a seguir mostram como determinar se uma plataforma oferece essas capacidades para a origem, o destino, a topologia e a configuração que você planeja utilizar.
Os operadores devem ser capazes de entender onde o processamento foi interrompido, qual estado permanece disponível e onde se espera que o processamento seja retomado. O estado pode ser representado por um ponto de verificação, marcador, posição de reinicialização, posição do log de origem, RBA, LRSN, LSN ou outro marcador específico da plataforma. Esses termos são relacionados, mas não intercambiáveis.
Pergunta de avaliação: O que cada marcador de recuperação representa e como a plataforma o utiliza para determinar onde o processamento é retomado?
Para configurações suportadas, a recuperação pode depender de logs ativos, logs arquivados, diários ou outros históricos de origem retidos. A questão não é simplesmente se o histórico existe, mas se a plataforma consegue identificar, acessar e processar o histórico necessário por meio de um caminho suportado.
Questão de avaliação: De qual histórico de origem a recuperação é necessária, por quanto tempo ele fica disponível e o que acontece quando esse histórico não pode mais ser processado?
Um processo em execução, uma recuperação em andamento e uma recuperação paralisada são estados operacionais diferentes. Os operadores precisam de evidências como atraso, tamanho e direção do backlog, taxa de transferência, avanço na posição de processamento, progresso na aplicação do alvo e novas atividades de origem que chegam durante a recuperação.
Pergunta de avaliação: Os operadores conseguem dizer se a lista de espera está diminuindo, se mantendo estável ou continuando a crescer?
A validação da recuperação vai além do status do processo. A plataforma deve ajudar as equipes a coletar evidências adequadas aos dados afetados, ao período do incidente e ao risco para o negócio, deixando claros os limites dessas evidências.
Questão de avaliação: Que evidências a plataforma pode fornecer de que a recuperação produziu o estado alvo esperado, e o que permanece fora do escopo de validação da plataforma?
Os operadores precisam de evidências suficientes para entender o que aconteceu antes, durante e depois de uma interrupção. Isso pode exigir a correlação da atividade de processamento, alterações de latência ou taxa de transferência, erros da plataforma, condições de origem, condições de destino e ações de recuperação.
Questão de avaliação: A equipe operacional consegue reconstruir o que aconteceu sem reiniciar o oleoduto ou depender da interpretação de um único especialista?
Alterações acumuladas ou repetidas podem chegar a aplicações subsequentes após o evento original e acionar notificações, pagamentos, atualizações de estoque, fluxos de trabalho ou outras ações. A idempotência é uma propriedade do lado do consumidor, mas a plataforma de replicação deve tornar o comportamento de reprodução suficientemente visível para permitir a coordenação segura.
Pergunta de avaliação: A plataforma oferece visibilidade suficiente para que as equipes subsequentes determinem se a reprodução pode ocorrer com segurança?
Os nomes das funcionalidades não são prova. Os testes abaixo mudam o foco da conversa de "Vocês apoiam isso?" para "Mostrem-nos como funciona quando a recuperação se torna necessária".
Crie uma condição controlada na qual a replicação permaneça ativa, mas não consiga acompanhar a atividade da fonte. O objetivo é determinar se os operadores conseguem distinguir entre operação normal, atraso crescente, recuperação progressiva e recuperação paralisada.
Solicite ao fornecedor que demonstre a magnitude do atraso, o tamanho e a direção do backlog, onde o atraso está ocorrendo, se o processamento está avançando e o que acontece com a exposição do histórico de origem à medida que a lacuna aumenta.
Tanto a magnitude quanto a direção do problema são visíveis. Os operadores não precisam inferir o progresso da recuperação a partir de um indicador de status verde. Eles podem saber o quanto está atrasado em relação à meta, onde ocorre o atraso e se as condições estão melhorando.
Implemente uma interrupção segura e suportada enquanto as transações estiverem em andamento. Um desligamento limpo pode demonstrar o comportamento normal de reinicialização, mas pode não mostrar o que acontece durante uma interrupção abrupta, uma interrupção de rede, uma falha no destino ou outro evento realista.
Solicite ao fornecedor que mostre qual estado de reinicialização ou de processo foi mantido, o que cada marcador significa, onde o processamento deverá ser retomado, qual limite de transação se aplica e se o trabalho pode ser repetido ou reprocessado.
Os operadores podem inspecionar o estado relevante antes da reinicialização e entender o que a plataforma fará. O fornecedor pode distinguir os estados de captura de origem, processamento, transporte e aplicação de destino, quando essas distinções forem aplicáveis.
Para CDC baseado em logs, as alterações acumuladas podem depender de logs ativos, logs arquivados, journals ou outros históricos de origem retidos. Teste a cadeia de dependências sob o modelo de retenção que seu ambiente de produção utilizará.
Peça ao fornecedor que explique qual histórico é necessário, onde ele reside, quem controla a retenção, como ele é recuperado, se a plataforma pode processá-lo diretamente e onde termina o limite de recuperação suportado.
O fornecedor demonstra como a plataforma localiza e processa o histórico necessário e o que os operadores podem monitorar. A resposta é específica para a origem e a configuração, não uma afirmação genérica de que a recuperação de logs arquivados é suportada.
Comece a recuperar o atraso e, em seguida, restrinja as condições de origem, rede, aplicação ou destino para que a lacuna existente pare de diminuir ou aumente. Isso testa se a plataforma distingue atividade de progresso real.
Solicite ao fornecedor que mostre a direção do backlog, o processamento atual e as taxas de aplicação, o avanço da posição, as novas tentativas ou a limitação de fluxo, o impacto na origem e no destino, e a base para qualquer estimativa de conclusão.
O progresso e a recuperação estagnada apresentam diferenças significativas. Os operadores podem verificar se a diferença está diminuindo, se mantendo estável ou piorando, e as estimativas de conclusão são baseadas em condições observadas, e não na capacidade de produção teórica.
Simule uma falha representativa na fonte, na rede, na replicação ou no destino e avalie quais evidências permanecem disponíveis antes e depois da reinicialização.
Solicite ao fornecedor que demonstre como os operadores investigam a falha, como o contexto de processamento e os erros são correlacionados, por quanto tempo as evidências são retidas, o que pode ser exportado e quais evidências adicionais de origem, rede ou destino ainda são necessárias.
Os operadores podem conectar o que o pipeline estava processando, como o atraso ou a taxa de transferência mudaram, qual componente gerou o erro, qual estado permaneceu depois e qual ação de recuperação foi tomada. Evidências úteis não desaparecem silenciosamente quando o processo é reiniciado.
Uma reinicialização bem-sucedida comprova que a replicação foi retomada. Isso não comprova que o destino esteja completo, atualizado e correto. Inclua discrepâncias conhecidas sempre que possível e seguro, como uma inserção ou atualização ausente, um registro inesperado, um duplicado, uma exclusão ausente, um valor desatualizado, uma diferença de transformação ou um problema de ordenação onde a sequência é importante.
Solicite ao fornecedor que demonstre como as diferenças entre a origem e o destino são identificadas, quais objetos ou janelas de incidentes podem ser definidos no escopo, quais chaves e valores são comparados, como as discrepâncias são apresentadas e qual validação adicional permanece sob a responsabilidade da equipe operacional.
A plataforma identifica diferenças específicas e explica claramente o que a comparação comprova e o que não comprova. Uma contagem de linhas correspondente ou um processo concluído não são apresentados como evidência universal de integridade.
Acumule as alterações durante uma interrupção e processe-as durante a recuperação. Inclua tipos de eventos sensíveis à reprodução sempre que isso for seguro. A reprodução não é automaticamente um problema, mas a reprodução invisível ou mal compreendida pode ser.
Solicite ao fornecedor que mostre a janela de reprodução, os registros ou tipos de eventos afetados, o volume e a taxa esperados, o comportamento de repetição ou processamento repetido, as considerações de ordenação e quais evidências permanecem após a recuperação.
Uma plataforma de replicação não pode tornar um aplicativo de pagamento, notificação, inventário ou fluxo de trabalho idempotente. Ela pode fornecer informações suficientes para que as equipes subsequentes decidam se a supressão, a desduplicação, o sequenciamento ou a ativação coordenada são necessários.
A reprodução é visível e atribuível. As equipes subsequentes podem estimar o que chegará e quando, entender se o processamento repetido pode ocorrer e avaliar se são necessárias medidas de segurança do lado do consumidor.
Cada plataforma CDC apresenta condições em que a reinicialização ou a recuperação não são as soluções adequadas. Uma resincronização direcionada, uma resincronização mais abrangente ou uma recarga completa podem ser necessárias quando o estado de recuperação não estiver disponível, o histórico de origem necessário não puder ser processado, o destino for inconsistente, ocorrerem alterações não suportadas ou a validação revelar discrepâncias significativas.
Peça ao fornecedor que explique quais cenários suportam reinicialização, recuperação histórica, ressincronização direcionada, ressincronização mais ampla ou recarregamento, e quais evidências indicam aos operadores que o caminho de recuperação normal não se aplica mais.
A resposta é específica, qualificada e vinculada ao ambiente proposto. Um limite de recuperação honesto é sinal de maturidade, não de fraqueza.
Uma prova de conceito (POC) rigorosa deve deixar um legado que vai além de capturas de tela, anotações de reuniões e uma declaração de que o teste foi aprovado. Para cada cenário, registre as condições do teste, as evidências observadas, o resultado da recuperação, a avaliação, as limitações e o acompanhamento necessário.
O objetivo não é atribuir uma pontuação genérica de recuperação. É determinar se a plataforma demonstrou as capacidades que seu ambiente exige nas condições testadas.
Utilize a Planilha de Avaliação do Plano de Recuperação do CDC . Esta planilha serve como registro para a avaliação. Use-a para:
Uma funcionalidade não deve ser classificada como "Demonstrada" com base apenas na documentação do produto, material de apresentação ou explicação verbal. A classificação deve refletir o comportamento observável e as evidências coletadas da configuração testada.
Será que nossa equipe operacional normal poderia usar as evidências demonstradas aqui para entender a falha, gerenciar a recuperação e defender a liberação do sistema sem depender inteiramente do fornecedor ou de um único especialista interno?
Testar apenas o caminho feliz: Um teste inicial de carga e replicação em estado estacionário bem-sucedido estabelece a funcionalidade básica. Eles não estabelecem o comportamento de recuperação. Inclua cenários controlados de atraso, interrupção, recuperação, validação e limites de recuperação.
Utilizando apenas desligamentos limpos: Desligamentos limpos podem não expor o mesmo estado de reinicialização, transação, diagnóstico ou comportamento de nova tentativa que interrupções abruptas. Teste condições de falha suportadas que reflitam riscos realistas de produção.
Aceitar rótulos sem definições: Termos como "exatamente uma vez", "perda de dados zero", "auto-recuperação", "recuperação automática", "recuperação perfeita" e "validação integrada" podem descrever comportamentos diferentes em diversas plataformas. Exija uma definição vinculada à configuração testada e ao cenário de falha.
Tratar o status do processo como evidência de recuperação: estar em execução não significa estar em dia. Estar em dia não significa estar validado. Estar validado dentro de um escopo não comprova a correção em todas as dimensões.
Não incluir dados com discrepâncias conhecidas: Se cada teste começar e terminar com dados corretos, a prova de conceito não estabelece o que a plataforma consegue detectar quando algo está errado. Inclua dados ausentes, inesperados, excluídos, desatualizados ou repetidos sempre que possível.
Ignorando o comportamento subsequente: a recuperação não para na tabela de destino. Alterações atrasadas e reproduzidas podem desencadear aplicativos, eventos, notificações, pagamentos, fluxos de trabalho ou decisões subsequentes.
Não documentar o que não foi demonstrado: Uma pergunta sem resposta não deve ser automaticamente considerada uma capacidade presumida. Registre-a como:
Um POC (Prova de Conceito) do CDC deve demonstrar mais do que a replicação bem-sucedida em condições normais. Deve mostrar o que os operadores observam quando o pipeline fica atrasado, qual estado de recuperação permanece após a falha, onde o processamento pode ser retomado, de que depende a recuperação histórica, como o progresso da recuperação é medido, quais evidências de diagnóstico sobrevivem, como o alvo é validado, o que a reprodução significa para os consumidores subsequentes e onde termina o caminho de recuperação suportado.
Aplique os mesmos testes a todas as plataformas, incluindo aquela que já está em operação no seu ambiente. A capacidade de recuperação não deve ser presumida com base no nome de um recurso ou em uma demonstração bem elaborada. Ela deve ser comprovada por meio de comportamento observável e evidências documentadas.
Mostre-nos o que acontece quando o caminho se rompe. Depois, mostre-nos como saberíamos que a recuperação foi bem-sucedida.
*AWS Well-Architected: Teste a resiliência usando engenharia do caos, novembro de 2024
Seu sistema de distribuição de medicamentos do CDC não está inoperante. Você tem certeza de que está funcionando corretamente?
Antes de reiniciar, você sabe o que foi afetado pela falha?
O erro mais perigoso do CDC na recuperação ocorre após o fracasso.
O pipeline está funcionando novamente. Você pode confiar nos dados?
Quando um problema de recuperação do CDC se torna um problema de plataforma?
Como elaborar um plano de negócios para o investimento de recuperação do CDC
