plate-forme doit être spécifique config dans le package d'application?

voix
0

A mon lieu de travail quelques personnes pensent qu'il est normal d'avoir des éléments de configuration spécifiques de la plate-forme (des choses comme les noms d'hôte dorsaux / Addrs IP, des détails de connexion DB etc) incrustée (sous forme de fichier .properties (s)) dans des emballages d'application (un Web App fichier .war). Je pense que cela est une mauvaise mauvaise chose pour les raisons suivantes:

  • il doit y avoir un emballage séparé pour chaque plate-forme cible (peut-être un laboratoire de dev, un laboratoire de modèle, la production, etc.)
  • construire en tête - créer des scripts construire généralement un ensemble de paquets d'applications cible (ils ont tous se construit en même temps sur l'hypothèse que cette version est la version finale)
  • effort de gestion (par exemple, source / contrôle de version) des éléments de configuration a besoin (en théorie, il signifie que même des mots de passe de noms d'utilisateur / systèmes clients est maintenu)
  • on ne peut pas être sûr que la version du package est correct (somme de contrôle inutile) - est la partie exécutable du paquet qui a été testé dans le laboratoire le même que celui lancés dans la production?

Une conséquence de cette approche est que (pour Java Web App), dans un environnement client, aux administrateurs de déployer le package, arrêter le serveur d'applications, copie plate-forme configs spécifiques sur le dessus de ceux qui étaient incrustées dans le paquet, et redémarrez le serveur d'applications . Douloureux.

Peut-être une meilleure approche est d'externaliser les éléments de configuration spécifiques plate-forme - ne les ont pas dans le fichier incrustée .war, et ne pas l'application les référencer dans l'arborescence des répertoires de fichiers .war élargi. Au lieu de cela, avoir des éléments de configuration dans un répertoire « .. \ conf » en dehors du répertoire de l'application. Cela a les avantages suivants:

  • un et un seul paquet d'application pour le composant exécutable de l'application
  • les frais généraux de construction plus court (par rapport à ci-dessus)
  • aucune connaissance de la plate-forme « client » configs spécifiques (userids / mots de passe)
  • auditabilité (capable de faire une somme de contrôle sur un paquet d'application, faire la même chose dans un laboratoire ou sur la plate-forme à la clientèle, et un niveau élevé de confiance que executables sont les mêmes) - « ce que nous avons testé avec est ce que vous avez »
  • déploiement est un processus beaucoup plus court - en fonction de la capacité de serveur d'applications, de vidage du fichier .war d'application dans le répertoire concerné et, si aucune modification de configuration (souvent le cas), le rebond serveur d'application.

Cette approche n'a pas besoin de l'application pour pouvoir faire référence à un fichier en dehors du répertoire de l'application. Il y a une petite considération de sécurité à ce sujet. variables d'environnement serveur App facilitent les applications pour être en mesure de localiser les fichiers en dehors de leur répertoire d'applications (ou CLASSPATH).

Suis à la recherche de la communauté de voter en conséquence. Je peux alors revenir à mon travail et collegues dire « ne pas seulement écoutez-moi, voir ce que la communauté Stackoverflow estime. »

Créé 26/08/2009 à 22:40
source utilisateur
Dans d'autres langues...                            


1 réponses

voix
1

Je l'ai vu trois modèles:

  1. Config dans l'application. Nouvelles pour chaque environnement
  2. Configs (pluriel) dans l'application. construction appropriée chosed par un certain contrôle emvironmental
  3. Configs séparés App. Config sélectionnée par un contrôle de l'environnement.

Cet article décrit une façon possible de mettre en œuvre l' approche 3.

Mon avis: Option 1 exige de nouvelles constructions pour chaque environnement, cela ne correspond tout simplement pas ma pensée sur promotaing applications par étapes de test.

Les options 1 et 2 les deux souffrent du problème de la façon de changer un élément de configuration après la sortie. Une nouvelle version de l'application pour changer un niveau de diagnostic? Sûrement pas.

L'option 3 est un peu plus complexe, un détail feew dans de repasser un environnement en cluster. Mais je vois de grands avantages. Je serais très curieux de voir les curcumstances sous les options 1 ou 2 sont meilleurs.

Créé 26/08/2009 à 22:55
source utilisateur

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