Quando comecei no setor financeiro, eu estava executando sistemas que eram compostos de sistemas de gateway que consumiam / massageavam dados, computavam nós para tomar decisões comerciais, servidores NFS para atender aplicativos / centralizar o registro e muitas redes para vinculá-lo. todos juntos. Também centralizamos o agendamento do crontab e as configurações do monitoramento de aplicativos e os colocamos em montagens do NFS.
Este era baseado em NFSv3, e os benefícios eram, hum ...
- Fácil distribuição de aplicativos: uma montagem. Um lugar para fazer mudanças.
- Gerenciamento simples dos dados relacionados a esses aplicativos.
Desvantagens:
- Suscetível a erros: uma montagem. Um lugar para estragar as alterações.
- Escalabilidade: a menos que você também esteja armazenando em cluster seu armazenamento, a montagem central terá um limite superior no número de clientes que ela pode servir com eficiência.
- Ponto único de falha (SPOF): novamente, o armazenamento em cluster pode atenuar isso, mas é uma consideração. Assumindo o NFS, o que acontece se você precisar reinicializar o servidor? Os nós do cluster irão travar na inicialização se o servidor NFS estiver ausente ou indisponível?
- Permissões: como você gerenciará as permissões nos nós do cluster. Contas de serviço local? UIDs / GIDs correspondentes? No meu caso, usei o NIS e, posteriormente, o LDAP. Um serviço de diretório seria útil aqui.
- Desempenho: você depende da rede e da infraestrutura de comutação aqui. O desempenho de coisas como carregamento de aplicativos, registro, etc. será mais rápido no disco local do que over-the-wire.
- Ajustar o NFS é difícil e a maioria das pessoas não faz isso bem:)
Hoje em dia, você pode implantar e gerenciar seu software por meio de um sistema de gerenciamento de configurações ( Puppet , Chef , Ansible , etc .). Ou, melhor ainda, use o método de empacotamento nativo do sistema operacional (RPM, .deb) e implemente-o com o gerenciamento de configurações:
- Isso remove o SPOF.
- A localização do aplicativo deve ter um benefício de desempenho.
- Simplifica a rede: por exemplo E se você expandir para vários locais?
- Pode fornecer um controle mais granular: por exemplo distribuir um binário para um subconjunto de sistemas, versus o cluster inteiro.
- Autodocumentação.
Dado que, eu provavelmente recomendaria cópias separadas dos aplicativos em vez de usar uma montagem compartilhada.