Épico - Backup/Restauração de dados do servidor

Link épico redmine

Descrição

Pai: Jonas

Definições NEPS:

Expectativa do cliente (O quê):

Que a ferramenta permita fazer backup e restauração das configurações completas, serviços especificos, dados dinâmicos e arquivos importantes.

Porque precisamos dessa funcionalidade:

Para o clienter ter autonomia de fazer sozinho, sem necessidade de apoio da iTFLEX:

  1. Poder recuperar o ambiente de forma prática em caso de falha
  2. Poder fazer backup antes de realizar uma operação de risco, com capacidade de restaurar a configuração de um serviço específico
  3. Poder fazer um backup para restaurar o ambiente em outra máquinas

Quem vai usar mais essa funcionalidade:

Os integradores: é essencial para os integradores terem autonomia, sem isso não conseguimos trabalhar com os parceiros Equipe iTFLEX: Para facilitar nosso trabalho nos clientes finais

Necessidades da Funcionalidade:

Prioridade agora

  • Agendamento simples (cron)
  • Importação / exportação geral
  • Download via Interface WEB
  • Upload para bucket da Cloud Amazon S3 (iTFLEX)

Previsão de riscos

Agora

  • Evitar que algum processo de backup trave o gerenciamento ou para algum serviço de infra
  • Mudança das placas de rede na importação muda associação com conexão

Futuro

  • Relacionamento de serviços na importação de serviços específicos

Expectativas não funcionais

  • Não travar a Interface WEB na importação / exportação dos dados

Cenário de aplicação (topologias)

  • Previsão/Inicio do Laboratório:

Referências

  • Exemplos de concorrentes (telas):
  • Exemplos de outras ferramentas:

Expectativa de uso:

  • Backups manuais de forma pontual antes de alterações no sistema, ou para troca de máquina
  • Automático fazendo backup local ou na CLOUD, sendo restaurado só em caso de falha grave
  • Que os backups antigos sejam excluído automaticamente

Expectativas adicionais

  • Apresentação wireframe das telas antes de fazer o desenvolvimento
  • Que seja gerada prévia de documentação prévia de mapeamento dos arquivos que serão inclusos no backup (Não só em código)
  • Que seja avaliado o esforço de preparar o backup de um dos módulos, para que possamos ter previsão para os demais
  • Reflexão se a exportação módulo a módulo é o método mais prático, ou se temos outra forma de atender as expectativas através (banco + arquivos) de forma mais rápida, prática e segura. Sem perder a autonomia pelo cliente / parceiro / iTFLEX em exportar e restaurar.

Desenho do serviço:

  • Previsão/Inicio do Laboratório:
  • Documentação Laboratório: Link
  • Diagrama da arquitetura do serviço: Link
  • Diagrama de fluxo de uso: Link

Referência para upload para a CLOUD Amazon S3

Definições Engenharia:

Telas:

Praticidade para implantação/wizard:

Banco?:

Conf?:

Prov?:

Motor?:

Serviços (INFRA):

Módulos relacionados:

Definições:

Desenvolvimento:

Backup:

Scopo:

APIs:

Campos:

Tabelas:

Funcionalidade:

Caso de uso:

Lembrar de sempre fazer:

Mais informações:

  • Implementação do motor de backups
    • Backup de dados dos módulos (em json)
    • Backup de arquivos do servidor (certificados OpenVPN, chaves, certificados do Webfilter, etc)
  • Gerenciamento/Visualização de backups
    • Visualizar data e versão do software que o backup foi criado
    • Permitir apagar backups via interface web
    • Permitir fazer download dos backups
    • Botão para criar backup (manualmente, sem agendamento, em background)
  • Cadastro agendamento simples cron
    • Um tipo de agendamento: Mensal, diário, semanal
    • Escolher horário de backup
    • Escolher a quantidade dias limpeza (ex.: manter 10 últimos backups)
  • Etapa no início do wizard perguntando se quer restaurar backup
    • Reassociar interfaces de rede na restauração do backup
    • Pular outras etapas do wizard se for restaurado backup

Restauração de backups

  • Botão para restaurar backup a partir da lista
  • Upload de backups para restauração
    • Backups podem ser arquivos grandes (ex.: 100MB+), por isso o upload dos mesmos devem usar estratégias que não carreguem o arquivo em memória no browser do usuário
    • A área de notificações pode informar quando o backup foi concluido
    • Backup que for feito o upload pode ser adicionado na lista de backups do servidor, como um backup manual
  • Pegar dados de data/versão do produto do arquivo do backup
  • Antes de restaurar o backup, pedir confirmação
  • Antes de restaurar, mostrar tela para usuário reassociar interfaces de rede com as conexões cadastradas do backup
  • Avisar que restauração vai sobrescrever todos os dados do sistema
  • Zerar o banco antes da restauração (drop database + rodar migrações denovo? Criar rotina para apagar dados da aplicação?)
    • Apagar configs do sistema antes de restaurar (configs do sdwan, do firewall, DBC, etc) pois configs antigos podem gerar conflitos ao tentar aplicar com novos dados\
  • Não permitir restauração de backups de versões mais novas em servidores com versões mais antigas do software
  • “Migração” de backups de versões mais antigas para versões mais novas
    • Mudanças no formato do arquivo/campos de backup tem que ser tratadas antes da importação
  • Senhas de usuários do linux fazer backup da senha pegando o hash da senha (root, usuários ssh do cliente, etc)
  • Reiniciar serviço itflex-admin após restauração do backup

Arquivos de backup

  • Versão do software (ex.: 3.3.0, 3.4.1) para cada arquivo de backup
  • Arquivo tar.gz, com dois arquivos json dentro, um para os dados da aplicação outro para os dados do backup em si
    • ex.: data.json -> Dados aplicação e info.json -> Informações sobre o backup (data/hora, versão do software, hostname do servidor)
    • diretório files dentro do tar.gz para arquivos dos módulos, ex.: files/openvpn/cas/ca-name.crt

Detalhes técnicos:

Rotina de backups

modulo1
  backup()
  restore(data)
  apply()
modulo2
  backup()
  restore(data)
  apply()

Anexos

Mockup



Análises