
Eu tenho uma pergunta sobre práticas recomendadas. Temos um aplicativo rodando em dois servidores atrás de um balanceador de carga. A maioria dos dados está em um banco de dados comum, os arquivos carregados pelo usuário estão no armazenamento de objetos. Portanto, não há muito para manter sincronizado, exceto alguns arquivos de configuração YAML gerados pelo usuário por meio do back-end do aplicativo.
Qual é a prática recomendada para manter esses arquivos sincronizados? Uma solução que pensei foi montar um volume compartilhado para hospedar o código e os arquivos de configuração. Existe uma solução melhor?
Responder1
Assumir apenas uma “melhor prática” é uma armadilha. Sempre há mais de uma solução.
Armazenar o conteúdo dos arquivos de configuração no banco de dados é uma opção. Blobs gerenciados por algum aplicativo, possivelmente gravados em disco, se é isso que alguma outra coisa está lendo. Ou altere o aplicativo para usar campos de dados discretos no banco de dados em vez de documentos YAML. Aproveita o banco de dados central existente, mas exige que o banco de dados esteja disponível primeiro.
Armazene os arquivos de configuração no pacote de software ou na imagem que contém o aplicativo. Implante novos atualizando o aplicativo. Só faz sentido se esses arquivos forem alterados pelas mesmas pessoas ou se o processo de atualização do aplicativo for alterado.
Copie os arquivos da cópia oficial para cada instância de acordo com uma programação ou alteração. Escolha um software de cópia de arquivos, rsync, sftp. Seria necessário algum script extra se a instalação fosse transacional, no sentido de que todos os arquivos estivessem instalados ou nenhum deles.
Monte um compartilhamento de arquivos de rede. Esteja ciente de que se os compartilhamentos NFS ou SMB forem desconectados de maneira não planejada, isso poderá causar problemas de desempenho.