Migração de dados - perigosa ou essencial?


26

O departamento de desenvolvimento de software da minha empresa enfrenta o problema de que as migrações de dados são consideradas potencialmente perigosas, especialmente para meus gerentes.

O pano de fundo é que nossos clientes estão usando uma grande quantidade de dados com baixa qualidade . Os motivos para isso estão apenas parcialmente relacionados à qualidade do software , mas ao histórico dos dados: a maioria deles foi migrada de sistemas antecessores , alguns bugs causaram inconsistências (principalmente comerciais) nos registros de dados ou erros de digitação por acidente no lado do cliente (que nosso software permite por erro).

Os contra-argumentos mais importantes de meus gerentes são que dados defeituosos podem se transformar em dados ainda piores , os problemas de dados podem despertar alguns gerentes no cliente e alguns processos do lado do cliente podem não funcionar mais porque seus processos se adaptaram um pouco ao nosso sistema.

Pessoalmente, considero as migrações de dados como parte integrante do desenvolvimento de software e essa migração de dados pode ser vista como o que a refatoração é codificar. Penso que a migração de dados é essencial para criar software que evolua . Sem ele, teríamos que criar um software doloroso, que funciona de alguma maneira com uma estrutura de dados ruim.

Eu estou a perguntar-te:

  • Quais são seus pensamentos sobre a migração de dados, especialmente para os casos da vida real e não apenas da perspectiva de um desenvolvedor?
  • Você tem algum argumento contra a opinião dos meus gerentes?
  • Como sua empresa lida com migrações de dados e as dificuldades causadas por elas?
  • Quaisquer outros pensamentos interessantes que pertencem a esses tópicos?

Ótima pergunta, mas talvez pertence a programmers.stackexchange.com
Tom Anderson

1
Isso não é necessariamente uma questão "ou".
David Thornley

1
O único argumento que tenho que acrescentar é: não ficará mais fácil no futuro. Se eles não quiserem realizar a migração agora, devem pelo menos assumir um projeto de 'limpeza de dados' para escrever algum código para identificar registros de problemas no sistema existente.
22630 Michael Kohne

Respostas:


29

As migrações de dados são o meu pão com manteiga e a limpeza de dados é realmente uma questão extremamente importante. Uma estratégia que usamos para migrar 100% dos dados de nossos clientes são as ferramentas de pré-migração para limpeza de dados assintóticos.

  1. Isso significa desenvolver dezenas de verificações de integridade dos dados (principalmente consultas sql).

  2. Troca de ferramentas de limpeza com o cliente (como esses são os dados dele, projetamos os utilitários de correção, ele os valida e executa).

  3. Refinando a ferramenta sobre iterações e alcançando a qualidade mensurável suportada por KPI o mais rápido possível.

  4. Verificando a consistência dos dados após a migração. Isso ajuda a tomar a decisão GO / NOGO no dia D.

No final, a migração de dados é um exercício imensamente benéfico que deve ocorrer após 3 a 5 anos.

  1. Permite aumentar a capacidade da plataforma de dar suporte aos negócios.

  2. Permite otimizar o banco de dados.

  3. Ele prepara a plataforma de TI para as ferramentas de negócios da próxima geração (ESB / EAI, portais, plataformas de autocuidado, geração de relatórios e mineração de dados, etc.).

  4. Ele reorganiza os fluxos de dados de bricolage entre plataformas que se acumularam ao longo dos anos de maneira rápida e suja "temporária" para atender a "requisitos urgentes".

  5. Acima de tudo, capacita a equipe de produção de TI que conhece melhor sua plataforma e promove atitudes que podem fazer. Esses tipos de benefícios são difíceis de medir, mas quando você conhece muitos clientes, essa consideração se torna óbvia. As empresas que evitam as migrações permanecem no nível seguinte, as mais ousadas lideram o grupo.

É um pouco como quando o porão da sua casa fica cheio de madeira. Uma manhã, você precisa tirar tudo e guardar apenas as coisas de que precisa e jogar o resto fora. Depois disso, você pode usar seu porão novamente ;-)

