Todo desenvolvedor quer seu próprio suporte para desenvolvedores. Cada testador quer sua própria bancada de testes. E todo especialista em pré-produção quer seu próprio suporte - para finalmente verificar tudo e ensaiar o lançamento no produto. Quando toda essa lista de desejos converge no processamento - um dos maiores e mais ativos sistemas do banco - os custos de infraestrutura fazem você pensar e procurar "opções". Vamos contar sobre o que encontramos neste post.
O volume de bancos de dados de processamento em nossa empresa é de cerca de 6 TB. Em uma cópia dos bancos de dados, os desenvolvedores interferem entre si, de modo que a quantidade real de espaço ocupado pelas bases cresce rapidamente e proporcionalmente. Embora quão rápido ... muito rápido para o serviço de acompanhante e não rápido o suficiente para quem precisa de cópias dos bancos de dados. E aqui está o porquê.
Para o teste, é necessário que o suporte de teste seja totalmente consistente com a versão atual da produção (o mesmo se aplica ao suporte de pré-produção). O backup principal do sistema é copiado durante todo o dia e depois implantado no estande. Durante essas operações demoradas, os estandes não estão disponíveis; portanto, a cópia é transferida para fins de semana e feriados quando ninguém trabalha com estandes. Temos um atraso de 1 a 5 dias. Para concordar preliminarmente com o processo de cópia, também leva tempo - temos várias bancadas de teste, geralmente de três a seis. Adicionamos 2-3 dias para coordenar o tempo de espera do suporte. Antes de chegar ao administrador para aprovação, o aplicativo ainda está na fila. No total, temos um atraso muito grande.
O que ajudou o Delphix
O que pode acelerar o processo e economizar espaço? Virtualização de banco de dados. Consideramos diferentes opções: Oracle SnapClone, NetApp + Oracle Cloud, apenas instantâneos em matrizes. Tudo requer configuração complexa. Além disso, as soluções Oracle funcionam apenas com bancos de dados Oracle.
Então olhei para Delphix. É fácil de implementar, suporta diferentes bancos de dados - Oracle, SQL Server, DB2, Sybase ASE. Uma interface é fornecida para todas as operações. Por meio dele, desenvolvedores e testadores podem gerenciar independentemente suas cópias - atualizar, salvar / restaurar o estado, parar / iniciar, etc. Há também uma API e CLI para integração com sistemas de CI / CD ou seus processos.
A implantação do Delphix em si não leva muito tempo - várias horas. A fonte pode ser conectada por muito mais tempo, aqui o tempo é proporcional ao tamanho. No nosso caso, a fonte era uma cópia de vendas do banco de dados e sua conexão levou quase um dia. A preparação da origem e dos servidores para clones do banco de dados não requer trabalho especial. No servidor de destino, você precisa instalar o ORACLE_HOME apropriado e também criar um usuário especial para se conectar. Para cópias de teste virtuais, usamos os mesmos servidores que anteriormente tinham cópias físicas.
O Delphix permite criar bancadas de teste quase em tempo real, sem nenhuma coordenação, porque as bancadas são completamente isoladas uma da outra. Algum tempo é gasto apenas na atualização do banco de dados para o estado atual - de 20 minutos a várias horas, não há dúvida de dias.
Tentamos realizar testes de estresse em condições o mais próximo possível do produto. Se o produto for produzido em discos físicos - a carga também permanecerá. Nesse caso, o botão Delphix V2P ajuda, o que permite criar um banco de dados "honesto" a partir de um virtual.

Quanto à economia de espaço em disco, as leituras do painel Delphix, é claro, são enganosas - uma redução de 73 vezes no volume é fabulosa demais. Em nosso processamento, uma cópia da venda com instantâneos diários e logs de transações arquivados por 2 semanas (200 GB por dia) ocupa 4,5 TB de espaço em disco. Outros 1,5 TB - nove clones de tamanhos de 50 a 500 GB, cada um dos quais também armazena um histórico de instantâneos diários. No total, 6 TB são obtidos.
Adicionamos outros 15% de espaço livre (900 GB) para que o Delphix possa funcionar normalmente. Assim, gastando apenas cerca de 7 TB, podemos obter uma cópia de teste com dados relevantes a qualquer momento nas últimas duas semanas.
Anteriormente, para armazenar nove cópias físicas do banco de dados em 6 TB, precisávamos de 54 TB (ou ~ 20 TB levando em consideração a compactação de 2 a 3 vezes no armazenamento). E, diferentemente do novo sistema, aqui os desenvolvedores não podiam gerenciar essas cópias e restaurar os estados anteriores - quando os dados foram destruídos, só era possível recarregar a partir de uma cópia da venda.
O Delphix também permite criar rapidamente diferentes ramificações do mesmo contêiner para diferentes projetos - e tudo isso em um período mínimo de tempo. Os desenvolvedores não têm medo de corromper os dados, podem reverter e restaurar seu estado anterior. Isso aumenta o desempenho.
Mas há nuances ...
As impressões do Delphix são principalmente positivas, embora nem tudo seja perfeito. O maior problema é usar discos. Cada bloco de dados é armazenado apenas uma vez para todas as cópias virtuais e, até que todas as cópias virtuais parem de usar o bloco, ele não pode ser excluído. Problemas organizacionais podem surgir aqui - nem todos os usuários estão prontos para suportar o curto ciclo de vida de seus estandes. Se a bancada de testes estiver em uma cópia antiga, eu a venderei. Resolvemos esse problema extensivamente, expandindo os discos, o que pode ser feito sem interromper o serviço. Garantimos que 15% do espaço livre seja sempre salvo. Se for menor, o sistema simplesmente interromperá a execução de qualquer operação com cópias virtuais. Embora as próprias bases permaneçam disponíveis.
Para sistemas com E / S de disco intensiva, é provável que a largura de banda da rede seja um fator limitante. Dependendo do perfil de carga específico, o sistema pode começar a funcionar melhor com a virtualização. Dependendo da carga, a latência média de leitura seqüencial do arquivo db é de 5 a 10 ms, o que é bastante bom mesmo para sistemas industriais.
As unidades "clássicas" Delphix são conectadas de qualquer forma que suporte o ESX, e o fornecedor possui uma lista de recomendações sobre como fazer isso com desempenho máximo. Nós usamos SAN. O próprio sistema apresenta os discos nos quais os arquivos do banco de dados virtual estão localizados, apenas através do protocolo NFS. Por esse motivo, você precisa ter cuidado com a largura de banda do canal e seu congestionamento. No nosso caso, faz sentido colocar apenas arquivos de dados do Delphix em matrizes de disco, para que nenhuma atividade no banco afete a velocidade de E / S dos bancos de dados virtuais.
Agora estamos trabalhando no Delphix 5.1.9, mas veja a versão 5.2 - nela, a interface do usuário deixou o flash e, de acordo com o fornecedor, tornou-se muito mais conveniente. O Delphix impressionou nossos colegas e, após o processamento, estamos considerando transferir perfil, CRM e Internet banking para esse sistema de desenvolvedores.