2012-11-09 3 views
3

J'ai environ 130 applications web sinatra fonctionnant sur un cluster de serveurs Apache-passagers. Toutes ces applications ont été clonées à partir d'une base de code générique, puis modifiées pour avoir leur propre clé d'authentification. La majorité des applications n'ont pas de modifications hormis la clé d'authentification. L'avantage des applications séparées est que je peux très rapidement apporter des modifications à une application spécifique sans risquer d'indisponibilité pour d'autres applications.Où stocker la configuration de nombreuses applications sinatra similaires

Cependant, ces clés d'authentification sont essentiellement des configurations. Il est à la fois gênant et intuitivement incorrect de stocker la configuration dans la base de code. Les options alternatives que j'ai explorées incluent le stockage de la configuration dans une base de données et la mise en mémoire cache dans la mémoire, les variables d'environnement apache par application et un fichier json partagé.

Y a-t-il de meilleures options? Des pièges que j'ai ratés?

Répondre

0

On dirait peut-être une variable d'environnement serait le mieux à vos besoins, qui pourraient ensuite être accessibles dans vos applications comme ceci:

$ APPNAME_AUTH_KEY="saf3t33553" ruby -e "puts ENV['APPNAME_AUTH_KEY']" 
saf3t33553 

Un fichier JSON dans un emplacement partagé, ou même un fichier rubis clair ferait aussi l'affaire. Stocker la configuration dans une base de données semble exagéré.

C'est un sujet que j'ai écrit un peu sur, si vous voulez creuser plus profond:

Ecrire des applications configurables (part 1, part 2) (voir la section « Utilisation de l'environnement Shell pour la configuration » en partie 2 en particulier)

+1

Je suis d'accord que le stockage de la configuration dans une base de données est excessif, mais l'avantage est que vous pouvez changer la configuration sans redémarrer l'application. – Erik

+0

C'est un bon point, mais il en irait de même pour l'utilisation d'un fichier de configuration. Si les applications sinatra du cluster OP partagent toutes une base de données, le fichier et la base de données ont des avantages et des inconvénients similaires, sauf que la modification des valeurs dans une base de données nécessite plus de travail que la modification d'un fichier. –

+0

À droite, ce qui signifie stocker les clés dans la configuration apache, car c'est là que vous définissez les variables d'environnement pour les applications sinatra fonctionnant sur Apache/passager. –

Questions connexes