Outra consideração fundamental é que, atualmente, as expectativas dos clientes estão sempre em movimento, como em "os clientes são sempre mais exigentes". Para que sempre haja uma proporção significativa dos concorrentes de uma empresa à procura dessas novas tendências com a intenção óbvia de aumentar sua participação no mercado. A maneira como eles farão isso é adaptando sua oferta para manter a tendência ou até mesmo impulsioná-la, e isso implica em constante engenharia de negócios. Se a sua plataforma de TI for muito rígida, será um obstáculo para você cônjuge ou preceder as tendências do mercado do seu lado e, finalmente, manter sua própria participação no mercado. Em outras palavras, em um mercado em movimento, a inércia é uma receita para a irrelevância.

Por outro lado, a migração de dados para um sistema mais recente lançará uma ferramenta de produtividade mais moderna e versátil, tornando o melhor das novas tecnologias mais atraente para os funcionários e isso, por sua vez, contribuirá para apoiar ou até liderar o processo interno de inovação da empresa. , garantindo assim ou aumentando sua participação de mercado relativa.

As considerações acima, na verdade, respondem apenas a metade da pergunta feita no título "Migração de dados - perigosa ou essencial". Sim As migrações de dados são essenciais, mas também são perigosas? Nesta conta, muitas coisas em TI são perigosas então. Por definição, qualquer coisa em que as apostas sejam altas é perigosa; especialmente se você não levar o assunto a sério. Mas esse é realmente o padrão mais comum em TI. Não levar a sério os data centers ou a alta disponibilidade ou a tolerância a desastres é perigoso.
Isso significa que as empresas de hoje devem optar por sair desses pilares do cenário atual de tecnologia da informação? Certamente não !

Para colocar seu ponto de vista de brincadeira, você pode argumentar que "voar é perigoso se você não usar um avião feito por profissionais". É o mesmo para as migrações de dados. Quando executado e conduzido por profissionais, não é mais perigoso do que voar em um avião bem projetado e bem operado. E o ROI está na mesma proporção em comparação com os meios de transporte terrestres.
Quando confiadas a profissionais, a maioria das migrações é um sucesso bem controlado e a taxa de falha + abandono é extremamente baixa.

Seus gerentes devem ser levados a se perguntar: "Embora a maioria das empresas passe por projetos de migração de dados com sucesso, o que tornaria nossa empresa tão diferente que sofreria um fracasso?


5
Conforme refletido pela resposta de @ Alain, uma das razões para a abordagem do seu gerente é que a migração de dados é, por si só, um projeto importante, com todos os riscos decorrentes disso. Também existem riscos específicos para a migração de dados - o único projeto de migração de dados em que estive envolvido alcançou uma taxa de sucesso de 98,6% na limpeza dos dados. Isso parece muito bom, até que se perceba que a taxa de falhas deixou 600.000 registros de clientes a serem resolvidos manualmente. Isso envolveu a criação de um departamento separado e os processos de verificação e validação. Novamente, isso não foi barato ou isento de riscos.

@Chris. Nosso objetivo é 100% e eu consegui isso pelo menos uma vez. Na maioria das vezes, o cliente deixado de lado e recriado manualmente são menos de uma dúzia.

4
@ Alain - parabéns. O projeto ao qual eu estava me referindo visava 100%, mas acabou sendo inatingível. A maior parte dos dados que exigiam limpeza manual acabou exigindo verificações manuais da forma "dos três John Smiths que registramos neste endereço, quantos são indivíduos distintos?" Essa migração de dados específica foi de persistência não RDMS para um RDMS; e dados de limpeza implícitos acumulados por um período de até 25 anos.

2
E o profissional deve ser um especialista em migração de dados (ou pelo menos um especialista em dados) e não um programador de aplicativos. As empresas enfrentam problemas porque pedem aos amadores de dados que façam essas coisas em vez de profissionais de dados. A mesma coisa com muitos designs de banco de dados.
HLGEM

