Temos um conjunto crescente de arquivos de dados (arquivos .wav, arquivos de imagem, etc.) que são dados, ou seja, não fazem parte do código do aplicativo - carregados e modificados pelos usuários. O número de arquivos está na casa dos 1000 e o tamanho total chega a GBs.
Temos vários clusters de servidores em diferentes locais ao redor do mundo (EUA, UE, ME). Em cada cluster é importante que os dados sejam servidos localmente e não pelo S3 (os arquivos de dados não são servidos diretamente aos clientes, mas são processados pelos servidores). Queremos designar um servidor de arquivos em cada local que servirá os arquivos via NFS para os outros nós no mesmo cluster.
Portanto, o resultado final é:
- Os arquivos carregados por meio do aplicativo devem terminar em
S3
. - Cada nó do servidor de arquivos deve replicar esses arquivos.
Vemos várias opções:
- Usando um
origin
servidor de arquivos que replicaS3
para backup/versionamento e para os nós viarsync
(ou similar). - O mesmo que acima, mas os escravos replicam
S3
usando algo como a ferramenta S3 ou similar. - Não usar um
origin
- o código do aplicativo é carregado diretamente paraS3
e os escravos replicam como acima.
Estávamos nos perguntando qual é a solução recomendada e quais ferramentas estão disponíveis para a parte de replicação (ou seja, na categoria sistema de arquivos para sistema de arquivos e na categoria sistema de arquivos/S3).