ejplatform / ej-server

EJ uses gamification and machine learning to promote discussions and participation in a virtual democracy
https://ejplatform.github.io/ej-server/
Other
38 stars 17 forks source link

Ativar backups no prod do EJ #612

Closed ricardopoppi closed 5 years ago

ricardopoppi commented 5 years ago

Essa semana entramos em beta test na ENAP nosso primeiro piloto. Então o prod deixa de ser experimental e passa a ser prod mesmo. Por isso é importante ativar os backups para o caso dos containeres reiniciarem

pablodiegoss commented 5 years ago

Comecei a trabalhar nesta issue de backups do projeto semana passada, até o momento criei uma task no Invoke para backup via manage.py e consegui um avanço interessante em outra forma de backup "contínuo" via Docker. Criei uma imagem docker PostgreSQL baseada na versão 10 e quando é recebido um comando de "Down" no container é gerado um backup ".sql" do estado do banco bruto.

pablodiegoss commented 5 years ago

Esse backup via docker é interessante para os nossos devs, mas pro ambiente de Produção é necessário algo mais frequente do que só na atualização das tags e novas versões do EJ ( Único momento que o container leva um down, eu imagino). Conversando com o Fábio decidimos que só o backup via Django (Que gera um JSON) é mais interessante por independer de alguma tecnologia de banco específico, então meu planejamento era fazer um Cronjob pro django executar a task do inv de backup semanalmente ou algo assim. Mas mesmo assim o backup via Postgresql docker é interessante de analisar, mesmo que só gere o .sql específico para Postgres .

davidCarlos commented 5 years ago

Como o ambiente de produção do EJ está rodando na infra da Pencil, temos a política de gerar backups direto via postgres (pg_dump), com um cron que pode rodar diariamente. Nesse caso fazemos um backup apenas dos dados, e não do schema. No nosso repositório de infraestrutura temos uma task definida via Makefile, que gera um backup em que o nome do backup é a data em que o backup foi gerado. Podemos inclusive mover o backup gerado para outra vm, o que é o mais aconselhavel. Utilizamos essa política de backup em outro projeto que tem como backend o EJ, e funcionou bem.

davidCarlos commented 5 years ago

O backup já está sendo feito via cronjob + pg_dump.