1
Como uma plataforma em evolução, "migrações" ou importações em massa são necessárias. Para enfatizar uma contraparte, também existem altos custos em manter uma estrutura de dados herdada e em ampliá-la ad infinium. Os dados incorretos que se tornam piores são um problema de contexto que surge e realmente agrega valor significativo ao cliente, porque agora eles sabem com mais certeza em quais dados podem confiar e em que não podem (nos cenários de preocupação - em alguns cenários não importará e será de valor neutro).
JustinC

5

Alain deu uma ótima resposta em termos de importância da limpeza de dados para um projeto bem-sucedido de migração de dados e lógica por trás da migração de dados. Gostaria de direcionar apenas preocupações específicas que seu gerente tenha.

Na minha opinião, não se trata de fazer ou não a migração de dados, é sobre quando fazê-lo. Seu gerente tem razão absolutamente válida ao afirmar que seus dados não são mais apenas seus e que os clientes finais já criaram seus procedimentos a partir deles. No entanto, esse estado não mudará no futuro . Cedo ou tarde, a baixa qualidade dos dados se tornará um fator inevitável para diminuir a velocidade de seus negócios e você será forçado a fazer a migração. Fazer isso sob pressão e com prazos apertados pode levar a decisões abaixo do ideal. Além disso, pense na experiência que você tem agora e terá daqui a 2-3 anos. E se as pessoas que entendem seus dados deixarem a empresa? Tem certeza de que a documentação que possui é adequada?

Talvez fazer a migração agora não seja necessário, mas seu gerente precisa ter uma visão para quando exatamente a migração será feita.


5

Eu trabalhava para uma companhia de seguros e estava envolvido na migração de dados para o sistema principal. Bem, houve no total 4 vezes. Então, aqui estão meus comentários:

No meu caso, a migração de dados é imprescindível, pois, por regulamentação, devemos manter os dados por pelo menos 10 anos e não podemos permitir o suporte ao sistema duplo a longo prazo. A outra razão é que os usuários esperam poder continuar seu trabalho com o novo aplicativo. Se eles não conseguirem encontrar o item em que trabalham, seu aplicativo está ruim e é ainda pior quando os dados não estão corretos.

Bem, a migração de dados é uma fera horrível e é real, então encare isso. É arriscado, mas pode ser minimizado abordando-o mais cedo e com cuidado. Como um guia, existem quatro grandes processos que devem ser levados em consideração na migração de dados:

  1. Mapeamento de dados. Mapas do mestre (e sua combinação) para o novo sistema
  2. Limpeza de dados. Mapas de exceção nos dados, ou seja, dados cuja combinação é considerada inválida no novo sistema. Se possível, lide com os negócios para excluir dados que não têm como ser mapeados e possivelmente quebre o novo sistema e prepare uma solução alternativa
  3. Migração de dados real. Existem muitas estratégias para executar a migração de dados. Por exemplo: big bang, incremental
  4. Consolidação de relatório. Ambos os sistemas devem funcionar em paralelo, como produzir relatórios corretos e consistentes

Evento com plano cuidadoso, merda acontece! Uma força-tarefa especial deve estar pronta para lidar com problemas relacionados à migração.


1
Eu trabalhei em astronomia, temos dados (em placas fotográficas) que remontam a 130 anos, dando-nos um problema Y1.9K e Y2K simultaneamente. Temos também dados em fitas de antes as pessoas tinham acordado quantos bits estavam em um byte
Martin Beckett

3

1) Quais são seus pensamentos sobre a migração de dados, especialmente para os casos da vida real e não apenas da perspéctica de um desenvolvedor?

A migração é parte essencial do desenvolvimento de sistemas. Se você substituir parcial ou totalmente os sistemas antigos, a migração é uma realidade, quer o gerenciamento queira ou não. Se os dados existentes estiverem incorretos, eles refletirão mal no seu novo sistema. Portanto, é de grande importância ter uma boa estratégia de migração.

2) Você tem algum argumento contra a opinião dos meus gerentes?

Sim, a migração é arriscada, mas também é um fato da vida, então lide com isso. E lide com isso o mais cedo possível.

