"well, technically it's possible, but it's not how we do it here"
Isso parece muito com o que eu digo regularmente aos desenvolvedores;)
De uma perspectiva operacional corporativa, você quer, tanto quanto possível, que os aplicativos usem soluções padrão repetíveis. Se a sua aplicação não precisar de um tratamento especial, você não irá obtê-lo. Soluções não padronizadas exigem habilidades especializadas, equipamentos mais caros ou simplesmente mais equipamentos e, se as falhas no estado-da-arte são também catastróficas.
Para muitos aplicativos, um compartilhamento de arquivos (altamente disponível) ainda é uma solução muito adequada e comumente implantada.
As soluções alternativas comuns de HA para usar um compartilhamento de arquivos são:
-
Não armazene arquivos em sistemas de arquivos, mas use um banco de dados altamente disponível e armazene-os como BLOBs. Uma abordagem muito comum. Muitas vezes você já precisa de um banco de dados e isso torna os servidores de aplicativos quase sem estado, resolve muitos problemas de bloqueio, replicação, HA, consistência e acesso, mudando-os para a camada de banco de dados, onde muitos desses problemas são notícias antigas, bem compreendidas e resolvido. Pode ser caro manter uma vez que você alcance (uma fração considerável) a faixa de petabyte.
-
Um sistema de arquivos em cluster adequado, que permite acesso simultâneo em nível de bloco de leitura / gravação ao seu armazenamento compartilhado em Fibre Channel ou iSCSI. Os arrays de armazenamento corporativo tendem a ser bem caros , mas isso pode ser muito bem dimensionado. Geralmente, o sistema de arquivos de cluster requer licenciamento (caro) para cada nó do software FS do cluster. Também é bastante comum em ambientes corporativos para aplicativos especializados.
-
Use um repositório de objetos distribuídos. Essa é a solução mais aberta, com hardware básico de baixo custo, criando redundância e escalabilidade no software. Essa é uma abordagem comum de "nuvem".