Épico - Backup/Restauração de dados do servidor
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:
- Poder recuperar o ambiente de forma prática em caso de falha
- Poder fazer backup antes de realizar uma operação de risco, com capacidade de restaurar a configuração de um serviço específico
- 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
- Restauração backup deve rodar em background independente itflex-admin
- https://stackoverflow.com/questions/473620/how-do-you-create-a-daemon-in-python
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 einfo.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
- ex.:
Detalhes técnicos:
Rotina de backups
modulo1
backup()
restore(data)
apply()
modulo2
backup()
restore(data)
apply()