3) Como sua empresa lida com as migrações de dados e as dificuldades causadas por elas?

Minha empresa tem - com sucesso crescente envolvido os clientes ativamente no processo de migração. Analisamos os dados existentes da melhor maneira possível nas etapas iniciais do projeto e incentivamos o cliente a melhorar a qualidade dos dados antes de começarmos a migrar. Às vezes nós realmente exigimos isso.

4: Quaisquer outros pensamentos interessantes que pertencem a esses tópicos

Meu conselho é dividir o processo de migração em duas etapas: conversão e limpeza de dados. A conversão é bastante simples - é uma questão de mapear objetos antigos do sistema para o novo sistema novo. A limpeza de dados, por outro lado, pode ser uma coisa muito complicada (como mencionado acima). Envolva o cliente o máximo possível e inicie o processo o mais cedo possível. Lembre-se de que dados ruins refletem mal o seu novo sistema - às vezes completamente sem motivo. Quando um novo sistema não funciona, um cliente raramente culpa os dados que pareciam funcionar muito bem no sistema antigo.


2

Se os dados que você planeja migrar estiverem incorretos no momento, eles precisam ser corrigidos, seja você uma migração ou não. Dados inválidos = dados inúteis.

As migrações são arriscadas, isso é verdade. Mas o mesmo acontece com todos os principais projetos de TI. Existem maneiras de mitigar os riscos e eles certamente devem ser planejados antecipadamente em uma migração.

Primeiro, você sempre deve ter uma maneira de voltar ao sistema como é agora. As segundas migrações devem ser feitas nos servidores de teste configurados apenas para a migração. É tolice fazer uma migração sem a capacidade de testá-la primeiro. Terceiro, todo o código para a migração deve estar no controle de origem.

Quarto, você precisa de requisitos e planos de teste antes de iniciar a migração. Você precisa saber que, se você tiver 1.293.687 registros no sistema antigo, terá o mesmo no novo ou saberá aonde eles foram (talvez para uma tabela de exceção). Se você estiver normalizando um esquema desnormalizado, precisará calcular quantos registros você deve terminar antes de iniciar e depois verificar isso. Você precisa de documentação que especifique quais são os mapeamentos de um sistema para outro. Isso ajudará seu pessoal de controle de qualidade a verificar se os dados foram para o lugar certo.

Você precisa determinar como lidar com os dados incorretos atuais. O que pode ser limpo, o que pode precisar de um valor em um campo obrigatório que diga 'Desconhecido', o que deve ser jogado fora em uma tabela de exceção, o que precisa de intervenção manual de um grupo de usuários (decidindo se essas duas pessoas são realmente enganadas ou não) existem dois médicos nessa clínica com o mesmo nome, por exemplo, e se é um dup quais dados escolher quando os dois registros diferem etc.).

A chave para uma migração bem-sucedida é o planejamento. Descobri que o planejamento (que inclui escrever os casos de teste e os testes de unidade) geralmente leva mais tempo do que o desenvolvimento real.

A próxima chave para uma migração de dados bem-sucedida é o controle de qualidade. Este não é um projeto a ser lançado na equipe de controle de qualidade no dia anterior ao lançamento. Este não é um projeto a ser iniciado quando o controle de qualidade diz que há um problema.

Outra chave para uma migração bem-sucedida é implantar a maioria dos dados e testá-los enquanto o sistema original ainda está em execução. Se você estiver movendo muitos registros, isso pode ser demorado e novas alterações acontecerão. Portanto, seu processo deve ser capaz de extrair as alterações de dados após o início da migração. O SQL Server, por exemplo, tem algo chamado Change Data Capture que pode ajudar nisso. Você pode fazer um backup do sistema original e ativar a captura de dados alterados ao mesmo tempo. Em seguida, você pode redefinir o backup para o servidor de migração, testar a migração, obter a maioria dos dados carregados e, em seguida, você só precisa carregar os registros que foram alterados. Ao migrar os registros finais, desligue o sistema de origem até que a migração seja concluída. Esse é um dos motivos para migrar a maioria dos registros antes do tempo, portanto, o aplicativo fica inativo por menos tempo. Escolha bem o seu tempo de migração, não desligue o sistema da folha de pagamento no dia em que eles devem processar a folha de pagamento ou enviar W2s. E faça isso durante as horas de baixo uso. Se você tiver vários clientes, considere migrar um primeiro e verificar se tudo está bem antes de fazer os outros. É muito mais fácil reverter os dados de um cliente do que 10000, se houver um problema. Mas planeje isso com cuidado se fizer isso. s dados que 10000 se houver um problema. Mas planeje isso com cuidado se fizer isso. s dados que 10000 se houver um problema. Mas planeje isso com cuidado se fizer isso.

