Caso plataforma de configuração específica estar no pacote de aplicativos?

votos
0

No meu local de trabalho de algumas pessoas pensam que é OK para ter itens de configuração de plataforma específica (coisas como nomes de back-end host / addrs IP, DB detalhes de conexão etc.) embutidos (como arquivo .properties (s)) em pacotes de aplicativos (a Web app arquivo .war). Eu acho que esta é uma má coisa ruim, pelas seguintes razões:

  • é preciso haver um pacote separado para cada plataforma de destino (pode ser um laboratório de dev, um laboratório modelo, produção etc)
  • construir sobrecarga - criar scripts normalmente construir um conjunto de pacotes de aplicativos de destino (todos eles são construídas ao mesmo tempo no pressuposto de que esta versão é a versão final)
  • esforço de gestão (por exemplo, fonte / controle de versão) de itens de configuração precisa (em teoria, significa que mesmo userid / senhas de sistemas de clientes é mantida)
  • não se pode ter certeza de que a versão do pacote está correto (soma de verificação inútil) - é a parte executável do pacote que foi testado no laboratório a mesma que se mudou para a produção?

A consequência desta abordagem é que (para Java Web App), em um ambiente de cliente, os administradores implantar o pacote, o desligamento do servidor de aplicações, copiar configurações específicas de plataforma por cima daqueles que foram embutidos no pacote, e reiniciar o servidor de aplicações . Doloroso.

Talvez uma abordagem melhor é externalizar plataforma de itens de configuração específicos - não tê-los embutida no arquivo .war, e não têm a aplicação referenciá-los na árvore de diretórios arquivo .war expandida. Em vez disso, ter itens de configuração em um .. \ conf diretório fora do diretório do aplicativo. Isto tem os benefícios de:

  • um e somente um pacote de aplicativos para o componente executável da aplicação
  • menor sobrecarga de construção (em comparação com acima)
  • nenhum conhecimento de Cliente configurações específicas de plataforma (userids / senhas)
  • auditabilidade (capaz de fazer uma soma de verificação em um pacote de aplicativo, faça o mesmo em um laboratório ou na plataforma do cliente, e ter um alto nível de confiança que os executáveis ​​são os mesmos) - o que nós testamos com o que você tem
  • implantação é um processo muito mais curto - dependendo da capacidade do servidor de aplicações, despejar o arquivo de aplicativo .war no diretório relevante e, se nenhuma alteração de configuração (muitas vezes o caso), devolver o servidor de aplicações.

Esta abordagem não necessita da aplicação para ser capaz de fazer referência a um arquivo fora do diretório do aplicativo. Há uma pequena consideração de segurança sobre isso. App variáveis ​​de ambiente servidor facilitar aplicativos para ser capaz de localizar arquivos fora do seu diretório app (ou CLASSPATH).

Estou olhando para a comunidade a votar em conformidade. Posso, então, voltar para os meus colegas de trabalho e dizer não me ouvir, ver o que a comunidade Stackoverflow avalia.

Publicado 26/08/2009 em 22:40
fonte usuário
Em outras línguas...                            


1 respostas

votos
1

Eu vi três padrões:

  1. Config na aplicação. Nova compilação para cada ambiente
  2. Configs (plural) no aplicativo. construção apropriada chosed por algum controle emvironmental
  3. Configurações separar App. Configuração selecionada por algum controle ambiental.

Este artigo descreve uma forma possível de implementar abordagem 3.

Minha opinião: Opção 1 requer novas construções para cada ambiente, isso simplesmente não se encaixa o meu pensamento sobre promotaing aplicativos através de estágios de teste.

As opções 1 e 2 ambos sofrem com o problema de como alterar um item de configuração após o lançamento. A nova versão do aplicativo para alterar um nível de diagnóstico? Certamente não.

Opção 3 é um pouco mais complexa, uma detalhes feew para resolver em um ambiente em cluster. Mas eu vejo grandes benefícios. Eu ficaria muito interessado em ver os curcumstances em que as opções 1 ou 2 são considerados melhor.

Respondeu 26/08/2009 em 22:55
fonte usuário

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more