Se a migração envolver uma nova interface do usuário, peça aos usuários reais que a usem como parte dos testes de migração. Treine os outros usuários antes de ir ao ar (mas menos de uma semana antes de ir ao ar, ou eles esquecerão). Faça com que os usuários envolvidos nos testes ajudem a projetar o treinamento, eles saibam quais perguntas eles tiveram e o que as pessoas precisam saber em que ordem. Obtenha a entrada deles, exigindo um campo, porque você acha que não deve ajudar se os usuários geralmente não tiverem esses dados quando inserem os registros. Eles apenas colocarão lixo no campo recém-obrigatório, pois não poderão obter os dados de outra maneira.

Veja o que há de errado com os dados atuais. Você pode adicionar chaves estrangeiras, restrições, gatilhos, regras de negócios no aplicativo, valores padrão etc. para evitar que isso seja ruim no futuro? Ao limpar dados incorretos, você também precisa criar uma maneira de evitar que dados ruins entrem no futuro. Analise por que os dados ruins foram alocados e corrija os buracos no design.


1

A migração de dados é uma necessidade. Sem a migração de dados, você geralmente não pode avançar. Muitos sistemas com os quais trabalhei com o histórico necessário estão disponíveis apenas em sistemas anteriores. A migração é o único método prático de fazer isso. A qualidade dos dados geralmente é um problema. Geralmente, isso deve ser tratado no sistema anterior. Isso pode exigir alterações nos dados para recuperar a qualidade.

Outros sistemas com os quais trabalhei dependiam de dados de outros sistemas. Esta é uma questão diferente, mas significativa. Em alguns casos, os dados podem ser substituídos por completo. Outros casos podem ser melhor tratados ao mesclar as alterações incluídas nos novos dados no conjunto existente. Esses tipos de migração devem incluir verificações de validade para o feed de entrada.

A capacidade de validar e limpar os dados existentes pode ser um recurso importante de um sistema. Isso é independente da migração. Muitas vezes, existem mecanismos para modificar dados que estão fora do controle do sistema. Isso pode fazer com que os dados se tornem inválidos. Outros problemas de dados resultam de erros no aplicativo. A execução periódica das rotinas de validação pode ajudar a identificar o problema e permitir que os dados sejam limpos antes da hora da migração. Como foi observado, a limpeza antecipada dos dados pode facilitar a migração.

Algumas validações são sensíveis ao tempo e não devem ser aplicadas a dados que não foram modificados. Isso é comum em valores codificados, onde os códigos foram retirados. Deve ser possível alterar outros campos no registro sem disparar erros de validação. Isso pode tornar a validação da atualização mais complexa, pois precisa identificar quais campos foram alterados antes da validação. A validação entre campos também pode ser mais complexa. A capacidade de tratar alguns registros como somente leitura pode ajudar nesse caso, pois a validação pode ser evitada.

Em um sistema em que trabalhei, o novo sistema foi parcialmente rejeitado pelo cliente. Eles se recusaram a permitir que os novos módulos de entrada de dados fossem usados. No entanto, eles queriam o processamento em lote do novo sistema. A solução foi migrar os dados todas as noites antes da execução do lote.


1

É um mal necessário. Eu estive nos dois lados e estas são algumas das outras questões que agravam o problema.

  1. Especialmente na empresa, quando as empresas entram em um novo sistema, desejam que ele faça tudo o que o sistema antigo fazia. Eles não revisam seus procedimentos. Eles estão tão sobrecarregados que só querem continuar fazendo tudo da mesma maneira. Isso é seguro para eles.
  2. Eles não têm tempo para aprender o novo sistema ou contratar pessoas com experiência.
  3. Eles desejam personalizar o novo sistema para acomodar o número 1 ou lidar com algum novo aspecto de seus negócios. Novas personalizações do System X X Dados convertidos = Complicações compostas
  4. Não é dedicado tempo suficiente aos testes.
  5. Os clientes odeiam correr em paralelo / fazer as coisas duas vezes. Não posso culpar os usuários porque eles não têm tempo para fazer isso, pois todas as outras tarefas são mantidas a todo vapor.

Se seus gerentes puderem justificar a perda de vendas não convertendo dados, eles terão mais poder. Dizer aos seus clientes que todas as conversões de dados falham não funcionará porque alguém sempre lhes dirá que sim (normalmente sua concorrência).


0

Quais são seus pensamentos sobre a migração de dados, especialmente para os casos da vida real e não apenas da perspectiva de um desenvolvedor?

o software deve ser atualizado regularmente. para garantir que a migração seja salva, você precisa de backup e teste.

Você tem algum argumento contra a opinião dos meus gerentes?

ele está certo que é arriscado. mas você pode adaptar técnicas para torná-lo menos arriscado.

Como sua empresa lida com migrações de dados e as dificuldades causadas por elas?

temos backup diário, backup incremental, backup antes de cada implantação na produção. que pelo menos permitem reverter se algo de ruim acontecer.

temos ambiente de teste, testes automatizados e servidor de compilação diário. também um procedimento de teste de fumaça para garantir que as principais operações e funções estejam funcionando corretamente. Envolvemos desenvolvedores, controle de qualidade e usuários para testar a compilação (que possui dados migrados).

estamos usando ruby ​​on rails, que fornece controle de versão da migração, atualização e reversão de dados. o que facilita a nossa vida.

estamos usando o capistrano para executar a atualização de código e a migração de dados. manter a migração automatizada e simples é uma das principais coisas para garantir que o sistema de produção funcione.

Quaisquer outros pensamentos interessantes que pertencem a esses tópicos?

Outra preocupação com relação à migração de dados para mim é a consistência da atualização de código e da migração de dados. no meu caso, novamente, estamos usando maneiras automatizadas de lidar com isso. e sempre pronto para reverter.

executar a migração de dados manualmente pode transformar o banco de dados em status desconhecido. e é difícil comparar a versão da migração de dados entre diferentes ambientes do servidor.

espero que ajude.


-1

Não perdemos tempo tentando migrar dados de sistemas antigos antigos, porque o tempo, o investimento e o risco são altos demais. Apenas avançamos com sistemas mais novos e nos integramos quando necessário.

Toda empresa possui algum tipo de sistema legado que deve suportar, e isso é apenas um custo normal para fazer negócios.

A recompensa que seus gerentes esperam obter deve ser extremamente alta, considerando o custo da migração.


Espero que você não gere um hospital: por que só temos registros de pacientes para bebês? Bem, nós instalamos um novo sistema no ano passado e era muito difícil migrar todos os dados antigos, então apenas colocamos novos pacientes nele!
Martin Beckett

Não, eu não administro um hospital. Leia o que eu disse novamente. "The reward your managers hope to realize had better be extremely high given the cost of the migration." Se a recompensa for alta - seja lá o que for -, então vale a pena. Caso contrário, é uma perda de tempo de todos e um risco desnecessário. Além disso, mencionei na minha resposta que a integração pode ser feita para permitir que o novo sistema acesse os dados antigos, em alguns casos. Mas essa decisão depende inteiramente do cenário.
jmort253

Sinto muito, mas a integração apenas aumenta a dor.
Paul Nathan

@Paul - Claro, mas o mesmo acontece com a movimentação de dados. Não há bala de prata aqui.
precisa saber é o seguinte
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.